Skip to content

MCP Specification · 2026-07-28 · zh-TW

架構

Architecture

MCP 的 Host、Client、Server 架構、設計原則與能力協商模型。

Model Context Protocol(MCP)採用「用戶端—主機—伺服器」架構,每個主機應用程式可以執行多個用戶端實例。MCP 是一套無狀態協定:每個請求都是自包含的,並攜帶自己的協定版本與能力資訊。這種架構讓使用者能在不同應用程式中整合 AI 能力,同時維持清楚的安全邊界與責任分離。

MCP 建構於 JSON-RPC 之上,提供一套專注於用戶端與伺服器之間的上下文交換與取樣協調的協定。

核心元件

主機應用程式(Host)

主機程序扮演容器與協調者:

  • 建立並管理多個用戶端實例
  • 控制用戶端的連線權限與生命週期
  • 強制執行安全政策與同意要求
  • 處理使用者授權決策
  • 協調 AI/LLM 整合與取樣
  • 管理跨用戶端的上下文彙整

用戶端(Clients)

每個用戶端都由主機建立,並且只與一個伺服器通訊:

  • 只與一個伺服器通訊
  • 在每個請求中附上協定版本與能力資訊
  • 雙向路由協定訊息
  • 管理訂閱與通知
  • 維持不同伺服器之間的安全邊界

一個主機應用程式會建立並管理多個用戶端,而每個用戶端都與特定伺服器維持一對一關係。

伺服器(Servers)

伺服器提供專門化的上下文與能力:

  • 透過 MCP 的基本元素暴露資源(Resources)、工具(Tools)與提示詞(Prompts)
  • 各自獨立運作,並聚焦於明確的職責
  • 可在回覆中透過 InputRequiredResult 要求用戶端提供輸入,例如取樣(Sampling)、資訊徵詢(Elicitation)或 Roots
  • 必須遵守安全限制
  • 可以是本機程序,也可以是遠端服務

設計原則

MCP 的架構與實作受到下列幾項核心設計原則所引導:

  1. 伺服器應該非常容易建置
    • 複雜的協調工作由主機應用程式處理
    • 伺服器專注於特定且定義清楚的能力
    • 簡單的介面可降低實作成本
    • 清楚的職責分離有助於維護程式碼
  2. 伺服器應具有高度可組合性
    • 每個伺服器獨立提供聚焦的功能
    • 多個伺服器可以無縫組合
    • 共用協定帶來互通性
    • 模組化設計支援擴充
  3. 伺服器不應讀取完整對話,也不應「看見」其他伺服器內部的資訊
    • 伺服器只接收必要的上下文資訊
    • 完整對話歷程保留在主機端
    • 每個伺服器彼此隔離
    • 跨伺服器互動由主機控制
    • 主機程序負責強制執行安全邊界
  4. 伺服器與用戶端可以逐步加入功能
    • 核心協定只提供最低限度的必要功能
    • 額外能力可依需要進行協商
    • 伺服器與用戶端可以各自獨立演進
    • 協定在設計上保留未來擴充空間
    • 維持向後相容性

能力協商

Model Context Protocol 使用以能力為基礎的協商機制,而且能力的作用域以每個請求為準。用戶端會在每個請求的 _meta.io.modelcontextprotocol/clientCapabilities 中帶入自身能力;伺服器則會在 server/discover 的回應中宣告能力。若用戶端希望在送出其他請求前先取得伺服器支援的能力,可以先呼叫 server/discover

  • 伺服器宣告例如工具支援、資源訂閱與提示詞範本等能力
  • 用戶端宣告例如取樣支援與資訊徵詢處理等能力
  • 雙方在互動過程中都必須尊重已宣告的能力
  • 其他能力可以透過協定擴充機制進一步協商

每項能力都會以「每個請求」為範圍啟用特定的協定功能。例如:

  • 已實作的伺服器功能必須反映在伺服器宣告的 capabilities 中
  • 若要接收資源更新通知,需要透過 subscriptions/listen 開啟串流,並指定所需的資源 URI
  • 呼叫工具前,伺服器必須宣告工具相關能力

這套能力協商機制讓用戶端與伺服器能清楚理解彼此支援的功能,同時保留協定的可擴充性。