次の方法で共有


セルフホステッド リモート Azure MCP サーバーをデプロイし、Microsoft Foundry を使用して接続する

HTTPS 経由でセルフホステッド リモート サーバーとして Azure MCP サーバーをデプロイします。 Microsoft Foundry および Microsoft Copilot Studio のエージェントは、デプロイされた Azure MCP サーバーを使用して MCP ツールに安全に接続して呼び出し、Azure 操作を実行できます。 この記事では、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 deployazd provision) を提供するオープン ソース ツールです。

Azure MCP サーバーをデプロイする

Azure MCP サーバーを Azure Container Apps にデプロイします。

  1. azmcp-foundry-aca-mi コマンドを使用して、azd init テンプレートを複製して初期化します。

    azd init -t azmcp-foundry-aca-mi
    

    プロンプトが表示されたら、環境名を入力します。

  2. azd up コマンドを使用してテンプレートを実行します。

    azd up
    

    azd では、次の内容を求められます。

    • サブスクリプション: プロビジョニングされたリソースのサブスクリプションを選択します (以下に示します)。
    • プロジェクト リソース 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: テレメトリと監視を提供します。

デプロイの出力

  1. デプロイが完了したら、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>"
    
  2. 次のセクションで使用する CONTAINER_APP_URLENTRA_APP_CLIENT_ID の値をコピーするか、ターミナルを参照用に開いたままにします。

AI Foundry エージェントから Azure MCP サーバーを使用する

デプロイ後、AI Foundry エージェントを、Azure Container Apps で実行されている Azure MCP サーバーに接続します。 エージェントは、マネージド ID を使用して認証を行い、構成された Azure Storage ツールにアクセスします。

  1. https://ai.azure.com/nextgenで Foundry プロジェクトに移動します。

  2. [ ビルド] → [エージェントの作成] を選択します。

  3. [ツール] セクションで [ + 追加] を選択します。

  4. [カスタム] タブ 選択します。

  5. [ モデル コンテキスト プロトコル] を選択し、[ 作成] を選択します。

    MCP 接続を作成するためにモデル コンテキスト プロトコルが選択されている [エージェントの作成] ページのスクリーンショット。

    MCP 接続を構成するためのリモート MCP サーバー エンドポイント、認証、対象ユーザー、接続ボタンのフィールドを含む接続フォームのスクリーンショット。

  6. 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 をデプロイします。