当前位置: 首页 > 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工具集成提供了标准化通信框架。

http://www.xdnf.cn/news/912763.html

相关文章:

  • unity Addressable的基本使用
  • Anthropic 的交互式提示工程教程:Claude 用户的实战指南
  • AI任务相关解决方案6-模糊神经网络与强化学习融合,优化PID参数,适合高精度、多变量耦合系统
  • 大白话解释SMBus2.0
  • java 编程基础入门级超级完整版教程指南
  • 微信小程序实现膳食营养计算
  • Java调用大模型API实战指南
  • IBM官网新闻爬虫代码示例
  • 【量化】量化策略交易
  • Go性能剖析工具:pprof实战指南
  • JS手写代码篇---手写函数柯里化
  • Dify中聊天助手、agent、文本生成、chatflow、工作流模式解读分析与对比
  • 【java】在springboot中实现证书双向验证
  • 告别繁琐配置:在线运行 Matplotlib 画图,Python 环境免安装新体验!
  • 嵌入(Embedding)技术的实现原理与应用场景解析
  • 基于KNN算法的入侵检测模型设计与实现【源码+文档】
  • vue3 按钮 增加快捷方式
  • 易思维报考上市:国投基金清仓退出,郭寅“套现”超6500万元
  • Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch
  • c++重点知识总结
  • win10/win11禁止系统更新
  • AI书签管理工具开发全记录(十三):TUI基本框架搭建
  • 辊式矫平机:金属板材平整加工的基石
  • @Minikube 部署与配置
  • ngx_stream_access_module基于 IP 的流式访问控制实践指南
  • C++.OpenGL (6/64)坐标系统(Coordinate Systems)
  • GPU纹理复用技术实战:显存占用狂降70%的革命性优化方案
  • C++ --- vector
  • MySQL 事务详解
  • CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比