MCP 2026 拆走 session:企業部署少兩層麻煩,舊 client 要逐步搬
Tech News

MCP 2026 拆走 session:企業部署少兩層麻煩,舊 client 要逐步搬

圖片:via Ars Technica — https://arstechnica.com/ai/2026/07/with-a-stateless-makeover-new-mcp-spec-targets-enterprise-scale/
TechLab 編輯部(譯)·

initialize 退場,狀態改用明示 handle 跟住每次請求走

MCP 2026-07-28 正式規格喺 7 月 28 日推出,今次改動大過一般加功能:protocol core 直接變成 stateless。對運作 remote MCP server 嘅團隊,最實際係唔使再將每個 client 綁死喺同一部 server,亦唔使額外起共享 session store。Ars Technica 將呢點形容成拆走企業採用嘅主要障礙;講準確啲,佢處理咗橫向擴展嗰堆麻煩,但權限、審計、資料隔離同工具可靠度依然要自己做好。

initialize 同 session ID 一齊退場

舊版 Streamable HTTP 要先跑 initializeinitialized handshake,server 發出 Mcp-Session-Id,之後每個 request 都要帶返同一個 ID。新版改成每次 request 都喺 _meta 帶 protocol version 同 client capabilities,server 亦要實作 server/discover,畀 client 預先查版本同能力。每個 request 都係自足,任何 server instance 收到都可以處理,client 唔再暗中依賴上一個 request 去咗邊部機。

MCP 2026 拆走 session:企業部署少兩層麻煩,舊 client 要逐步搬

圖片:Wikimedia Commons — DAHAOI Taoh MINGWHUA(CC0)

Load balancer 終於唔使識 MCP 內情

部署層面先係今次最值錢嗰部分。Remote MCP server 可以擺喺普通 round-robin load balancer 後面,唔使 sticky routing,protocol 層亦唔使共享 session store。HTTP request 新增 Mcp-MethodMcp-Name header,gateway 做 routing、限流同觀察流量時,唔使拆 JSON-RPC body。tools/listresources/list 等結果亦有 ttlMscacheScope,client 知道可以 cache 幾耐;OpenTelemetry trace context 就放入 _meta,跨 agent、MCP server 同下游 API 嘅追蹤清楚咗好多。

Stateless 唔代表業務本身冇狀態。購物籃、browser、自動化任務呢類跨 request 資料,要由 tool 回傳明示 handle,例如 basket_id,下一次 call 再當普通參數傳返去。呢種做法方便多 instance 接手,亦令 model 睇得見狀態關係,不過開發者要自行處理 handle 權限、到期、撤銷同租戶隔離。MCP 唔再代你收埋狀態,開發者仍然要自己處理相關權限同生命週期。

Agent 要追問,改用 input_required

舊版 server 可以喺處理途中主動向 client 發 elicitation、sampling 或 roots request,新版就改用 Multi Round-Trip Requests。Server 回傳 input_required、要問嘅內容同 requestState,client 收集答案後重送原本 request;第二輪可以落去另一部 instance。requestState 會經 client 手再傳返嚟,所以要當成唔可信輸入,用 HMAC 或 AEAD 保護完整性,最好綁埋登入身分、原本 method、參數同到期時間,唔好將 server 內部狀態裸放入去。

Breaking changes 唔止連線方式

實驗中嘅 Tasks 已搬出 core,變成 io.modelcontextprotocol/tasks extension;新版用 task handle 配合 tasks/gettasks/updatetasks/cancel,亦刪走難以按 session 安全劃分嘅 tasks/list。獨立 HTTP GET stream、SSE resumability、pinglogging/setLevel 同舊 resource subscription 路徑都有改動;變更通知改行 subscriptions/listen。Roots、Sampling、Logging 暫時仲用得,不過已標成 deprecated,新 server 唔宜再靠佢哋設計核心功能。

OAuth/OIDC 亦執緊啲容易出事嘅邊位:client 要核對授權回應入面已有嘅 iss,儲存 credential 時要按 issuer 分開,授權 server 一轉就重新註冊;Dynamic Client Registration 亦要填啱 application_type,免得 CLI 或 desktop client 俾當成 web app,localhost redirect URI 跟住出錯。呢啲強化唔會因為連線變 stateless 就自動生效,現有 auth code 同 token storage 都要逐項檢查。

遷移期間要兼容新舊版本

實務上先盤點 session ID、server 主動 request、SSE 重連、Tasks 同寫死 error code 嘅位置,再將應用狀態搬去明示 handle。Server 最穩陣係同時支援 2025-11-252026-07-28,client 用版本協商逐步開新版。TypeScript SDK v2 已有 2.0.0 穩定版,但手動建立嘅 client 預設仍行舊 handshake;要設 versionNegotiation: { mode: 'auto' } 先會用 server/discover 探測新版,再向舊 server fallback。換句話講,升 package 唔代表流量已經轉咗新版,上 production 前要用真實 client/server 組合驗證 negotiated era、cache、取消 request 同多輪互動。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook