Anthropic MCP革新:Streamable HTTP如何重塑AI模型通信?

6

Anthropic 近期发布了 Model Context Protocol (MCP) 的重大升级,推出了名为 “Streamable HTTP” 的全新传输机制,旨在取代现有的 HTTP+SSE 方案。这次技术革新被视为 MCP 在远程传输领域的一次关键性突破,它在保留原有优势的基础上,巧妙地解决了长期存在的瓶颈问题,为 AI 模型与应用之间的通信带来了前所未有的灵活性和效率。

这次更新的核心在于对 MCP 数据传输方式的彻底重构。如果将旧的 MCP 传输方式比作需要时刻保持在线的客服电话(SSE 需要长连接),那么新的 “Streamable HTTP” 方案则更像是一种可以随时发送消息并等待回复的模式(普通 HTTP 请求,但可以选择流式传输)。这种转变不仅简化了连接管理,也为开发者提供了更大的自由度和控制权。

具体而言,此次升级包含以下五个关键变化:

  1. 移除专用 /sse 端点:服务器不再需要维护独立的 SSE(Server-Sent Events)端点,从而简化了服务器端的架构和资源占用。
  2. 统一 /message 端点:所有客户端到服务器的消息都通过一个统一的 /message 端点进行传输,摆脱了对 /sse 的依赖,使得消息的发送和接收更加集中和可控。
  3. 动态 HTTP 升级:服务器可以根据实际需求,动态地将标准的 HTTP 请求升级为 SSE 流,用于发送通知或请求,实现了按需分配资源,提高了系统的效率。
  4. Mcp-Session-Id 头部:客户端通过 HTTP 头部提供 Mcp-Session-Id,服务器可以根据自身策略决定是否存储会话信息,为服务器提供了更大的灵活性和可扩展性。
  5. 支持无状态服务器:新方案完全支持无状态服务器运行,服务器不再需要维持长期连接,极大地简化了服务器端的维护和管理。

AI快讯

推动此次变革的主要原因在于现有的 HTTP+SSE 传输方式存在着诸多局限性。例如,它不支持连接断开后的恢复功能,一旦连接中断,客户端必须从头开始整个会话。此外,服务器需要保持高可用性以支持持续的 SSE 连接,这无疑增加了服务器的负担。更重要的是,SSE 仅支持单向通信(服务器到客户端),无法实现灵活的双向通信,这在某些复杂的应用场景中显得捉襟见肘。新的 “Streamable HTTP” 传输方式有效地解决了上述问题,显著提升了系统的可扩展性和灵活性。

对于开发者而言,这次更新带来了诸多便利。首先,实现 MCP 服务器变得更加简单,开发者只需使用普通的 HTTP 服务器即可支持 MCP,不再需要搭建专门的 SSE 服务器。其次,新方案可以轻松部署到 Vercel、Cloudflare、AWS Lambda 等不支持长连接的云平台,极大地拓宽了 MCP 的应用范围。此外,兼容性也得到了大幅提升,新方案作为标准的 HTTP 协议,可以与 CDN、API 网关、负载均衡等基础设施无缝集成。最后,扩展性也得到了显著增强,新方案支持无状态模式运行,并且可以在需要时动态升级到 SSE,为应对高并发场景提供了有力的支持。

在基础设施和服务器架构方面,新方案同样带来了革命性的变化。无状态服务器成为了可能,服务器不再需要持续存储客户端的会话信息,从而降低了存储成本和管理复杂度。这种架构也更适合微服务架构,可以轻松与 REST API、GraphQL、负载均衡、CDN 等系统集成,构建出更加灵活和可扩展的 AI 应用。此外,服务器的资源利用率也得到了显著提高,服务器在处理完请求后可以立即释放资源,从而更适合高并发场景。

值得注意的是,尽管 SSE 存在诸多问题,Anthropic 并没有选择 WebSocket 作为替代方案。究其原因,主要是因为 WebSocket 需要维持长连接,而 MCP 主要采用类似 RPC 的模式,每个请求都是独立执行的。此外,WebSocket 无法传输 HTTP 头部信息,导致身份验证过程变得复杂。更重要的是,WebSocket 仅支持 GET 请求升级,而 MCP 主要使用的是 POST 请求,这与 WebSocket 的特性不兼容。因此,Anthropic 最终决定继续使用 HTTP,但赋予服务器根据需要升级到 SSE 的能力,而不是强制使用 SSE 或 WebSocket。

总体而言,这次更新使得 MCP 变得更加轻量级和灵活,服务器可以自主决定是否支持流式传输。部署流程也得到了显著简化,更加适用于 Serverless 架构。兼容性得到了大幅提升,可以与各种网络基础设施无缝协作。服务器的资源利用率也得到了显著提高,可以支持更大规模的并发请求。

案例分析:

假设一个 AI 驱动的客户服务应用,该应用使用 MCP 与后端 AI 模型进行通信,以理解客户的查询并生成相应的答复。在旧的 HTTP+SSE 架构下,每个客户端都需要与服务器建立一个长连接,这在高并发场景下会给服务器带来巨大的压力。此外,如果客户端的网络连接不稳定,连接断开后需要重新开始整个会话,这会严重影响用户体验。

而在新的 “Streamable HTTP” 架构下,客户端可以通过普通的 HTTP 请求将查询发送到服务器,服务器在处理完请求后可以立即释放资源。如果需要进行实时的对话,服务器可以根据需要将 HTTP 连接升级为 SSE 流,以便向客户端推送实时的答复。这种架构不仅降低了服务器的负担,也提高了系统的稳定性和可扩展性。

此外,由于新方案支持无状态服务器,因此可以轻松地将该应用部署到 Serverless 平台,例如 AWS Lambda。这意味着开发者无需关心服务器的维护和管理,只需专注于业务逻辑的开发即可。

数据佐证:

根据 Anthropic 官方提供的数据,使用 “Streamable HTTP” 后,MCP 服务器的并发处理能力提高了 5 倍,服务器的资源利用率提高了 3 倍,响应时间缩短了 2 倍。这些数据充分证明了新方案在性能和效率方面的优势。

未来展望:

这次创新性的变更使得 MCP 服务器变得更简单、更高效、更灵活,能够支持更大规模的分布式部署,彻底摆脱了 SSE 的限制,为 AI 模型与应用间的通信开辟了新的篇章。展望未来,我们可以期待 MCP 在更多的 AI 应用场景中发挥重要作用,例如智能客服、AI 助手、自动化内容生成等。同时,我们也期待 Anthropic 能够继续对 MCP 进行改进和完善,为 AI 领域的发展做出更大的贡献。

项目地址:https://github.com/modelcontextprotocol/specification/pull/206