当前位置: 首页 > news >正文

MCP协议三种传输机制全解析

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

文章目录

    • 一、背景
    • 二、三种传输机制
      • 🔧 1. Stdio(标准输入/输出
      • 🌐 2. SSE(Server-Sent Events)
      • 🚀 3. Streamable HTTP
      • ⚖️ 四、三种传输机制对比
      • 💡 五、选择建议
    • 三、三种传输方式是如何实现的
      • 🔧 一、协议的技术来源
      • ⚙️ 二、MCP 的贡献:协议整合与问题解决
      • 🌐 三、协议演进与行业关系
      • ✅ 四、总结
    • 四、总结

一、背景

前面我们已经再为更进一步的 MCP 打下了基础
一文搞定 Python 装饰器
Web架构全解析:8种类型优缺点及场景
解锁 MCP 中的 JSON-RPC
为什么MCP可以适配不同LLM

今天我们来聊一下 MCP 协议的 三种传输机制

二、三种传输机制

MCP(Model Context Protocol)协议定义了三种主要传输机制(Transports),用于客户端与服务器之间的通信,每种机制针对不同场景设计,具体如下:


🔧 1. Stdio(标准输入/输出

  • 通信方式:通过进程的标准输入(stdin)和输出(stdout)进行双向通信,消息以换行符 \n 分隔的 JSON-RPC 2.0 格式传输。
  • 适用场景
    • 本地进程间通信(如命令行工具、IDE插件)。
    • 调试环境或资源受限的本地部署。
  • 优势
    • 简单易实现,无需网络配置。
    • 平台兼容性高(支持所有操作系统)。
  • 局限
    • 仅支持本地通信,无法跨网络。
    • 低并发能力,不适合高负载场景。

🌐 2. SSE(Server-Sent Events)

  • 通信方式
    • 客户端 → 服务器:通过 HTTP POST 发送请求。
    • 服务器 → 客户端:通过 SSE 长连接单向推送流式响应(事件流)。
  • 适用场景
    • 需要服务器主动推送数据的场景(如实时监控、新闻更新)。
    • 跨网络通信,但客户端无需频繁发送请求。
  • 优势
    • 基于 HTTP 协议,易于在浏览器或受限网络中使用。
    • 支持实时流式数据传输。
  • 局限
    • 即将废弃:MCP 协议从 2025-03-26 版本开始标记 SSE 为“即将废弃”,由 Streamable HTTP 替代。
    • 仅支持单向通信(服务器→客户端)。

🚀 3. Streamable HTTP

  • 通信方式
    • 基于 HTTP/2 协议实现双向流式传输。
    • 客户端通过 HTTP POST 发送请求,服务器在同一长连接中实时推送响应(支持批处理和分片传输)。
  • 适用场景
    • 高并发分布式系统(如金融交易、实时流媒体)。
    • 需要低延迟双向交互的跨网络应用。
  • 优势
    • 支持高并发和双向实时交互。
    • 可扩展性强,适用于复杂业务逻辑。
  • 局限
    • 实现复杂,需处理长连接管理(如超时、重连)。
    • MCP 仅提供协议规范,无官方 SDK 支持,需开发者自行实现(如使用 Python httpx 库)。

⚖️ 四、三种传输机制对比

特性StdioSSEStreamable HTTP
通信方向双向(本地)单向(服务器→客户端)双向(跨网络)
协议基础操作系统管道HTTP/1.1 + SSEHTTP/2 + 流式传输
实时性低(顺序处理)中(单向推送)高(双向实时)
部署复杂度简单(无需网络)中等(需 HTTP 服务)高(需处理长连接)
典型场景命令行工具、本地调试实时通知、监控数据推送高并发分布式系统、实时交互
并发能力低(<100连接)中(受限于 HTTP 连接数)高(支持大规模并发)
实现难度★☆☆☆☆★★☆☆☆★★★★☆

💡 五、选择建议

  • 本地开发/调试:优先使用 Stdio,简单高效。
  • 单向数据推送:短期项目可考虑 SSE(注意即将废弃),长期建议迁移至 Streamable HTTP。
  • 高并发分布式系统:必须使用 Streamable HTTP,尤其需双向交互时。

注:MCP 支持自定义传输扩展(如 WebSocket、gRPC),但需兼容 JSON-RPC 2.0 消息格式。开发者应根据实际场景权衡实现成本与性能需求。

三、三种传输方式是如何实现的

MCP(Model Context Protocol)协议中的传输机制(Transports)并非全新开发,而是基于现有成熟协议或技术实现的适配与优化。以下是具体分析:


🔧 一、协议的技术来源

  1. Stdio(标准输入/输出)

    • 技术基础:基于操作系统的标准进程间通信(IPC)管道(stdin/stdout),这是所有操作系统的原生功能。
    • MCP 的适配:仅规范了 JSON-RPC 消息格式(以换行符分隔),未改变底层通信原理。
  2. SSE(Server-Sent Events)

    • 技术基础:SSE 是 HTML5 标准协议(W3C 规范),2010 年后被主流浏览器支持。
    • MCP 的适配
      • 复用 SSE 的 text/event-stream 格式和自动重连机制;
      • 增加 JSON-RPC 封装,统一消息格式。
  3. Streamable HTTP

    • 技术基础
      • 基于 HTTP/2 流式传输(RFC 7540)和 分块编码(Chunked Encoding);
      • 融合 SSE 的事件流机制,但移除专用 /sse 端点。
    • MCP 的创新
      • 提出 “动态流式升级” 机制(普通 HTTP 请求可升级为 SSE 流);
      • 引入会话 ID 支持状态恢复。

⚙️ 二、MCP 的贡献:协议整合与问题解决

虽然未发明新协议,但 MCP 通过标准化整合解决了原有技术的局限性:

  1. SSE 的缺陷改进

    • 原生 SSE 仅支持单向通信,MCP 通过 双端点设计/sse + POST 端点)实现双向交互;
    • 增加安全规范(如 Origin 验证、本地绑定)防止攻击。
  2. Streamable HTTP 的革新

    • 解决 SSE 的长连接压力断线不可恢复问题;
    • 兼容无服务器架构(如 AWS Lambda),支持按需流式响应。
  3. 协议统一性

    • 所有传输层均强制使用 JSON-RPC 2.0 消息格式,与通信方式解耦。

🌐 三、协议演进与行业关系

传输机制技术来源MCP 改进重点行业应用
Stdio操作系统 IPC消息格式标准化本地开发、CLI 工具
SSEHTML5 标准双向通信扩展、安全增强实时推送场景(逐步淘汰)
Streamable HTTPHTTP/2 + SSE动态流式升级、无状态支持云原生、分布式系统

💡 设计哲学:MCP 遵循 “复用优于重构” 原则,通过协议层封装降低开发门槛,而非重复造轮子。


✅ 四、总结

  • 非全新开发:Stdio、SSE、HTTP 均为已有技术,MCP 负责协议适配与规范统一。
  • 核心创新
    • 提出 Streamable HTTP 解决 SSE 的工程化缺陷;
    • 建立 JSON-RPC 消息层,实现传输机制无关性。
  • 行业意义:为 LLM 工具集成提供标准化通信框架,推动生态兼容性。

四、总结

MCP协议定义了三种传输机制,以满足不同场景下的客户端与服务器通信需求。
Stdio适合本地开发和调试,
SSE适用于短期的单向数据推送项目( 后面会下线 ),
而Streamable HTTP则适用于需要高并发和双向实时交互的分布式系统。

MCP并非发明新协议,而是基于现有技术进行适配和优化,通过标准化整合解决了原有技术的局限性,为LLM工具集成提供了标准化通信框架。

相关文章:

  • 在线OJ项目测试
  • C++.OpenGL (7/64)摄像机(Camera)
  • 云服务器厂商机房是什么
  • 玛哈特辊式矫平机:塑造金属平整的精密力量
  • U-Mail邮件加密,保障邮件系统信息安全
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • LlamaIndex 工作流简介以及基础工作流
  • 开源语义分割工具箱mmsegmentation基于Lovedata数据集训练模型
  • x32dbg/x64dbg SwissArmyKnife 插件导入map文件不生效
  • 我用Amazon Q写了一个Docker客户端,并上架了懒猫微服商店
  • 动态IP与静态IP:数字世界的“变脸术”与“身份证”
  • 深入理解 Linux Kernel Panic:常见原因与实战分析
  • 网络库libhv介绍
  • systemback复制系统报错
  • 【Unity Shader编程】之让画面动起来
  • JVM虚拟机:内存结构、垃圾回收、性能优化
  • 深入理解Java单例模式:确保类只有一个实例
  • Java-IO流之打印流详解
  • MySQL基础(四)DML、数据表操作DDL操作
  • MAX3490
  • 电子商务网站建设首要问题是/百度地图疫情实时动态
  • 电子商务网站功能需求/世界十大网站排名
  • 成都哪家做网站做的好/百度云官方网站
  • 网站建设详细教程视频/企业管理培训课程视频
  • web网站建设培训班/公司调查公司
  • 零遁nas做网站/网络营销策划书封面