共用方式為


公開和治理現有 MCP 伺服器

適用於:開發人員 |基本 |基本 v2 |標準 |標準 v2 |Premium |進階 v2

本文說明如何使用 API 管理來公開和治理現有遠端模型上下文協定 (MCP) 伺服器 - 託管於 API 管理外部的工具伺服器。 透過 API 管理來公開並管理伺服器工具,讓 MCP 用戶端能使用 MCP 協定呼叫它們。

範例案例包括:

  • 透過 API 管理代理 LangChainLangServe 工具伺服器,並對每個伺服器設定驗證與速率限制。
  • 透過 IP 過濾與 OAuth 安全地將基於 Azure Logic Apps 的工具暴露給副駕駛。
  • 將來自 Azure Functions 和開放原始碼執行階段的 MCP 伺服器工具集中到 Azure API 中心
  • 啟用 GitHub Copilot、Anthropic 的 Claude 或 ChatGPT,安全地與企業內的各種工具互動。

API 管理也支援來自受控 REST API 的 API 管理中原生公開的 MCP 伺服器。 如需詳細資訊,請參閱將 REST API 公開為 MCP 伺服器

深入瞭解:

局限性

先決條件

  • 如果您沒有 API 管理執行個體,請完成下列快速入門:建立 Azure API 管理執行個體。 實例必須位於支援 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 伺服器,請使用 Visual Studio Code,並取得 GitHub Copilot 或 MCP Inspector 等工具。

公開現有的 MCP 伺服器

請依照以下步驟在 API 管理中暴露現有的 MCP 伺服器:

  1. Azure 入口網站中,移至您的 API 管理 實例。
  2. 在左側功能表中的 [API] 下方,選取 [MCP 伺服器]>[+ 建立 MCP 伺服器]
  3. 選取 [公開現有的 MCP 伺服器]
  4. 在 [後端 MCP 伺服器] 中:
    1. 輸入現有 [MCP 伺服器基礎 URL]。 例如, https://learn.microsoft.com/api/mcp 針對 Microsoft Learn MCP 伺服器。
    2. 傳輸類型中,預設選擇 可串流 HTTP
  5. 在 [新 MCP 伺服器]中:
    1. 在 API Management 中輸入 MCP 伺服器 的名稱
    2. 在 [基礎路徑] 中,輸入工具的路由前置詞。 例如: mytools
    3. 或者,輸入 MCP 伺服器的 [描述]
  6. 選取 ,創建

在入口網站中建立 MCP 伺服器的螢幕擷取畫面。

  • 隨即會建立 MCP 伺服器,並將遠端伺服器作業公開為工具。
  • MCP 伺服器會列在 [MCP 伺服器 ] 窗格中。 [伺服器 URL] 資料行會顯示要呼叫的 MCP 伺服器 URL,以進行測試或在用戶端應用程式內使用。

入口網站中 MCP 伺服器清單的螢幕擷取畫面。

這很重要

目前,API 管理不會顯示來自現有 MCP 伺服器的工具。 您必須在現有的遠端 MCP 伺服器上註冊並設定所有工具。

設定 MCP 伺服器的原則

設定一或多個 API 管理 原則 ,以協助管理 MCP 伺服器。 這些政策適用於所有在 MCP 伺服器中以工具形式公開的 API 操作。 利用這些政策來控制存取、認證及工具的其他面向。

深入了解設定原則:

謹慎

不要用 context.Response.Body MCP 伺服器政策中的變數來存取回應主體。 這樣做會觸發回應緩衝,會干擾 MCP 伺服器所需的串流行為,並可能導致故障。

要設定 MCP 伺服器的政策,請依照以下步驟操作:

  1. Azure 入口網站中,移至您的 API 管理 實例。

  2. 在左側功能表中的 [API] 下方,選取 [MCP 伺服器]

  3. 在清單中選取 MCP 伺服器。

  4. 在左側功能表中的 MCP底下,選取 [ 原則]。

  5. 在原則編輯器中,新增或編輯您想要套用至 MCP 伺服器工具的原則。 請以 XML 格式定義政策。

    例如,你可以新增策略限制對 MCP 伺服器工具的呼叫次數(此例中為每個 MCP 會話每 60 秒呼叫一次)。

    <!-- 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 管理會先評估在全域(所有 API)範圍內設定的政策,再評估 MCP 伺服器範圍內的政策。

驗證及使用 MCP 伺服器

使用相容的 LLM 代理程式 (例如 GitHub Copilot、Semantic Kernel 或 Copilot Studio) 或測試用戶端 (例如 curl) 來呼叫 API 管理託管的 MCP 端點。 請確定要求包含適當的標頭或權杖,並確認 MCP 伺服器已成功路由並回應。。

小提示

如果你使用 MCP Inspector 來測試由 API Management 管理的 MCP 伺服器,請使用 0.9.0 版本。

在 Visual Studio Code 中新增 MCP 伺服器

在 Visual Studio Code 中,使用 Agent 模式中的 GitHub Copilot 聊天,以新增 MCP 伺服器並使用工具。 如需 Visual Studio Code 中 MCP 伺服器的背景,請參閱在 VS Code 中使用 MCP 伺服器

若要在 Visual Studio Code 中新增 MCP 伺服器:

  1. 使用 MCP: 從命令選擇區新增伺服器命令。

  2. 出現提示時,請選取伺服器類型:HTTP(HTTP 或伺服器傳送的事件)。

  3. 在 API 管理中輸入 MCP 伺服器的 [伺服器 URL]。 例如, https://<apim-service-name>.azure-api.net/<api-name>-mcp/mcp 針對 MCP 端點。

  4. 輸入您選擇的 [伺服器識別碼]

  5. 選取是否要將組態儲存至 工作區設定用戶設定

    • 工作區設定 - 伺服器組態會儲存至一個只能在目前工作區中取得的 .vscode/mcp.json 檔案。

    • 用戶設定 - 伺服器組態會新增至您的全域 settings.json 檔案,而且可在所有工作區中使用。 組態看起來如下所示:

    Visual Studio Code 中所設定 MCP 伺服器的螢幕快照。

將欄位新增至 JSON 組態,以用於驗證標頭等設定。 下列範例顯示 API 管理訂用帳戶金鑰的設定,該密鑰在標頭中以輸入值的形式傳遞。 深入瞭解 組態格式

MCP 伺服器的驗證標頭設定螢幕快照

在代理程式模式中使用工具

在 Visual Studio Code 中新增 MCP 伺服器後,您可以在 Agent 模式中使用工具。

  1. 在 GitHub Copilot 聊天中,選取 [代理程式 模式],然後選取 [ 工具 ] 按鈕以查看可用的工具。

    聊天中 [工具] 按鈕的螢幕快照。

  2. 從 MCP 伺服器中選取一或多個工具,使其能在聊天中使用。

    在 Visual Studio Code 中選取工具的螢幕快照。

  3. 在聊天中輸入提示以叫用此工具。 例如,如果您選擇一個工具來獲取訂單的相關資訊,您可以詢問客服代表關於訂單的資訊。

    Get information for order 2
    

    選取 [繼續] 以查看結果。 代理程式會使用 工具來呼叫 MCP 伺服器,並在聊天中傳回結果。

    Visual Studio Code 中聊天結果的螢幕快照。

疑難解答和已知問題

問題 原因 解決方案
401 Unauthorized來自後端的錯誤 未轉寄授權標頭 如有需要,請使用 set-header 策略手動綁定代幣
API 呼叫可在 API 管理中執行,但無法在代理程式中執行 不正確的基礎 URL 或遺漏權杖 雙重檢查安全性原則和端點
啟用診斷記錄時,MCP 伺服器串流失敗 透過原則記錄回應本文或存取回應本文會干擾 MCP 傳輸 停用所有 API 範圍的回應本文記錄 - 請參閱必要條件