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...

相关推荐
图生生17 小时前
基于AI的商品场景图批量生成方案,助力电商大促效率翻倍
人工智能·ai
说私域17 小时前
短视频私域流量池的变现路径创新:基于AI智能名片链动2+1模式S2B2C商城小程序的实践研究
大数据·人工智能·小程序
yugi98783817 小时前
用于图像分类的EMAP:概念、实现与工具支持
人工智能·计算机视觉·分类
aigcapi17 小时前
AI搜索排名提升:GEO优化如何成为企业增长新引擎
人工智能
彼岸花开了吗17 小时前
构建AI智能体:八十、SVD知识整理与降维:从数据混沌到语义秩序的智能转换
人工智能·python·llm
MM_MS17 小时前
Halcon图像锐化和图像增强、窗口的相关算子
大数据·图像处理·人工智能·opencv·算法·计算机视觉·视觉检测
韩师傅17 小时前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端
AI大佬的小弟17 小时前
【小白第一课】大模型基础知识(1)---大模型到底是啥?
人工智能·自然语言处理·开源·大模型基础·大模型分类·什么是大模型·国内外主流大模型
lambo mercy17 小时前
无监督学习
人工智能·深度学习
阿里巴巴P8资深技术专家17 小时前
基于 Spring AI 和 Redis 向量库的智能对话系统实践
人工智能·redis·spring