網誌
MCP

發佈日期 更新日期

Shouryamaan 及 Anshu

甚麼是 MCP 基礎設施?為甚麼它對 AI 代理很重要?

以 Markdown 閱讀

MCP 基礎設施涵蓋公開和運作 Model Context Protocol 能力所需的一切:客戶端、傳輸、伺服器、工具、授權、政策、憑證、後端執行、狀態和遙測。MCP 伺服器只是其中一個元件,並不是完整的生產環境系統。

展示版本可以在 tools/list 和 tools/call 後結束;生產環境則必須回答調用者是誰、能存取甚麼、寫入是否可能重複,以及操作人員如何還原事件經過。

MCP 標準化了哪些內容

MCP 定義一套 JSON-RPC 協定,讓客戶端與伺服器協商能力並交換訊息。伺服器可以公開:

  • 可由模型選擇和調用的工具;
  • 可讓客戶端讀取或訂閱的資源;
  • 可由客戶端呈現給用戶或模型的可重用提示。

MCP 工具規格定義透過 tools/list 探索、透過 tools/call 調用、輸入與選用輸出結構描述、結構化內容,以及工具清單變更通知。

協定負責承載這些合約,但不會判斷工具對目前租戶是否安全、實用或已獲授權。

協定周邊的基礎設施

flowchart LR
    C[MCP client] --> T[stdio or Streamable HTTP]
    T --> S[MCP server]
    S --> A[Authentication and policy]
    A --> X[Credential and execution layer]
    X --> B[Backend APIs and data]
    S --> R[Session and operation state]
    S --> O[Logs, traces, and evaluations]
    X --> O
    B --> O

每一道邊界都有不同的工作。

客戶端與傳輸

客戶端決定向模型提供哪些伺服器能力,以及用戶如何批准調用。本機伺服器通常使用 stdio;遙距伺服器則使用 Streamable HTTP。MCP 傳輸規格也要求 HTTP 伺服器驗證 Origin 標頭,協助防止 DNS rebinding 攻擊。

傳輸安全保護連線本身,但不會授權數據庫中的數據列或雲端資源。

伺服器與工具登錄

伺服器實作 MCP 生命週期訊息,並發佈工具、資源或提示。工具登錄包含名稱、描述、結構描述和註解。除非伺服器本身可信,否則客戶端必須把工具註解視為不受信任的數據。

工具定義應對應工作,而不是內部端點名稱。MCP 工具設計指南解釋如何減少重疊選項,並傳回模型能夠有效使用的結果。

身份驗證與政策

身份驗證會識別調用者或其代表的用戶;政策則決定該身份能存取哪些工具、資源、租戶和操作。對 HTTP 傳輸而言,MCP 授權規格定義以 OAuth 為基礎的流程,其中包含受保護資源探索、授權伺服器中繼數據、資源指標、bearer token、PKCE 和 audience 驗證。

後端仍然必須繼續執行授權。閘道可以隱藏 delete_project,但底層 API 仍應拒絕未獲授權的刪除。

憑證與執行層

MCP 伺服器可能需要另一個 token 才能調用上游 API。目前的授權規格明確禁止把客戶端的 MCP 存取權杖直接轉交上游服務。伺服器應交換或取得專供該後端使用的另一份憑證。

這些憑證不能出現在工具參數或結果中。模型需要知道執行結果,並不需要取得用來完成操作的密鑰。MCP 密鑰安全指南會詳細追蹤憑證路徑。

後端、狀態與復原

後端負責業務授權、數據完整性和外部副作用。工作階段狀態可以記錄目前使用哪個伺服器連線;操作狀態則記錄特定寫入已開始、完成、失敗,或需要對應處理。

不能只用對話紀錄作為操作帳本。摘要過的工具結果不足以判斷逾時的付款或部署是否應該重複執行。

遙測與評估

一條追蹤應連接用戶請求、模型選擇、工具調用、政策決策、後端請求和最終副作用。記錄穩定的租戶、用戶、代理、工作階段、工具調用和操作 ID,並排除權杖、憑證和敏感承載數據。

評估套件應涵蓋工具選擇衝突、無效輸入、禁止存取的資源、批准路徑、重試和中斷的回應。單獨使用時正常的工具,在同時顯示二十項相似工具時仍可能失敗。

審查一條完整的工具路徑

選擇副作用範圍最大的 MCP 工具,從處理函式一直追蹤到身份、政策、憑證、後端狀態和遙測。如果任何步驟依賴提示指示或人閱讀日誌,應標記為缺少基礎設施。

下方提示會在不調用工具的情況下完成這項追蹤。