觀點 · 資訊分享
MCP Python SDK 2.2 預設會關掉閒置 30 分鐘的連線:轉址也只跟同一個網址,升級前先看這幾項
MCP 官方的 Python SDK 發布 2.2.0:閒置 30 分鐘的連線會被關、轉址只跟隨同源網址、OAuth 客戶端多了發行者檢查。這些預設值的改變,會讓升級後的舊程式出現意想不到的錯誤。
- 發布
- 2026-09-07
- 篇幅
- 約 4 分鐘 · 1,766 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:MCP 官方的 Python SDK 發布 2.2.0,改了好幾個預設行為,例如閒置 30 分鐘的連線會被關閉、轉址只跟同一個網址,升級前建議先看過行為變更清單。

先用白話講:MCP 是什麼?
想像家裡的插座:不管是檯燈、風扇還是手機充電器,只要插頭規格一樣,就能插上去用。MCP(Model Context Protocol)就是 AI 世界的「標準插座」,讓 AI 代理可以用同一種方式連上各種工具與資料,而 Python SDK 是官方提供的工具包,幫開發者做出「插座」(伺服器)或「插頭」(客戶端)。
這次的 2.2.0 版本,不是加了什麼酷炫的新功能,而是把幾個預設行為調得更嚴格、更安全。如果你的程式沒有特別設定,升級之後的表現可能跟以前不一樣。
發生什麼事
SDK 在 9 月 7 日發布 2.2.0,官方在 release 說明最前面列出四項需要先看的行為變更:
| 變更 | 重點 |
|---|---|
| 轉址只跟同源 | 客戶端只會跟隨相同協定、主機、連接埠的轉址(或同主機從 http 升級到 https) |
| 閒置連線會過期 | 有狀態的 Streamable HTTP 連線閒置 30 分鐘就被關閉;單一伺服器最多同時 10,000 個連線 |
| OAuth 檢查發行者 | 舊流程也會檢查授權伺服器的 issuer,不一致就拒絕 |
| 兩項新警告 | 預先配置的 OAuth 客戶端沒傳 issuer、或 token 資源驗證設定沒填,會出現棄用警告 |
這會碰到什麼狀況?
- 轉址被擋:如果你連的網址會跳轉到別的網域,呼叫會失敗並丟出
MCPError,但連線階段仍然可以繼續使用。解法是直接把最終的網址當成端點 - 連線被關:舊版規格(2025-11-25 以前)的有狀態連線,閒置 30 分鐘後,客戶端下一次請求會收到 404,必須重新初始化
- 哪些不受影響:持續開著 GET 串流的客戶端(SDK 的
Client就是)、無狀態的伺服器,以及 2026-07-28 規格的連線 - 授權被拒:如果授權伺服器回報的 issuer 跟伺服器自己的來源不一致,會丟出
OAuthFlowError
給開發者的技術細節
升級指令:pip install -U mcp。想關掉閒置逾時與連線上限,可以這樣設:
mcp.run(
transport="streamable-http",
session_idle_timeout=None,
max_sessions=None,
)
- 新增設定:
AuthSettings.validate_token_resource(只接受 TokenVerifier 認定「為這個伺服器簽發」的 token)、issuer=(用在ClientCredentialsOAuthProvider與PrivateKeyJWTOAuthProvider) - 傳入的 httpx 用戶端:你傳進去的
httpx2.AsyncClient上的follow_redirects設定,不再用於 MCP 請求 - 修正:客戶端送出
DELETE會立刻釋放連線階段;工具outputSchema裡的$ref只會在該 schema 內解析 - 官方列出的缺口:tasks 擴充(SEP-2663)、DPoP(SEP-1932)、
jwt-bearer授權方式都還沒實作
我的看法
這類版本的重點不在「多了什麼」,而在「預設值變了」。接案時最怕的就是升級套件後,某個平常不太會觸發的情境出狀況,例如一個放了半小時沒人用的連線,隔天第一次使用就失敗,而且錯誤訊息只是一個 404,很容易誤判成網路問題。
我的建議是:如果你有自己寫 MCP 伺服器,先確認它是無狀態還是有狀態,再決定要不要保留閒置逾時;升級前先在測試環境把警告打開(讓警告變成錯誤),先把 OAuth 相關的棄用警告清掉,3.0 來的時候才不會手忙腳亂。
名詞小辭典
- MCP:讓 AI 代理連接工具與資料的通用規格。
- Streamable HTTP:MCP 透過 HTTP 傳資料的一種方式,可以是有狀態(記住連線階段)或無狀態。
- OAuth issuer(發行者):授權伺服器對外宣告的身分網址,用來確認 token 是誰簽發的。
- 棄用警告(Deprecation Warning):提醒你這種用法以後會被移除或改變,現在還能用。
資料來源
常見問題
MCP 是什麼?
MCP(Model Context Protocol)是讓 AI 代理連接外部工具與資料的通用介面,像是 AI 世界的「萬用插座」。工具只要照規格做成 MCP 伺服器,各種 AI 應用程式就能用同一種方式連上去。
升級到 2.2 後,連線突然被關了怎麼辦?
如果你用的是舊版規格(2025-11-25 以前)的有狀態 Streamable HTTP 連線,閒置 30 分鐘會被關閉,客戶端下一次請求會收到 404 並需要重新初始化。可以在伺服器端把 session_idle_timeout 與 max_sessions 設為 None 來關掉這兩項限制。
哪些連線不會受到閒置逾時影響?
官方說明,會持續開著 GET 串流的客戶端(SDK 自己的 Client 就是)、無狀態的伺服器,以及 2026-07-28 規格的連線都不受影響。
3.0 會有什麼不同?
官方在這次 release 提到兩項:預先配置的 OAuth 客戶端將要求提供 issuer,AuthSettings 的 validate_token_resource 預設將是 True。現在用 2.x 會看到棄用警告,行為暫時不變。
接著讀
全部觀點 →AWS MCP Server 支援 OAuth 登入:AI 代理不用另裝驗證軟體,用原本的 AWS 帳號就能授權AWS 讓 AI 代理(像 Claude Code)改用標準 OAuth 連上 AWS MCP Server,登入方式與權限沿用原本的 AWS 設定。管理員還多了條件鍵、權杖撤銷與 CloudTrail 稽核可以管。閱讀 →Cloudflare 官方 MCP 伺服器開始附送「技能包」:AI 代理連上一個網址,就學會怎麼用 CloudflareCloudflare API MCP 伺服器透過 MCP 的 Skills 擴充,直接提供官方整理的 Cloudflare 技能。支援的 AI 工具連上 mcp.cloudflare.com,就能同時拿到 2,500 多個 API 端點和「怎麼正確使用」的操作說明。閱讀 →OpenAI 推出 Agents API 公開測試:Codex 背後的代理引擎開放給開發者,API 本身不另收費OpenAI 把 Codex 用的代理引擎(harness)做成 Agents API,開放公開測試。一個 API 呼叫就能建立會寫程式、跑指令、接 MCP 的 AI 代理,可選 OpenAI 代管沙盒、自家機器或 9 家合作廠商;API 不另收費,只付模型與工具用量。閱讀 →