>_toolkitbox

~/ / AI 文章 / MCP 規範 2026-07-28:有哪些變更,以及該檢查自己的哪些檔案

MCP 規範 2026-07-28:有哪些變更,以及該檢查自己的哪些檔案

Model Context Protocol(MCP)規範 2026-07-28 版移除了協定層級的工作階段,棄用較舊的 HTTP+SSE 傳輸與數項功能,並放寬工具 schema 的規則。本文整理官方變更記錄,並說明如何檢查你自己撰寫的兩種檔案:MCP 設定與工具 schema。

發布: · 已於 2026-10-24 對照官方規範確認。本文為其整理摘要,並非取代官方規範。

最主要的變更

  • Streamable HTTP 傳輸移除了協定層級的工作階段與 Mcp-Session-Id 標頭。需要跨呼叫保留狀態的伺服器,改用自行建立、並以一般工具引數傳遞的明確控制代碼。
  • MCP 改為無狀態:移除 initialize 交握。每個請求都會在 _meta 中帶上協定版本與用戶端的功能,版本不符時會回傳 UnsupportedProtocolVersionError。
  • 伺服器必須實作新的 server/discover 呼叫,用來公告其支援的協定版本、功能與身分。
  • HTTP GET 端點與 resources/subscribe 由 subscriptions/listen 取代,這是一條長時間維持的回應串流,用來傳送用戶端選擇訂閱的變更通知。
  • roots/list、sampling/createMessage 與 elicitation/create 等由伺服器發起的請求,改以 Multi Round-Trip Requests 模式取代:伺服器回傳一個要求輸入的結果,用戶端再帶著答案重試原本的請求。
  • 實驗性的任務(tasks)從核心協定移到官方擴充功能。
  • 可續傳的 SSE 串流(Last-Event-ID)已移除。回應串流中斷時,處理中的請求會遺失,用戶端必須以新請求重新送出。

目前已棄用的項目

功能棄用於最早移除時間建議的遷移方式
Roots2026-07-282027-07-28 當日或之後發布的第一個修訂版透過工具參數、資源 URI 或伺服器設定來傳遞目錄或檔案
Sampling2026-07-282027-07-28 當日或之後發布的第一個修訂版直接整合 LLM 供應商的 API
Logging2026-07-282027-07-28 當日或之後發布的第一個修訂版stdio 請記錄到 stderr,或使用 OpenTelemetry
Dynamic Client Registration2026-07-282027-07-28 當日或之後發布的第一個修訂版Client ID Metadata Documents
HTTP+SSE 傳輸2025-03-26SEP-2596 進入 Final 三個月後Streamable HTTP
includeContext 的值 thisServer 與 allServers2025-11-25隨 Sampling 一併處理省略此欄位,或使用 none

被棄用的功能仍屬於規範的一部分。最早移除時間表示它從何時起符合被移除的條件,實際是否移除,則在準備發布版本時決定。新的功能生命週期政策訂定了至少十二個月的棄用期間。

檢查你的 MCP 設定

如果你的設定仍使用 HTTP+SSE 傳輸,就屬於已棄用的項目。Claude Code 的文件也將其 sse 類型標示為已棄用,並說明在可行時應改用 HTTP 伺服器。規範描述的替代方案是 Streamable HTTP:伺服器提供一個接受 POST 的單一端點,用戶端把每則 JSON-RPC 訊息各自以一次 HTTP POST 送出。

  • 每個 POST 都必須包含 Accept 標頭,且同時列出 application/json 與 text/event-stream。
  • 每個 POST 都必須包含 MCP-Protocol-Version 標頭,其值須與請求本文中的協定版本一致。
  • 請求帶有 Mcp-Method 標頭;tools/call、resources/read 與 prompts/get 另外帶有 Mcp-Name 標頭。
  • 伺服器對每個請求,以單一 JSON 物件回應,或以僅限於該請求的 SSE 串流回應。

你的用戶端支援哪一版協定,請查閱用戶端的文件。下方的檢查工具會讀取 .mcp.json 或 claude_desktop_config.json,並回報遠端伺服器沒有 type、或仍使用 sse 等項目。

立即試用: MCP Config Checker

規則已於 2026-10-23 對照文件核對。

文件: Claude Code / Model Context Protocol / VS Code

未檢查:command 是否存在、套件是否能安裝、遠端伺服器是否有回應,以及其他應用程式讀取方式不同的設定。

所有處理都在你的瀏覽器中執行,設定不會被上傳。

工具 schema 可使用完整的 JSON Schema 2020-12

  • inputSchema 與 outputSchema 現在允許任何 JSON Schema 2020-12 關鍵字,structuredContent 也可以是任何 JSON 值。規範新增了解析 $ref 的要求,以及組合關鍵字可使用的資源上限。
  • 伺服器可以用 x-mcp-header 標記工具參數,使其值被複製到 Mcp-Param-{name} HTTP 標頭中。被標記的參數必須是字串、整數或布林值,不可以是一般數字(number)。
  • 被標記的屬性必須能僅透過 properties 鍵,從 schema 根節點到達。這條路徑不得經過 items、oneOf、anyOf、allOf、not、if/then/else 或 $ref。
  • 使用 Streamable HTTP 的用戶端,必須拒絕其 x-mcp-header 註記違反上述規則的工具定義,也就是該工具會被排除在 tools/list 的結果之外。

若要測試工具 schema,請把它連同一組範例引數貼到下方的驗證工具。它會檢查 Draft 2020-12 的常用關鍵字,並告訴你哪些關鍵字不在檢查範圍內。

立即試用: JSON Schema Validator

對於所支援的關鍵字,遵循 JSON Schema Draft 2020-12。$ref 只會讀取同一份 schema 內的目標。

所有處理都在你的瀏覽器中執行。schema 與資料都不會被上傳。

伺服器的安全性要點

  • 伺服器必須驗證所有傳入連線的 Origin 標頭,以防範 DNS rebinding 攻擊。若該標頭存在但無效,必須以 HTTP 403 Forbidden 回應。
  • 在本機執行的伺服器應只綁定 localhost(127.0.0.1),而不是所有網路介面(0.0.0.0)。
  • 伺服器應對所有連線實作適當的身分驗證。
  • 處理請求本文的伺服器,必須拒絕標頭與本文不符的請求,並回應 HTTP 400 與 JSON-RPC 錯誤 HeaderMismatch(代碼 -32020)。
  • 授權伺服器應在授權回應中包含 iss 參數(RFC 9207);當 iss 存在時,用戶端必須先驗證它,才能兌換授權碼。
  • 用戶端必須以授予憑證的簽發者(issuer)作為所儲存用戶端憑證的索引鍵,且不得將其用於不同的授權伺服器。

資料來源