MCP Specification · 2026-07-28 · zh-TW
傳輸機制
Transports · Overview
MCP message 如何在 stdio、Streamable HTTP 與自訂 transport 上 framing、傳遞與取消。
本頁定義 MCP transport 必須提供哪些能力、標準 transport bindings,以及定義新 transport 時應遵循的要求。
所有 transport 上的協定語意都完全相同。Transport 是一種 binding(綁定):它定義訊息如何 framing 與傳遞、request metadata 如何攜帶,以及取消與終止如何表示;它不定義訊息本身的意義。訊息模式屬於核心協定,在所有 binding 上都相同。
2026-07-28 定義兩種標準 transport:
- stdio:用戶端啟動子程序,透過標準串流傳遞以換行分隔的訊息。
- Streamable HTTP:每個訊息都是送往單一 MCP endpoint 的 HTTP POST;回覆為單一 JSON object 或限定於該 request 的 SSE stream。
用戶端與伺服器也可以實作自訂 transport。
訊息(Messages)
MCP 使用 JSON-RPC 編碼訊息。JSON-RPC 訊息 MUST(必須)使用 UTF-8 編碼。
Transport binding MUST(必須)把用戶端送出的 requests 與 notifications 傳給伺服器,並把伺服器送出的 responses 與 notifications 傳給用戶端。不存在其他訊息方向:依 2026-07-28 的訊息模式,伺服器不會主動建立 JSON-RPC request,用戶端也不會送出 JSON-RPC response。
請求中繼資料(Request metadata)
所有協定 metadata 都放在 message body 中。每個 request 都會透過 _meta.io.modelcontextprotocol/* 欄位帶上協定版本與用戶端 capabilities。
Transport binding MAY(可以)另外把 body 中選定的欄位鏡射到 envelope metadata。Streamable HTTP 就會把這些資訊鏡射到 HTTP headers,讓 load balancer、gateway 或 observability tooling 不需要解析 body 就能進行 routing 與 inspection。
但 message body 仍然是 source of truth。任何鏡射 metadata 的 binding 都必須明確定義 header 與 body 不一致時如何拒絕請求。
取消(Cancellation)
每一種 binding 都要定義用戶端如何放棄進行中的 request:
- stdio:送出
notifications/cancelled。 - Streamable HTTP:關閉該 request 的 response stream。
傳輸層的表示方式不同,但協定層的取消規則相同。
自訂傳輸機制(Custom transports)
用戶端與伺服器 MAY(可以)實作額外的自訂 transport,以符合特定需求。MCP 本身與 transport 無關,可以實作在任何支援雙向訊息交換的 communication channel 上。
實作者若支援自訂 transport,MUST(必須)保留 JSON-RPC message format、MCP message patterns,以及 per-request metadata model。自訂 transport SHOULD(應該)記錄連線建立、message framing 與 cancellation 的方式,以提升互通性。
若自訂 transport 建立在可靠的雙向 byte stream 上,例如 Unix domain socket 或 TCP,SHOULD(應該)重用 stdio 的 framing,而不是再定義一套新的格式。stdio binding 本質上就是在 byte stream 上傳遞 newline-delimited JSON-RPC;只有 process lifecycle 的部分才是標準輸入輸出特有的。
向後相容(Backward Compatibility)
較早的 MCP revision 會用 initialize handshake 建立 connection-scoped session,並允許伺服器主動建立 JSON-RPC request。需要與這些 revision 互通的用戶端與伺服器,應依「版本與相容性」頁面的 era detection 與 compatibility matrix 決定 fallback 行為。
各 transport 頁面也會另外說明它們自己的 legacy detection mechanics。