~/ / 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)已移除。回應串流中斷時,處理中的請求會遺失,用戶端必須以新請求重新送出。
目前已棄用的項目
| 功能 | 棄用於 | 最早移除時間 | 建議的遷移方式 |
|---|---|---|---|
| Roots | 2026-07-28 | 2027-07-28 當日或之後發布的第一個修訂版 | 透過工具參數、資源 URI 或伺服器設定來傳遞目錄或檔案 |
| Sampling | 2026-07-28 | 2027-07-28 當日或之後發布的第一個修訂版 | 直接整合 LLM 供應商的 API |
| Logging | 2026-07-28 | 2027-07-28 當日或之後發布的第一個修訂版 | stdio 請記錄到 stderr,或使用 OpenTelemetry |
| Dynamic Client Registration | 2026-07-28 | 2027-07-28 當日或之後發布的第一個修訂版 | Client ID Metadata Documents |
| HTTP+SSE 傳輸 | 2025-03-26 | SEP-2596 進入 Final 三個月後 | Streamable HTTP |
| includeContext 的值 thisServer 與 allServers | 2025-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)作為所儲存用戶端憑證的索引鍵,且不得將其用於不同的授權伺服器。