適用於:開發人員 |基本 |基本 v2 |標準 |標準 v2 |Premium |進階 v2
在 API 管理中,你可以利用其內建的 AI 閘道器,將 REST API 作為遠端模型情境協定(MCP)伺服器公開。 將一個或多個 API 操作暴露為工具,讓 MCP 用戶端可透過 MCP 協定呼叫。
Azure API 管理也支援與現有 MCP 相容伺服器的安全整合 - 託管於 API 管理外部的工具伺服器。 如需詳細資訊,請參閱公開現有的 MCP 伺服器。
深入瞭解:
局限性
- API Management 目前支援 MCP 伺服器工具,但不支援 MCP 資源或提示。
- API Management 目前不支援 工作區中的 MCP 伺服器功能。
先決條件
如果您沒有 API 管理執行個體,請完成下列快速入門:建立 Azure API 管理執行個體。 實例必須位於支援 MCP 伺服器的服務層級之一。
確保你的系統實例管理一個與 HTTP 相容的 API(任何匯入為 REST API 的 API,包括從 Azure 資源匯入的 API),並將其作為 MCP 伺服器加以公開。 若要匯入範例 API,請參閱 匯入併發佈您的第一個 API。
備註
API 管理中與 HTTP 不相容的其他 API 類型無法公開為 MCP 伺服器。
如果您在 API Management 服務實例的全域範圍內啟用 Application Insights 或 Azure Monitor 的診斷記錄,請將前端回應的 記錄載荷位元組數 設定為 0。 此設定可防止跨所有 API 的回應內容被意外記錄,並有助於確保 MCP 伺服器的正常運作。 若要選擇性地針對特定 API 記錄承載,請在 API 範圍個別設定設定,以允許目標控制回應記錄。
要測試 MCP 伺服器,你可以使用 Visual Studio Code,並使用 GitHub Copilot 或 MCP Inspector 等工具。
將 API 公開為 MCP 伺服器
請遵循下列步驟,將 API 管理中的受控 REST API 公開為 MCP 伺服器:
- 在 Azure 入口網站中,移至您的 API 管理 實例。
- 在左側功能表中的 [API] 下方,選取 [MCP 伺服器]>[+ 建立 MCP 伺服器]。
- 選取 [將 API 公開為 MCP 伺服器]。
- 在 [後端 MCP 伺服器] 中:
- 選取要公開為 MCP 伺服器的受控 [API]。
- 選取一或多個要公開為工具的 [API 作業]。 您可以選取所有作業,或只選取特定作業。
備註
您可以在 MCP 伺服器的 [工具] 窗格中更新公開為工具的作業。
- 在 [新 MCP 伺服器]中:
- 在 API 管理中輸入 MCP 伺服器的 [名稱]。
- 或者,輸入 MCP 伺服器的 [描述]。
- 選取 ,創建。
- 隨即會建立 MCP 伺服器,並將 API 作業公開為工具。
- MCP 伺服器會列在 [MCP 伺服器] 窗格中。 [伺服器 URL] 資料行會顯示要呼叫的 MCP 伺服器端點,以進行測試或在用戶端應用程式內使用。
設定 MCP 伺服器的原則
設定一或多個 API 管理 原則 ,以協助管理 MCP 伺服器。 這些政策適用於所有在 MCP 伺服器中以工具形式公開的 API 操作。 利用這些政策來控制存取、認證及工具的其他面向。
深入了解設定原則:
謹慎
不要用 context.Response.Body MCP 伺服器政策中的變數來存取回應主體。 這樣做會觸發回應緩衝,會干擾 MCP 伺服器所需的串流行為,並可能導致故障。
要設定 MCP 伺服器的政策,請依照以下步驟操作:
在 Azure 入口網站中,移至您的 API 管理 實例。
在左側功能表中的 [API] 下方,選取 [MCP 伺服器]。
在清單中選取 MCP 伺服器。
在左側功能表中的 MCP底下,選取 [ 原則]。
在原則編輯器中,新增或編輯您想要套用至 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>
備註
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 伺服器:
使用 MCP: 從命令選擇區新增伺服器命令。
出現提示時,請選取伺服器類型:HTTP(HTTP 或伺服器傳送的事件)。
在 API 管理中輸入 MCP 伺服器的 [伺服器 URL]。 例如,
https://<apim-service-name>.azure-api.net/<api-name>-mcp/mcp針對 MCP 端點。輸入您選擇的 [伺服器識別碼]。
選取是否要將組態儲存至 工作區設定 或 用戶設定。
工作區設定 - 伺服器組態會儲存至一個只能在目前工作區中取得的
.vscode/mcp.json檔案。用戶設定 - 伺服器組態會新增至您的全域
settings.json檔案,而且可在所有工作區中使用。 組態看起來如下所示:
將欄位新增至 JSON 組態,以用於驗證標頭等設定。 下列範例顯示 API 管理訂用帳戶金鑰的設定,該密鑰在標頭中以輸入值的形式傳遞。 深入瞭解 組態格式
在代理程式模式中使用工具
在 Visual Studio Code 中新增 MCP 伺服器後,您可以在 Agent 模式中使用工具。
在 GitHub Copilot 聊天中,選取 [代理程式 模式],然後選取 [ 工具 ] 按鈕以查看可用的工具。
從 MCP 伺服器中選取一或多個工具,使其能在聊天中使用。
在聊天中輸入提示以叫用此工具。 例如,如果您選擇一個工具來獲取訂單的相關資訊,您可以詢問客服代表關於訂單的資訊。
Get information for order 2選取 [繼續] 以查看結果。 代理程式會使用 工具來呼叫 MCP 伺服器,並在聊天中傳回結果。
疑難解答和已知問題
| 問題 | 原因 | 解決方案 |
|---|---|---|
401 Unauthorized來自後端的錯誤 |
未轉寄授權標頭 | 如有需要,請使用 set-header 策略手動綁定代幣 |
| API 呼叫可在 API 管理中執行,但無法在代理程式中執行 | 不正確的基礎 URL 或遺漏權杖 | 雙重檢查安全性原則和端點 |
| 啟用診斷記錄時,MCP 伺服器串流失敗 | 透過原則記錄回應本文或存取回應本文會干擾 MCP 傳輸 | 停用所有 API 範圍的回應本文記錄 - 請參閱必要條件 |