Anthropic 发布 MCP 重大更新,引入了一种新的“Streamable HTTP”传输方式,替代当前的 HTTP+SSE 方案。以解决当前远程 Model Context Protocol (MCP) 传输方式的关键限制,同时保留其优势。
简单来说,它改变了 MCP 的数据传输方式,让协议变得:
- 更灵活(支持流式传输,但不强制)
- 更易用(支持无状态服务器)
- 更兼容(适用于标准 HTTP 基础设施)
💡 简单比喻: 原来的 MCP 传输方式就像是你和客服通话时必须一直保持在线(SSE 需要长连接),而新的方式更像是你随时可以发消息,然后等回复(普通 HTTP 请求,但可以流式传输)。
主要变更
移除 /sse 端点
- 服务器不再单独维护 SSE(Server-Sent Events)端点。
所有客户端 → 服务器的消息都通过 /message 端点
- 任何数据传输都通过 /message 进行,不再依赖 /sse。
服务器可以选择升级请求为 SSE
- 服务器可以根据需要动态升级 HTTP 请求为 SSE 流,用于发送通知或请求。
客户端通过 Header 提供 Mcp-Session-Id
- 服务器可选是否需要存储 Session 信息,但客户端始终发送 Mcp-Session-Id 头部信息。
支持无状态(Stateless)服务器
- 服务器可选择完全无状态运行,不再需要维持长期连接。
变更的动机
当前的 HTTP+SSE 传输 存在以下问题:
- 不支持可恢复性(Resumability):连接断开后,客户端必须重新开始整个会话。
- 服务器需要维持长期连接(High Availability Requirement):服务器必须保持高可用性,以支持持续的 SSE 连接。
- SSE 仅支持服务器 → 客户端消息,无法灵活进行双向通信。
💡 新的“Streamable HTTP”传输方式 解决了这些问题,并增强了系统的可扩展性和灵活性。
这意味着什么?
1️⃣ 对开发者来说
✅ 实现 MCP 服务器更简单了
- 你不需要搭建 SSE 服务器,普通的 HTTP 服务器 就可以支持 MCP!
- 更容易部署到云服务,比如 Vercel、Cloudflare、AWS Lambda 这些不支持长连接的平台。
✅ 更好的兼容性
- 以前的 SSE 方案不支持负载均衡和缓存,新方案完全是 HTTP,可以和 CDN、API 网关、负载均衡无缝结合。
✅ 更好的扩展性
- 可以选择无状态模式(Stateless),不需要让服务器保持长期在线。
- 需要流式传输时,可以动态升级到 SSE,但不是必须的。
2️⃣ 对基础设施和服务器架构的影响
✅ 无状态服务器变得更可行
- 以前的 MCP 需要 长连接(SSE),这意味着服务器需要一直存储客户端的会话信息,增加了服务器压力。
- 现在可以完全 无状态(Stateless),服务器只在收到请求时才处理,不用一直保持连接。
✅ 更适合微服务架构
- 由于 MCP 现在完全是 普通 HTTP 传输,它可以很容易地与 REST API、GraphQL、负载均衡、缓存系统(CDN) 集成。
✅ 更节省服务器资源
- 以前需要保持 SSE 长连接,导致服务器资源占用较高。
- 现在 MCP 服务器可以在请求到达时处理,然后释放资源,更适合高并发场景。
3️⃣ 为什么不采用 WebSocket?
有人可能会问:
既然 SSE 有问题,为什么不直接换成 WebSocket?
这个 PR 解释了 不选 WebSocket 的理由:
- WebSocket 需要长连接,但 MCP 主要是类似 RPC(远程调用)的模式,每个请求单独执行,没必要一直保持连接。
- WebSocket 不能传 HTTP 头部信息,这会导致**身份验证(Authentication)**变得复杂。
- WebSocket 只支持 GET 升级,不支持 POST,但 MCP 主要使用 POST 请求,转换过程会增加复杂性。
💡 所以最终决定:
- 继续使用 HTTP,但让服务器 可以根据需要升级到 SSE,而不是强制 SSE 或 WebSocket。
总结:这次改动的影响
1️⃣ MCP 变得更轻量级、更灵活:
- 服务器可以选择是否支持流式传输,但不强制要求 SSE。
- 可以完全使用普通 HTTP,而不是必须使用 SSE。
2️⃣ 服务器部署更简单:
- 以前 SSE 需要 长连接 + 高可用服务器,现在 MCP 可以用普通 HTTP 服务器实现,降低了架构复杂性。
- 适用于 Serverless(无服务器) 部署,比如 Vercel、Cloudflare Workers、AWS Lambda。
3️⃣ 兼容性更好:
- 兼容 负载均衡、API 网关、缓存(CDN),不会像 SSE 那样容易受限。
4️⃣ 服务器资源利用率更高:
- 以前的 SSE 服务器需要一直保持连接,现在可以在请求来时处理,然后立即释放资源,支持更大规模的并发。
💡 一句话总结: ✅ MCP 服务器变得更简单、更高效、更灵活,可以支持更大规模的分布式部署,不再受到 SSE 的局限! 🚀
GitHub:https://github.com/modelcontextprotocol/specification/pull/206