MCP协议通常采用的通信方式
MCP的通信方式是分场景来采取的如果MCP Server和MCP Client都是本地部署此时MCP协议的通信方式主要通过标准输入输出stdio来实现通信如果MCP Server单独作为一个HTTP服务来运行此时MCP的通信方式是通过Streamable HTTP来实现的但是不论MCP采取的是哪一种通信方式底层的消息传输的格式都是JSON-RPC2.0一、MCP底层的消息格式---JSON-RPC2.0在介绍通信方式前先来介绍一下MCP底层的消息传输的格式因为无论使用哪一种通信方式底层的消息格式都是不变的都是以JSON-RPC2.0的格式来进行消息的传输为什么MCP底层的消息格式会用JSON-RPC2.0呢MCP 的核心流程是由 MCP Client 发起调用、MCP Server 处理并返回数据本质属于远程过程调用RPC。要完成这套跨端远程调用交互就需要一套标准化的消息传输规范来承载交互数据也就是图中的 JSON-RPC 消息模板。JSON-RPC2.0就是现成的足够轻量的RPC消息模版以JSON格式易读易调试且许多编程语言都能实现不论是Python、Java或者是TypeScript写的格式都一样这样也省去了引入序列器的功夫每条消息就是一个JSON对象如下面的例子// 请求消息Client - Server { jsonrpc: 2.0, id: 1, // 请求 ID用于匹配响应 method: tools/call, // 调用的方法名 params: { name: take_screenshot, // 工具名 arguments: {url: https://example.com} } } // 响应消息Server - Client { jsonrpc: 2.0, id: 1, // 对应请求的 ID result: { content: [{type: image, data: ...base64...}] } }JSON-RPC2.0只关注消息的格式不关心消息的传输方式MCP协议在这个的基础上实现了两种通信方式二、本地通信方式stdio(标准输入输出)stdio是MCP Client和MCP Server在本地部署的情景下使用的通信方式原理是Client启动时将Server作为一个子进程顺带着启动了此时Client通过标准输入的形式向Server发送请求然后Server在以标准输出的格式返回结果因为Client和Server都是本地部署此时着两个进程间的通信可以通过操作系统的“通道”来实现通信即可这样避免的做网络提高的数据的传输和接收的效率通道这里的通道可以理解为操作系统为这两个进程提供的一个先进先出的内存缓冲区Client发送一条JSON请求就往这个内存缓冲区添加一条JSON信息然后Server再从这个缓冲区获取这个JSON信息当Server处理完请求返回JSON信息时也会往缓冲区添加JSON信息然后Client那边也从缓冲区读即可三、远程通信方式Streamable HTTP当MCP Server以HTTP服务单独远程部署时此时如果Client想调用Server服务此时就需要走网络此时远程通信下MCP推荐的通信方式是Streamable HTTP传统HTTP的痛点传统标准短连接 HTTP 采用一问一答交互模型客户端发起单次请求服务端返回唯一对应响应完成交互后连接便会释放。且原生 HTTP 协议本身不支持服务端主动向客户端推送数据若要获取服务端实时变更、执行进度等信息客户端只能采用定时轮询的低效方案。 同时传统 REST 风格的接口设计思路会为每一类业务操作单独定义独立接口路径。而 MCP 场景存在高频双向交互、频繁工具调用、实时日志与进度推送等需求这套传统 HTTP 模式存在明显短板无法适配 MCP 的通信诉求。而SSE能实现服务端持续想客户端推送消息的功能但是不支持客户端随时发送新请求双方交互受限而Streamable HTTP就是为了解决传统HTTP的痛点其核心设计是用单个HTTP端点通常是/mcp同时处理请求和响应解释单个HTTP端点整个MCP远程通信不分功能拆分接口所有的交互动作全部复用的都是同一个路由地址一般是http://xxx:port/mcp这里的xxx是指IP地址port是指端口号此时不管你要进行什么操作不管是查询工作列表还是工具调用或者其他操作此时不需要另外设计一大堆新的接口这些全部统一请求到/mcp接口解释同时处理请求和响应同时处理请求和响应的核心就是建立一个双向流单个端点双向接收和发送消息底层的实现机制Client向/mcp发送一个post请求请求头带上流式标识建立一条持久HTTP长连接流1.客户端流的写入发送请求此时客户端这边就可以往这条HTTP连接流中写入JSON-RPC请求报文携带唯一id如查询资源、调用工具等源源不断地发送给服务端2.服务端流的读出和写入返回响应主动推送时间服务端这边则在同一个连接流上做两件事情1.接收到客户端的请求后处理请求返回对应id的JSON-RPC格式的响应2.此时客户端不需要主动发送新请求服务端可主动下发一些通知例如工具的执行进度、日志、实时事件推送等这样就方便让客户端清楚任务的执行进度了四、HTTP SSE 双端点通信方案HTTP SSE 双端点方案是 MCP 早期版本2024-11-05 规范采用的远程传输方案在 2025 年 3 月的规范更新里被标记为 deprecated仍然保留向后兼容。为什么要替换原因是架构上有一个小尴尬Client 向 Server 发请求要走 POST 端点Server 向 Client 推数据要走另一条 SSE 长连接端点同一个对话被拆成了两条通道。这带来的具体问题是状态管理复杂比如 Client POST 了一条消息之后网络突然断了那条消息到底被处理了没、SSE 流会不会推回结果Client 没有一个简单的办法判断出问题时排查链路很长。

相关新闻

YOLO注意力机制改进- 第32篇:TripletAttention三重注意力的空间交互

YOLO注意力机制改进- 第32篇:TripletAttention三重注意力的空间交互

一、引言 注意力机制在计算机视觉领域的成功,很大程度上源于其对特征空间的自适应建模能力。从最早的通道注意力(SENet),到通道与空间相结合的注意力(CBAM、BAM),再到后来的坐标注意力(CA),注意力机制的演进始终围绕着一个核心问题:如何以尽可能低的计算成本,捕获…

2026/6/28 5:23:22阅读更多 →
好客搜智搜GEO优化系统:AI搜索时代企业品牌可见性的新引擎

好客搜智搜GEO优化系统:AI搜索时代企业品牌可见性的新引擎

智搜GEO:AI搜索时代企业品牌可见性的新引擎 随着DeepSeek、豆包、文心一言、通义千问等AI大模型的普及,用户获取信息的方式正在发生根本性变革。数据显示,2025年以来,超过40%的互联网用户开始通过AI对话平台获取日常信息&#xf…

2026/6/28 5:23:22阅读更多 →
P11942 [KTSC 2025] 重塑矩阵 题解

P11942 [KTSC 2025] 重塑矩阵 题解

Solution看到 0101 矩阵,一个经典的转化是转化成二分图:建立 nn 个行点 R0∼Rn−1R0​∼Rn−1​ 与 nn 个列点 C0∼Cn−1C0​∼Cn−1​,Ai,jAi,j​ 表示一条连接 Ri,CjRi​,Cj​ 的边。在此基础上可以想到两种建图方法:Method 1建…

2026/6/28 5:23:22阅读更多 →
Akagi雀魂AI辅助工具:3步搭建你的私人麻将教练

Akagi雀魂AI辅助工具:3步搭建你的私人麻将教练

Akagi雀魂AI辅助工具:3步搭建你的私人麻将教练 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki, wi…

2026/6/28 7:03:29阅读更多 →
AIGC检测结果多少算安全?高校标准与应对策略全解析

AIGC检测结果多少算安全?高校标准与应对策略全解析

一句话答案 AIGC检测率的安全阈值因学校而异,多数高校要求本科≤30%、硕士≤20%、博士≤10%,提前检测并优化是确保论文通过的关键。## 正文### 一、什么是AIGC检测?AIGC(AI Generated Content)检测是指利用AI技术识别文…

2026/6/28 7:03:29阅读更多 →
不要把 Pydantic AI 当成 Agent 魔法层:先写清工具权限和输出合同

不要把 Pydantic AI 当成 Agent 魔法层:先写清工具权限和输出合同

不要把 Pydantic AI 当成 Agent 魔法层:先写清工具权限和输出合同 Pydantic AI 最容易被误读成“又一个 Python Agent 框架”。这个理解不算错,但太粗了。它真正适合的场景不是把一个 prompt 包成 Agent(...),而是把模型、工具、依赖注入、结…

2026/6/28 7:03:29阅读更多 →
2026 佛山高端宋式美学渠道哪家靠谱?实地调研供应商评测榜单

2026 佛山高端宋式美学渠道哪家靠谱?实地调研供应商评测榜单

在追求空间美学与文化底蕴的当下,高端宋式美学家具市场正经历快速发展。据《2026年中国高端家居美学市场白皮书》显示,佛山作为中国家具商贸之都,其宋式美学相关产业规模已突破百亿,年增长率保持在较高水平。然而,据调…

2026/6/28 7:03:29阅读更多 →
Paged.js革命性指南:用Web技术构建专业打印文档的完整实战

Paged.js革命性指南:用Web技术构建专业打印文档的完整实战

Paged.js革命性指南:用Web技术构建专业打印文档的完整实战 【免费下载链接】pagedjs Display paginated content in the browser and generate print books using web technology 项目地址: https://gitcode.com/gh_mirrors/pa/pagedjs 在Web技术日新月异的今…

2026/6/28 7:03:29阅读更多 →
实战指南:用XSwitch构建专业级前端开发环境

实战指南:用XSwitch构建专业级前端开发环境

实战指南:用XSwitch构建专业级前端开发环境 【免费下载链接】xswitch A Chrome Extension for redirecting/forwarding request urls 项目地址: https://gitcode.com/gh_mirrors/xs/xswitch XSwitch是一款基于Chrome浏览器原生API构建的专业级请求转发工具&a…

2026/6/28 6:58:29阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →