HTTPS 経由でセルフホステッド リモート サーバーとして Azure MCP サーバーをデプロイします。 Microsoft Foundry および Microsoft Copilot Studio のエージェントは、デプロイされた Azure MCP サーバーを使用して MCP ツールに安全に接続して呼び出し、Azure 操作を実行できます。 この記事では、Microsoft Foundry 接続シナリオについて説明します。
[前提条件]
- 所有者またはユーザー アクセス管理者アクセス権を持つ Azure サブスクリプション
- Azure Developer CLI (azd)
- 有効にする Azure MCP Server ツール領域 (名前空間) の一覧 ( azmcp-commands.md を参照)。 この記事の参照テンプレートでは、
storage名前空間を使用します。 - Azure Storage アカウント
- Microsoft Foundry プロジェクト
Azure MCP サーバー テンプレート
Azure MCP Server - ACA with Managed Identityazd テンプレートを使用して、Azure Storage への安全なアクセスのためのストレージ ツールとマネージド ID を使用して Azure MCP サーバーを Azure Container Apps にデプロイします。 Azure Developer CLI (azd) は、Azure リソースのプロビジョニングとデプロイを簡略化し、開発ワークフローの主要なステージにマップする簡潔なコマンド (azd deploy、 azd provision) を提供するオープン ソース ツールです。
Azure MCP サーバーをデプロイする
Azure MCP サーバーを Azure Container Apps にデプロイします。
azmcp-foundry-aca-miコマンドを使用して、azd initテンプレートを複製して初期化します。azd init -t azmcp-foundry-aca-miプロンプトが表示されたら、環境名を入力します。
azd upコマンドを使用してテンプレートを実行します。azd upazdでは、次の内容を求められます。- サブスクリプション: プロビジョニングされたリソースのサブスクリプションを選択します (以下に示します)。
- プロジェクト リソース ID: エージェント統合に使用される Microsoft Foundry プロジェクトの Azure リソース ID。
- ストレージ アカウント リソース ID: MCP サーバーがアクセスするストレージ アカウントの Azure リソース ID。
- リソース グループ: プロビジョニング リソースを格納するリソース グループを作成または選択します。
azd では、テンプレート ファイルを使用して、次のリソースと構成をプロビジョニングします。
- Azure Container App: Azure MCP サーバーを実行し、ストレージ名前空間を提供します。
-
Microsoft Entra ID ロールの割り当て: ストレージ リソース ID で指定したストレージ アカウントへの送信認証のために、Azure Container Apps マネージド ID にロールを割り当てます。
- 閲覧者: ストレージ アカウントのプロパティへの読み取り専用アクセス。
- ストレージ BLOB データ 閲覧者: BLOB データへの読み取り専用アクセス。
-
Entra アプリの登録:
Mcp.Tools.ReadWrite.Allロールを持つエージェントなどのクライアントに OAuth 2.0 認証を提供します。 テンプレートは、指定した Microsoft Foundry プロジェクトのマネージド ID にこのロールを割り当てます。 - Application Insights: テレメトリと監視を提供します。
デプロイの出力
デプロイが完了したら、
azdコマンドを使用して、azd env get-valuesプロジェクトの環境変数を取得します。azd env get-values出力例:
CONTAINER_APP_URL="https://azure-mcp-storage-server.<your-container-app-name>.eastus2.azurecontainerapps.io" ENTRA_APP_CLIENT_ID="<your-app-client-id>" ENTRA_APP_IDENTIFIER_URI="api://<your-app-client-id>" ENTRA_APP_OBJECT_ID="<your-app-object-id>" ENTRA_APP_ROLE_ID="<your-app-role-id>" ENTRA_APP_SERVICE_PRINCIPAL_ID="<your-app-service-principal-id>"次のセクションで使用する
CONTAINER_APP_URLとENTRA_APP_CLIENT_IDの値をコピーするか、ターミナルを参照用に開いたままにします。
AI Foundry エージェントから Azure MCP サーバーを使用する
デプロイ後、AI Foundry エージェントを、Azure Container Apps で実行されている Azure MCP サーバーに接続します。 エージェントは、マネージド ID を使用して認証を行い、構成された Azure Storage ツールにアクセスします。
https://ai.azure.com/nextgenで Foundry プロジェクトに移動します。
[ ビルド] → [エージェントの作成] を選択します。
[ツール] セクションで [ + 追加] を選択します。
[カスタム] タブ を 選択します。
[ モデル コンテキスト プロトコル] を選択し、[ 作成] を選択します。
MCP 接続値を構成します。
- 名前: ツールの名前を指定します。
-
リモート MCP サーバー: ツール エンドポイントの
CONTAINER_APP_URL出力のazd値を入力します。 - 認証: Microsoft Entra → Project Managed Identity を選択します。
- 種類: [プロジェクトマネージド ID] を選択します。
-
対象ユーザー:
ENTRA_APP_CLIENT_ID出力のazd値を入力します。
接続をエージェントに関連付けるには、[ 接続 ] を選択します。
エージェントがあなたをサポートする準備ができました。 質問に回答し、Azure MCP Server のツールを使用して Azure 操作を実行します。
リソースをクリーンアップする
azd downを実行して Azure リソースを削除します。
azd down
Bicep モジュールを探求する
azd テンプレートには、次の Bicep モジュールが含まれています。
- main.bicep は、すべてのリソースのデプロイを調整します。
- aca-infrastructure.bicep は、Azure MCP Server をホストするコンテナー アプリをデプロイします。
- aca-role-assignment-resource-storage.bicep は、入力ストレージ アカウントのリソース ID で指定されたストレージ アカウントのコンテナー アプリのマネージド ID に Azure Storage RBAC ロールを割り当てます。
- entra-app.bicep は、OAuth 2.0 認証用の Entra アプリ登録とカスタム アプリ ロールを作成します。
- aif-role-assignment-entraapp.bicep は、Azure MCP Server アクセス用の AI Foundry プロジェクトのマネージド ID (入力 AI Foundry リソース ID で指定) に Entra アプリ ロールを割り当てます。
- application-insights.bicep は、有効になっている場合にテレメトリと監視のために Application Insights をデプロイします。