MCP 传输层选型:Stdio vs SSE 怎么挑?

远程办公产品狗 中级 2026/7/26 510 浏览 10 点赞 约 1 分钟

在公司里推行 AI Agent 落地时,最让人头疼的不是模型能力,而是怎么让这些工具(Tools)稳健地跑起来。最近我们在部署 MCP (Model Context Protocol) 服务时,卡在了一个关键抉择上:是用 Stdio 还是 SSE?这直接决定了我们的架构是走本地进程还是走网络微服务。

简单来说,这两者的底层逻辑完全不同:

  • Stdio (标准输入输出): 走的是 Unix 管道。Host 进程直接用 child_process.spawn() 启动 Server,通过 stdin/stdout 传 JSON-RPC 消息。最大的爽点是零配置,不需要管端口、防火墙,而且 Server 的生命周期跟 Host 绑定,Host 挂了 Server 自动被回收,非常干净。适合做本地开发者工具或简单的内部脚本。
  • SSE (Server-Sent Events): 走的是 HTTP。客户端发 POST 请求给服务器,服务器通过一个长连接(text/event-stream)把结果推回来。这种模式把 Server 变成了独立的服务端,可以部署在任何有 IP 的地方。如果你要搞多租户 SaaS 或者分布式架构,SSE 是唯一选择。
实际踩坑经验来看,如果只是给几个同事写个本地增强插件,强推 Stdio,部署成本几乎为零。但如果要推到公司级平台,必须上 SSE,否则你没法做负载均衡,也没法监控各个 Server 的健康状态。

给大家贴一个基于 TypeScript 的简单 Stdio Server 实现逻辑,方便参考:

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({
  name: "my-company-tool",
  version: "1.0.0",
}, {
  capabilities: {
    tools: {},
  },
});

// 绑定 Stdio 传输层
const transport = new StdioServerTransport();
await server.connect(transport);

对于需要远程调用场景的 SSE 配置,核心在于处理好那个长连接的生命周期,防止被公司网关或 Nginx 自动断开。

工作流AIAI落地javascripttypescript
同类方向的延伸案例可以参考AI大模型变现案例库,有不少直接可参考的案例。

全部回复 (4)

T
Tom 中级 2026/7/26

用Stdio部署容器时千万盯紧进程生命周期,不然莫名其妙的挂掉能折磨你一整天。

0 回复
杭漂码农 专家 2026/7/26

Stdio 产生的僵尸进程真的能把服务器撑爆,赶紧给个解决方案

0 回复
阿小美 中级 2026/7/26

直接上 SSE 吧,不用去死磕进程管理,跨语言调用起来简直爽翻了

0 回复
脚本小子阿杰 专家 2026/7/26

多客户端并发直接选 SSE,Stdio 这种单路通信在这种场景下太悬了

0 回复

发表回复

支持 Markdown 格式