三种传输模式全面解读
上一篇讲的JSON-RPC解决了"说什么话"的问题——统一的数据格式。但光有话术还不够,还需要解决"怎么把话传过去"的问题。
这就像人类通讯方式的演进:
- 最早是面对面交流:两个人坐一起,说话直接听到
- 后来有了电话:隔着距离也能通话,但一次只能和一个人聊
- 再后来有了即时通讯软件:不仅能通话,还能发消息、发文件、建群聊
MCP的三种传输模式,正好对应这三个阶段的通讯方式。
Stdio模式:面对面的高效协作
工作原理
Stdio是Standard Input/Output的缩写,就是标准输入输出。这是操作系统最基础的进程间通信方式。
还记得你在命令行里运行程序的场景吗?
$ echo "Hello World"
Hello World
你输入的命令是"标准输入"(stdin),程序打印出来的结果是"标准输出"(stdout)。
MCP的Stdio模式就是利用这个原理:
- Client启动一个Server进程(比如运行一个jar包)
- Client往Server的stdin写入JSON-RPC请求
- Server从stdin读取请求,处理后把JSON-RPC响应写入stdout
- Client从Server的stdout读取响应
整个过程不经过网络,数据直接在两个进程之间的管道里流转。
用同一办公室协作来理解
想象两个同事坐在同一个办公室里工作:
传话筒场景:小李需要小王帮忙查个数据
特点是:
- 距离近:就在同一个房间,传递便签很快
- 一对一:小李只能跟坐旁边的小王协作,不能跟其他办公室的人
- 生命周期绑定:小王下班了,小李就没人可以请教了
Stdio 模式的核心特征
Stdio 模式数据通过进程管道直接传输,不经过网络。一个 Server 进程只能服务一个 Client,且 Server 的生命周期与 Client 进程绑定。这使它成为本地工具(如 Claude Desktop、Cursor 插件)的首选方案。
配置方式
在支持MCP的客户端(比如Cursor)里配置Stdio类型的Server:
{
"mcpServers": {
"office-tools": {
"command": "java",
"args": ["-jar", "/path/to/mcp-server.jar"]
}
}
}
Client启动时会自动运行这个命令,启动Server进程。
优势与局限
| 维度 | 说明 |
|---|---|
| 延迟 | 极低,不经过网络 |
| 安全性 | 天然安全,数据不出本机 |
| 配置复杂度 | 简单,不需要网络配置 |
| 部署方式 | 必须和Client在同一台机器 |
| 多Client支持 | 不支持,一个Server进程只能服务一个Client |
| 适用场景 | 本地开发、个人工具、Claude Desktop/Cursor插件 |
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:超级AI智能体、黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的详细文档
- 讲解视频:超级AI智能体、黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
