AI 基礎設施與安全
MCP Python SDK 2.2.0 收緊重新導向與 OAuth,並限制舊式 HTTP 工作階段
官方 Python SDK 現在只跟隨端點信任範圍內的重新導向,並擴大 OAuth issuer 驗證。舊版 Streamable HTTP 工作階段預設閒置 30 分鐘失效,單一伺服器最多保留 10,000 個工作階段。

Model Context Protocol 官方 Python SDK 2.2.0 不是新的協定修訂,卻改變了遠端 MCP 部署的數項安全與資源管理預設。`Client`、Streamable HTTP 及 SSE 客戶端現在只會跟隨相同 scheme、主機與連接埠內的重新導向;唯一例外是同一主機由 HTTP 升級至 HTTPS。跨主機或連接埠的跳轉會以 `MCPError` 或 `httpx2.HTTPStatusError` 終止,傳入 `httpx2.AsyncClient(follow_redirects=True)` 也不能繞過。這會阻止攜帶授權資訊的工具請求被重新導向至另一信任邊界,但使用 vanity URL、跨網域反向代理或舊遷移網址的部署可能立即失效。
OAuth 路徑亦開始在舊式 discovery 流程檢查 authorization server 的 `issuer`;受保護資源中繼資料若因 429 或 5xx 無法取得,SDK 不再悄悄退回舊流程。新增的 `AuthSettings.validate_token_resource` 可要求驗證器確認 bearer token 確實簽發給目前資源伺服器。未提供 `issuer=` 或未明確設定 token-resource 驗證者目前只會收到棄用警告,但 3.0 預定進一步收緊預設。
對使用 2025-11-25 或更早協定版本的有狀態 Streamable HTTP 伺服器,閒置 30 分鐘的工作階段會被關閉,下一次請求收到 404 並須重新初始化;超過 10,000 個工作階段則回傳 503。保持 GET 串流開啟的官方高階客戶端、無狀態伺服器,以及採用 2026-07-28 協定的連線不受此限制。團隊應先測試重新連線、代理拓撲和 OAuth 錯誤路徑,而非直接關閉上限。相同核心修正也已回補至 1.30.0,尚未遷移 2.x 的系統可先取得強化。