MCP 服务 Streamable HTTP 和 SSE 的区别

HTTP + SSE(旧的传输方式)

  • 在早期 MCP 规范(如版本 2024-11-05)中,支持一种基于 HTTP POST + SSE(Server-Sent Events)组合的传输方式。 (ceposta Technology Blog)

  • 其典型模式是:

    • 客户端通过 HTTP GET 请求连接一个 SSE 端点(如 /events),服务器在这个连接上持续推送事件(server → client)
    • 客户端通过 HTTP POST 到一个消息端点(如 /message)向服务器发消息(client → server)
    • 因此传输是「双通道」:一个专用于服务器推送,一个专用于客户端发送。 (ceposta Technology Blog)
  • 优点包括:支持服务器向客户端持续推送事件(如通知、更新),适合 "server→client 流" 的场景。

  • 缺点包括:

    • 实现上稍微复杂,因为需要两个不同端点(一个 GET SSE,一个 POST 消息)
    • 因为是专门为 SSE 设计,可能在代理、负载均衡、重连机制、ID 跟踪等方面有更多边界条件要处理。
  • 在 MCP 规范中,这种方式现在 被标记为过时 (deprecated) ,推荐采用新的方式。 (Model Context Protocol)


Streamable HTTP(新的推荐传输方式)

  • 在 MCP 最新规格(2025-06-18 版)中,明确指出:Streamable HTTP 传输 取代 HTTP+SSE。 (Model Context Protocol)

  • 特点如下:

    • 服务器提供一个 单一 HTTP 端点 (称为 "MCP endpoint")同时支持 HTTP POST 和 HTTP GET 方法。 (Model Context Protocol)
    • 客户端向该端点用 POST 发送 JSON-RPC 请求/通知/响应。服务器可以直接同步返回一个 JSON 响应 (Content-Type: application/json) 或者返回一个 Content-Type: text/event-stream 来启动 SSE 流。 (Model Context Protocol)
    • 客户端也可以通过 GET 请求打开 SSE 流,从而实现服务器向客户端主动推送消息(如通知、请求)而无需先发送 POST。 (Model Context Protocol)
    • 支持断线重连、可选的 "Last-Event-ID" 机制来恢复消息流。 (Model Context Protocol)
    • 安全建议:必须校验 Origin 头、使用认证、当本地部署时只绑定 localhost 等。 (Model Context Protocol)
  • 换句话说,Streamable HTTP 把传统的双端点 SSE 模式 "合并"并简化为一个端点,同时 仍然支持 SSE 流式推送(即 server→client)作为一种可选机制。

  • 因此,它具备更大灵活性:既可以用传统请求-响应,也可以在同一端点启动流,再进行持续推送。


主要区别

下面是一个对比摘要:

特性 HTTP + SSE(旧) Streamable HTTP(新)
端点结构 通常两个不同端点:一个 GET 用于 SSE 流,一个 POST 用于客户端发送 一个统一端点同时支持 POST(发送)和 GET 或 POST 启动 SSE(流)
客户端发送请求 POST 到消息端点 POST 到 MCP 端点
服务器推送 / 流式消息 通过 SSE 流(在 GET 的连接)推送 通过同一个端点,可使用 SSE 流;也可简单 JSON 响应
支持情况 主要是 server→client 推送 + client→server 请求,结构稍重 更灵活:支持同步响应 + 可选流模式,连接结构更简化
适用场景 较早实现,专门用于需要 server→client 流的情况 现代推荐,适合远程、多客户端、可扩展部署
当前状态 被标记为 "deprecated" 在 MCP 新版本中 (Model Context Protocol) 推荐用于新实现,同时保留与旧客户端兼容机制

为什么做这个变化/优点

  • 简化服务端/客户端的实现:一个端点而不是两个,更容易部署、版本控制、监控。
  • 更统一的连接模型:无论是简单请求‐响应还是流式消息,都通过同一个通道。
  • 支持更多场景:远程服务、多客户端连接、断线恢复机制、生成工具、通知推送等都更灵活。
  • 兼顾向后兼容:旧的 HTTP+SSE 客户端仍能连接,服务器可以继续支持以保障兼容。 (Model Context Protocol)

向后兼容 (Backwards Compatibility)

  • MCP 规范明确指出:为了支持旧客户端/服务器,服务器如果想要兼容旧的 HTTP+SSE 方式,应当同时提供旧的 SSE 端点(以及旧的 POST 端点) 新的 MCP 端点。 (Model Context Protocol)
  • 客户端若要兼容旧服务器:先尝试 POST 到服务器 URL;如果失败(比如 405 或 404),则尝试 GET 去开启 SSE 流,并观察 endpoint 事件,然后切换到旧的模式。 (Model Context Protocol)

总结一句话

旧的 "HTTP + SSE" 是一种将客户端请求 (POST) 和服务器推送 (SSE) 分开的模型;而新的 "Streamable HTTP" 是一个更现代、统一且灵活的模型 ------ 通过一个端点支持客户端-→-服务器请求、可选的服务器-→-客户端流、以及简化的部署与管理。

参考链接:blog.christianposta.com/ai/understa...

相关推荐
啊森要自信8 小时前
CANN ops-cv:面向计算机视觉的 AI 硬件端高效算子库核心架构与开发逻辑
人工智能·计算机视觉·架构·cann
2401_836235868 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活
njsgcs8 小时前
llm使用 AgentScope-Tuner 通过 RL 训练 FrozenLake 智能体
人工智能·深度学习
董董灿是个攻城狮8 小时前
AI 视觉连载2:灰度图
人工智能
发现一只大呆瓜8 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
yunfuuwqi9 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
九河云9 小时前
5秒开服,你的应用部署还卡在“加载中”吗?
大数据·人工智能·安全·机器学习·华为云
人工智能培训9 小时前
具身智能视觉、触觉、力觉、听觉等信息如何实时对齐与融合?
人工智能·深度学习·大模型·transformer·企业数字化转型·具身智能
wenzhangli79 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
后端小肥肠9 小时前
别再盲目抽卡了!Seedance 2.0 成本太高?教你用 Claude Code 100% 出片
人工智能·aigc·agent