返回首頁

AI 基礎設施與安全

MCP Python SDK 2.2.0 收緊重新導向與 OAuth,並限制舊式 HTTP 工作階段

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

Panek · CC BY-SA 4.0 · Image source
zh-Hant

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 的系統可先取得強化。

來源

  1. MCP Python SDK v2.2.0 release notes
  2. MCP Python SDK documentation
  3. mcp 2.2.0 package
  4. MCP Python SDK 2.2.0 security-default analysis