Anthropic公司近日宣布對其Model Context Protocol(MCP)進行重大技術革新,推出全新的"Streamable HTTP"傳輸協議,這一創新性解決方案將徹底改變MCP的遠程數據傳輸方式。新協議不僅解決了現有HTTP+SSE方案的關鍵限制,還保留了MCP原有的技術優勢,為AI模型與應用間的通信帶來了革命性的突破。
從技術架構來看,這次更新是對MCP數據傳輸機制的一次全面重構。新協議採用了更加靈活、易用且兼容性更強的設計理念。與之前必須保持持續在線的SSE長連接相比,新方案允許客戶端隨時發送消息並等待回复,這種類似普通HTTP請求但支持流式傳輸的方式,極大地提升了系統的靈活性和可用性。
此次技術更新主要包含五大核心改進:首先,移除了專用的/sse端點,簡化了服務器架構;其次,所有客戶端到服務器的消息都通過統一的/message端點傳輸,實現了接口的標準化;第三,服務器可以根據實際需求動態將HTTP請求升級為SSE流,提供了更大的靈活性;第四,客戶端通過Header提供Mcp-Session-Id,使服務器能夠更靈活地管理會話信息;最後,支持完全無狀態的服務器運行模式,顯著提升了系統的可擴展性。
推動這次技術革新的主要原因是現有HTTP+SSE傳輸方案存在諸多技術瓶頸:缺乏連接斷開後的恢復功能,導致客戶端必須重新開始整個會話;服務器需要保持高可用性以支持持續的SSE連接;且SSE僅支持單向通信,無法實現靈活的雙向數據交互。新的"Streamable HTTP"傳輸方式成功解決了這些問題,同時顯著提升了系統的整體性能和可擴展性。
對於開發者而言,這一更新帶來了諸多便利:實現MCP服務器變得更加簡單,只需普通HTTP服務器即可支持MCP,無需再搭建專門的SSE服務器;部署到Vercel、Cloudflare、AWS Lambda等不支持長連接的雲平台變得更加容易;兼容性大幅提升,新方案作為標準HTTP可與CDN、API網關、負載均衡無縫集成;擴展性顯著增強,支持無狀態模式運行,且可在需要時動態升級到SSE。
在基礎設施和服務器架構方面,新方案同樣帶來了革命性變化:無狀態服務器成為可能,服務器不再需要持續存儲客戶端會話信息;更適合微服務架構,可輕鬆與REST API、GraphQL、負載均衡、CDN等系統集成;服務器資源利用率更高,處理完請求後即可釋放資源,適合高並發場景。
值得注意的是,儘管SSE存在諸多問題,Anthropic並未選擇WebSocket作為替代方案。這主要基於以下技術考量:WebSocket需要維持長連接,而MCP主要採用類似RPC的模式,每個請求獨立執行;WebSocket無法傳輸HTTP頭部信息,導致身份驗證過程變得複雜;WebSocket僅支持GET升級而非POST,與MCP主要使用的POST請求不兼容。因此,最終決定繼續使用HTTP,但賦予服務器根據需要升級到SSE的能力,而非強制使用SSE或WebSocket。
從整體來看,此次更新使MCP變得更加輕量級且靈活,服務器可自主決定是否支持流式傳輸;部署流程顯著簡化,適用於Serverless架構;兼容性大幅提升,可與各種網絡基礎設施無縫協作;服務器資源利用率更高,支持更大規模的並發請求。
這一創新性變更使MCP服務器變得更簡單、更高效、更靈活,能夠支持更大規模的分佈式部署,徹底擺脫了SSE的限制,為AI模型與應用間的通信開闢了新篇章。項目地址:https://github.com/modelcontextprotocol/specification/pull/206