次の方法で共有


既存の MCP サーバーを公開して管理する

適用対象: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

この記事では、API Management を使用して、既存のリモート モデル コンテキスト プロトコル (MCP) サーバー ( API Management の外部でホストされているツール サーバー) を公開および管理する方法について説明します。 MCP クライアントが MCP プロトコルを使用して呼び出すことができるように、API Management を使用してサーバーのツールを公開および管理します。

たとえば、次のようなシナリオが考えられます。

  • サーバーごとの認証とレート制限を使用した API Management を使用したプロキシ LangChain または LangServe ツール サーバー。
  • Azure Logic Apps ベースのツールを IP フィルタリングと OAuth を使用して、安全にコピロットに提供する。
  • Azure Functions とオープン ソース ランタイムから Azure API Center に MCP サーバー ツールを一元化します。
  • GitHub Copilot、Claude by Anthropic、または ChatGPT を有効にして、企業全体のツールと安全に対話できます。

API Management では、マネージド REST API から API Management でネイティブに公開される MCP サーバーもサポートされています。 詳細については、「 REST API を MCP サーバーとして公開する」を参照してください。

詳細については、以下をご覧ください。

制限事項

  • 外部 MCP サーバーは、 2025-06-18 以降の MCP バージョンに準拠している必要があります。 サーバーは次をサポートできます。

  • API Management では現在、MCP サーバー ツールがサポートされていますが、MCP リソースやプロンプトはサポートされていません。

  • API Management は現在、 ワークスペースの MCP サーバー機能をサポートしていません。

[前提条件]

  • API Management インスタンスがまだない場合は、次のクイック スタートを完了します。 Azure API Management インスタンスを作成します。 インスタンスは、MCP サーバーをサポートするサービス レベルのいずれかに存在する必要があります。

  • 外部の MCP 互換サーバー (たとえば、Azure Logic Apps、Azure Functions、LangServe、またはその他のプラットフォームでホストされている) へのアクセス。

  • セキュリティで保護されたアクセスのために、MCP サーバーに対する適切な資格情報 (OAuth 2.0 クライアント資格情報や、サーバーに応じた API キーなど)。

  • API Management インスタンスのグローバル スコープ (すべての API) で Application Insights または Azure Monitor を使用して診断ログを有効にする場合は、フロントエンド応答 のログ設定のペイロードバイト数 を 0 に設定します。 この設定により、すべての API で意図しない応答本文のログ記録が防止され、MCP サーバーが適切に機能することを確認できます。 特定の API のペイロードを選択的にログに記録するには、API スコープで設定を個別に構成し、応答ログの対象を絞って制御できるようにします。

  • MCP サーバーをテストするには、 GitHub Copilot または MCP Inspector などのツールにアクセスできる Visual Studio Code を使用します。

既存の MCP サーバーを公開する

API Management で既存の MCP サーバーを公開するには、次の手順に従います。

  1. Azure portal で、API Management インスタンスに移動します。
  2. 左側のメニューの API でMCP サーバー>+ MCP サーバーの作成を選択します。
  3. [ 既存の MCP サーバーを公開する] を選択します。
  4. バックエンド MCP サーバーの場合:
    1. 既存の MCP サーバーのベース URL を入力します。 たとえば、Microsoft Learn MCP サーバーの場合、https://learn.microsoft.com/api/mcp です。
    2. トランスポートの種類では、ストリーム可能 HTTP が既定で選択されています。
  5. 新しい MCP サーバーで次の手順を実行します
    1. API Management で MCP サーバーの名前を入力 します
    2. [基本パス] に、ツールのルート プレフィックスを入力します。 たとえば、「 mytools 」のように入力します。
    3. 必要に応じて、MCP サーバーの 説明 を入力します。
  6. を選択してを作成します。

ポータルで MCP サーバーを作成するスクリーンショット。

  • MCP サーバーが作成され、リモート サーバーの操作がツールとして公開されます。
  • MCP サーバーが [ MCP サーバー ] ウィンドウに一覧表示されます。 [サーバー URL] 列には、テストまたはクライアント アプリケーション内で呼び出す MCP サーバー URL が表示されます。

ポータルの MCP サーバーの一覧のスクリーンショット。

Von Bedeutung

現在、API Management では、既存の MCP サーバーのツールは表示されません。 既存のリモート MCP サーバー上のすべてのツールを登録して構成する必要があります。

MCP サーバーのポリシーを構成する

MCP サーバーの管理に役立つ 1 つ以上の API Management ポリシー を構成します。 ポリシーは、MCP サーバー内のツールとして公開されているすべての API 操作に適用されます。 これらのポリシーを使用して、ツールのアクセス、認証、およびその他の側面を制御します。

ポリシーの構成の詳細については、以下を参照してください。

注意事項

MCP サーバー ポリシー内の context.Response.Body 変数を使用して応答本文にアクセスしないでください。 これにより、応答バッファリングがトリガーされ、MCP サーバーに必要なストリーミング動作が妨げられるため、誤動作が発生する可能性があります。

MCP サーバーのポリシーを構成するには、次の手順に従います。

  1. Azure portal で、API Management インスタンスに移動します。

  2. 左側のメニューの [API] で、[ MCP サーバー] を選択します。

  3. 一覧から MCP サーバーを選択します。

  4. 左側のメニューの MCP で、[ポリシー] を選択 します

  5. ポリシー エディターで、MCP サーバーのツールに適用するポリシーを追加または編集します。 ポリシーを XML 形式で定義します。

    たとえば、MCP サーバーのツールへの呼び出しを制限するポリシーを追加できます (この例では、MCP セッションあたり 60 秒あたり 1 回の呼び出し)。

    <!-- Rate limit tool calls by Mcp-Session-Id header -->
    <set-variable name="body" value="@(context.Request.Body.As<string>(preserveContent: true))" />
    <choose>
        <when condition="@(
            Newtonsoft.Json.Linq.JObject.Parse((string)context.Variables["body"])["method"] != null 
            && Newtonsoft.Json.Linq.JObject.Parse((string)context.Variables["body"])["method"].ToString() == "tools/call"
        )">
        <rate-limit-by-key 
            calls="1" 
            renewal-period="60" 
            counter-key="@(
                context.Request.Headers.GetValueOrDefault("Mcp-Session-Id", "unknown")
            )" />
        </when>
    </choose>
    

    MCP サーバーのポリシー エディターのスクリーンショット。

API Management は、MCP サーバー スコープでポリシーを評価する前に、グローバル (すべての API) スコープで構成されたポリシーを評価します。

MCP サーバーを検証して使用する

準拠している LLM エージェント (GitHub Copilot、セマンティック カーネル、Copilot Studio など) またはテスト クライアント ( curl など) を使用して、API Management でホストされる MCP エンドポイントを呼び出します。 要求に適切なヘッダーまたはトークンが含まれていることを確認し、MCP サーバーからのルーティングと応答が成功したことを確認します。

ヒント

MCP Inspector を使用して API Management によって管理される MCP サーバーをテストする場合は、バージョン 0.9.0 を使用します。

Visual Studio Code で MCP サーバーを追加する

Visual Studio Code では、エージェント モードで GitHub Copilot チャットを使用して MCP サーバーを追加し、ツールを使用します。 Visual Studio Code での MCP サーバーの背景については、「 VS Code での MCP サーバーの使用」を参照してください。

Visual Studio Code で MCP サーバーを追加するには:

  1. コマンド パレットから MCP: [サーバーの追加 ] コマンドを使用します。

  2. メッセージが表示されたら、サーバーの種類として HTTP (HTTP またはサーバー送信イベント) を選択します。

  3. API Management で MCP サーバーのサーバー URL を 入力します。 たとえば、MCP エンドポイントのhttps://<apim-service-name>.azure-api.net/<api-name>-mcp/mcpです。

  4. 任意の サーバー ID を 入力します。

  5. 構成をワークスペース設定またはユーザー設定に保存するかどうかを選択します。

    • ワークスペースの設定 - サーバー構成は、現在のワークスペースでのみ使用できる .vscode/mcp.json ファイルに保存されます。

    • ユーザー設定 - サーバー構成はグローバル settings.json ファイルに追加され、すべてのワークスペースで使用できます。 構成は次のようになります。

    Visual Studio Code で構成された MCP サーバーのスクリーンショット。

認証ヘッダーなどの設定のフィールドを JSON 構成に追加します。 次の例は、入力値としてヘッダーで渡される API Management サブスクリプション キーの構成を示しています。 構成形式の詳細

MCP サーバーの認証ヘッダー構成のスクリーンショット

エージェント モードでツールを使用する

Visual Studio Code で MCP サーバーを追加した後は、エージェント モードでツールを使用できます。

  1. GitHub Copilot チャットで、[ エージェント モード] を選択し、[ ツール ] ボタンを選択して使用可能なツールを表示します。

    チャットの [ツール] ボタンのスクリーンショット。

  2. チャットで使用できる MCP サーバーから 1 つ以上のツールを選択します。

    Visual Studio Code でツールを選択しているスクリーンショット。

  3. チャットでツールを呼び出すプロンプトを入力します。 たとえば、注文に関する情報を取得するツールを選択した場合は、注文についてエージェントに問い合わせることができます。

    Get information for order 2
    

    [ 続行] を選択して結果を表示します。 エージェントはツールを使用して MCP サーバーを呼び出し、チャットで結果を返します。

    Visual Studio Code のチャット結果のスクリーンショット。

トラブルシューティングと既知の問題

問題 原因 ソリューション
401 Unauthorized バックエンドからのエラー 承認ヘッダーが転送されない 必要に応じて、 set-header ポリシーを使用して手動でトークンをアタッチします
API 呼び出しは API Management で機能しますが、エージェントでは失敗します ベース URL が正しくないか、トークンが見つからない セキュリティ ポリシーとエンドポイントを再確認する
診断ログが有効になっている場合、MCP サーバー ストリーミングが失敗する ポリシーによる応答本文のログ記録または応答本文へのアクセスが MCP トランスポートに干渉する すべての API スコープで応答本文のログ記録を無効にする - 前提条件を参照