MCP 有望引入新的数据传输方式:Streamable HTTP

来源: OSCHINA
编辑:
2025-03-18 12:03:00

MCP (Model Context Protocol) 是 Anthropic 开源的 “模型上下文协议”,该协议支持将大模型直接连接至数据源,官方介绍称 “可无缝集成 LLM 应用程序和外部数据源”。

近日,Anthropic 工程师在 MCP 的 GitHub 仓库提交了一个希望采用"Streamable HTTP"传输代替「HTTP+SSE」的 PR,以解决当前远程 Model Context Protocol (MCP) 传输方式的关键限制,同时保留其优势。

https://github.com/modelcontextprotocol/specification/pull/206

简单来说,Streamable HTTP 改变了 MCP 的数据传输方式,让协议变得:

  1. 更灵活(支持流式传输,但不强制)

  2. 更易用(支持无状态服务器)

  3. 更兼容(适用于标准 HTTP 基础设施)

💡 简单比喻: 原来的 MCP 传输方式就像是你和客服通话时必须一直保持在线(SSE 需要长连接),而新的方式更像是你随时可以发消息,然后等回复(普通 HTTP 请求,但可以流式传输)。

主要变更

  1. 移除 /sse 端点

    • 服务器不再单独维护 SSE(Server-Sent Events)端点。
  2. 所有客户端 → 服务器的消息都通过 /message 端点

    • 任何数据传输都通过 /message 进行,不再依赖 /sse。
  3. 服务器可以选择升级请求为 SSE

    • 服务器可以根据需要动态升级 HTTP 请求为 SSE 流,用于发送通知或请求。
  4. 客户端通过 Header 提供 Mcp-Session-Id

    • 服务器可选是否需要存储 Session 信息,但客户端始终发送 Mcp-Session-Id 头部信息。
  5. 支持无状态(Stateless)服务器

    • 服务器可选择完全无状态运行,不再需要维持长期连接。

变更的动机

当前的 HTTP+SSE 传输 存在以下问题:

  • 不支持可恢复性(Resumability):连接断开后,客户端必须重新开始整个会话。

  • 服务器需要维持长期连接(High Availability Requirement):服务器必须保持高可用性,以支持持续的 SSE 连接。

  • SSE 仅支持服务器 → 客户端消息,无法灵活进行双向通信。

新的“Streamable HTTP”传输方式解决了这些问题,并增强了系统的可扩展性和灵活性。

展开阅读全文
点击加入讨论🔥(3) 发布并加入讨论🔥
3 评论
7 收藏
分享
返回顶部
顶部