第一次读到 MCP 服务器能用 "stdio" 或 "SSE" 的时候,我以为是完全不同的技术,每一种都得花一个周末去学。后来我才明白,传输方式只是把你的 JSON 消息从服务器搬到客户端的那根管道。消息本身在哪都一样。下面这套思路帮我彻底想通了。

传输方式只是管道

协议规定了你说什么,传输方式规定了这句话怎么物理地传过去。想象同一封信走邮政和走快递:字一模一样,只是送达方式不同。对 MCP 来说,最常见的两种管道是本地进程用的 stdio 和跑在别处的 HTTP 系。JSON-RPC 对话 无论走哪根管道看起来都一样。

stdio:本地首选

用 stdio 时,客户端在同一台机器上把你的服务器当子进程启动,从标准输入灌消息、从标准输出读结果。没有网络,所以没有端口、没有 URL、几乎没什么能配错。这正是你往配置文件里粘一段 command 和 args 时得到的传输方式。配置 JSON 指南 展示了这些字段。

HTTP 和 SSE:远程选项

当服务器在另一台机器上时,stdio 就不行了,因为没有共享进程。这时客户端通过 HTTP 对话。SSE(Server-Sent Events,服务器推送事件)是一种流式形态,让远程服务器能往等待的客户端推响应和通知。实际取舍很朴素:stdio 给"跑在我笔记本上"的,HTTP 或 SSE 给"跑在云上"的。

快速对比

传输方式服务器跑在哪里典型配置
stdio本机配置里的 command + args
HTTP远程服务器或云一个 URL 端点
SSE远程、流式一个带长连接的 URL

不是每个客户端都支持每种传输方式,所以很多时候的决定因素其实是"我的助手支持哪种",而不是"技术哪个更好"。

该选哪个

从本地开始。对你的第一个服务器,stdio 直接去掉了网络这一层,让你能在普通终端里调试。等工具跑通、你想分享时,再迁到 HTTP,让别人的助手能通过 URL 访问。照着这篇 自己搭建教程,stdio 是自然的起步,也正好搭配 Claude Desktop 或 Cursor 这类本地客户端。

这对真服务器意味着什么

IPIPAI 的 MCP 服务器暴露了 lookup_ip、rate_ip_node 等工具,可以远程访问,所以云端和桌面助手都能用。你可以在 /mcp-tools.json 浏览这个实时目录。如果连接失败,元凶往往是传输方式不匹配,而这正是 排查清单 针对的情况。

收个尾

传输方式就是管道。stdio 让服务器待在本机、零网络;HTTP 和 SSE 让它住在任何能被 URL 访问的地方。让传输方式匹配"服务器跑在哪"和"客户端支持啥","哪个更好"的问题基本就消失了。想继续深入,IPIPAI 博客 上有更多周边内容。

MCP 传输mcp stdiomcp httpmcp sseMCP 远程服务器模型上下文协议传输