次の方法で共有


API Management で MCP サーバーとして REST API を公開する

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

API Management では、API Management で管理されている REST API を、組み込みの AI ゲートウェイを使用してリモート モデル コンテキスト プロトコル (MCP) サーバーとして公開できます。 MCP クライアントが MCP プロトコルを使用して呼び出すことができるツールとして、1 つ以上の API 操作を公開します。

Von Bedeutung

  • この機能はプレビュー段階であり、いくつかの 制限があります
  • MCP サーバー機能にアクセスするための 前提条件 を確認します。

Azure API Management では、既存の MCP 互換サーバー (API Management の外部でホストされているツール サーバー) との安全な統合もサポートされています。 詳細については、「 既存の MCP サーバーを公開する」を参照してください。

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

制限事項

このプレビューには、次の制限事項が適用されます。 プレビュー機能は変更される可能性があるため、更新プログラムを確認してください。

  • API Management は MCP サーバー ツールをサポートしますが、MCP リソースやプロンプトはサポートしていません。
  • MCP サーバー機能は、API Management ワークスペースではサポートされていません。

[前提条件]

  • API Management インスタンスがまだない場合は、次のクイック スタートを完了します。 Azure API Management インスタンスを作成します

    • プレビューでは、クラシック Basic、Standard、Premium、Basic v2、Standard v2、Premium v2 の各サービス レベルがサポートされています。
    • 従来の Basic、Standard、または Premium レベルでは、 AI Gateway 早期更新グループ に参加して MCP サーバー機能にアクセスする必要があります。 更新プログラムを適用するには、最大 2 時間を許可します。
  • MCP サーバーとして公開する HTTP 互換 API (Azure リソースからインポートされた API を含む REST API としてインポートされたすべての API) をインスタンスが管理していることを確認します。 サンプル API をインポートするには、 最初の API のインポートと発行に関するページを参照してください

    HTTP 互換ではない API Management の他の API の種類は、MCP サーバーとして公開できません。

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

  • MCP サーバーをテストするには、 GitHub Copilot にアクセスできる Visual Studio Code を使用できます。

MCP サーバーとして API を公開する

API Management でマネージド REST API を MCP サーバーとして公開するには、次の手順に従います。

  1. Azure portal で、API Management インスタンスに移動します。
  2. 左側のメニューの [API] で、[ MCP サーバー>+ MCP サーバーの作成] を選択します。
  3. [ API を MCP サーバーとして公開する] を選択します
  4. バックエンド MCP サーバーの場合:
    1. MCP サーバーとして公開するマネージド API を選択します。
    2. ツールとして公開する 1 つ以上の API 操作 を選択します。 すべての操作を選択することも、特定の操作のみを選択することもできます。

      ツールとして公開されている操作は、後で MCP サーバーの [ツール ] ブレードで更新できます。

  5. 新しい MCP サーバーで次の手順を実行します
    1. API Management で MCP サーバーの名前を入力 します
    2. 必要に応じて、MCP サーバーの 説明 を入力します。
  6. を選択してを作成します。

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

  • MCP サーバーが作成され、API 操作がツールとして公開されます。
  • MCP サーバーが [ MCP サーバー ] ブレードに一覧表示されます。 [サーバー URL] 列には、テストまたはクライアント アプリケーション内で呼び出す 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 サーバーのツールへの呼び出しを制限するポリシーを追加できます (この例では、クライアント IP アドレスあたり 30 秒あたり 5 回の呼び出し)。

    <rate-limit-by-key calls="5" renewal-period="30" counter-key="@(context.Request.IpAddress)" remaining-calls-variable-name="remainingCallsPerIP" />
    

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

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 を 入力します。 例: https://<apim-service-name>.azure-api.net/<api-name>-mcp/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 スコープで応答本文のログ記録を無効にする - 前提条件を参照