返回首頁

代理框架與 MCP

Agno 3.0.6 讓 MCP 服務可無狀態橫向擴展,代價是放棄通知與串流續傳

Agno 3.0.6 新增無狀態 MCP 傳輸,任何副本都能接手請求而不必設定 session affinity。框架同時加入協定版本協商與 Server Card,但為相容既有部署仍預設使用舊式工作階段模式。

Ilario · CC BY-SA 3.0 · Image source
zh-Hant

Agno 3.0.6 把 MCP 伺服器從工作階段綁定模式延伸到可選的無狀態部署。開發者設定 `MCPConfig(stateless=True)` 後,`/mcp` 請求不再依賴伺服器端 session,因此 Kubernetes 或其他多副本環境可以讓任一實例處理後續請求,不必用黏性連線把同一客戶端固定到原節點。這會簡化水平擴展、故障切換與負載平衡,但不是免費轉換:無狀態模式不支援伺服器主動通知,也犧牲 SSE 串流的中斷續傳能力,所以新版仍將它保持為關閉狀態。

客戶端新增 `MCPTools(protocol_mode=...)`,用來選擇協定世代。預設值 `legacy` 保留原本具 session 的交握;設為 `auto` 才會協商雙方共同支援的最新版本,包括 2026-07-28 協定世代的 sessionless 行為。底層 MCP client 已改建於 `fastmcp.Client`。這項預設很重要:升級套件不會自動改變既有伺服器語意,但想採用新傳輸的團隊必須明確修改設定,並重新測試反向代理、逾時、重試與串流處理。

AgentOS 另外在 `GET /mcp/server-card` 暴露名稱、版本、指令及可用工具清單,使部署端可先探索服務能力;新版也允許以 `AuthorizationConfig.excluded_route_paths` 將指定自訂路由設為公開,而不必關閉全域驗證。後者方便健康檢查或公開 metadata,卻也新增一個需要稽核的權限例外面。

這次發布還修正 Anthropic thinking block 重播、Gemini 圖片 MIME 類型、重複尾端 chunk 與串流錯誤傳遞。工程師下一步應驗證無狀態模式下的冪等性與重試語意,並確認應用程式沒有暗中依賴通知、續傳或節點本機狀態;「任何副本可回答」只解決傳輸 session,不會自動讓代理記憶、工具副作用或資料庫交易變成無狀態。

來源

  1. Release v3.0.6 · agno-agi/agno
  2. agno 3.0.6