)
MCP 官方规范stdio 为本地服务端默认通信载体权威原文依据一、规范原文结论MCP 官方标准文档明确两点核心规则Model Cont...协议内置两套标准传输层stdio标准输入输出、Streamable HTTPSSE 流式 HTTPstdio 是本地 MCP Server 的默认传输载体官方强制要求Clients SHOULD support stdio whenever possible客户端应尽可能兼容 stdio所有官方 SDKTS/Python启动服务时不指定 transport 则自动使用 stdio。二、stdio 传输完整规范约束必须遵守1. 进程模型客户端Claude Desktop、AI IDE将 MCP Server 作为本地子进程拉起依靠操作系统管道实现进程间双向通信无网络端口、无 TCP 开销Model Cont...。2. 数据流分工硬性强制stdin(0)客户端 → 服务端只传换行分隔的 JSON-RPC 2.0 消息stdout(1)服务端 → 客户端只能输出合法 MCP 报文禁止打印日志、print 调试信息stderr(2)独立日志通道打印日志、报错、调试输出不干扰协议报文。3. 消息帧规则每条 JSON 消息以换行\n分割JSON 内部不能自带换行部分 SDK 会追加Content-Length头解决粘包问题。三、为什么 stdio 是默认载体设计定位轻量化零配置无需开放端口、防火墙、域名、鉴权开箱即用适配本地文件、本地数据库、本地脚本工具场景安全隔离进程隔离通信仅本机可访问不会暴露本地资源到局域网 / 公网跨平台兼容Windows/macOS/Linux 全平台原生支持 stdin/stdout命令行程序天然适配官方工具链首选Claude Desktop、MCP Inspector、官方示例全部默认 stdioHTTP-SSE 仅用于远程跨机器部署场景。四、两种传输载体对比表格传输方式默认与否适用场景通信方式stdio✅ 本地服务默认本机本地工具、CLI、桌面 AI 客户端子进程管道单客户端独占Streamable HTTP(SSE)❌ 远程专用服务器部署、多客户端、跨网络访问HTTP 长连接支持多客户端并发五、代码佐证SDK 默认行为TypeScripttypescript运行// 不指定transport默认StdioServerTransport const server new Server({ name: demo, version: 1.0 }); server.connect(new StdioServerTransport());Pythonpython运行# 内置run()默认走stdio传输 server Server(demo-server) server.run()六、开发常见踩坑点源于 stdio 规范限制调试时print()会输出到 stdout破坏 JSON 报文导致客户端解析报错日志统一用stderr不能在程序启动时打印 banner、版本提示、欢迎文字stdio 服务同一时间只能被一个客户端连接独占子进程多客户端远程场景必须切换 HTTP-SSE。