Lazy loaded image
技术分享
MCP 中的 stdio 和 SSE 这两种传输方式是什么?
Words 667Read Time 2 min
2025-7-10
2025-7-10
type
status
date
slug
summary
tags
category
icon
password

stdio(标准输入/输出)

工作原理

stdio 使用进程的标准输入(stdin)和标准输出(stdout)进行通信:
  • 客户端→服务器:通过 stdin 发送 JSON-RPC 请求
  • 服务器→客户端:通过 stdout 返回 JSON-RPC 响应
  • 错误信息:通过 stderr 输出,不影响正常通信

通信流程

特点

  • 同步通信:请求-响应模式,一问一答
  • 进程隔离:客户端和服务器运行在独立进程中
  • 简单可靠:使用操作系统级别的管道通信
  • 跨语言支持:任何能读写标准流的语言都能实现

实现示例

SSE(Server-Sent Events)

工作原理

SSE 是基于 HTTP 的单向通信协议:
  • 建立连接:客户端通过 HTTP 请求建立持久连接
  • 服务器推送:服务器可以持续向客户端推送事件
  • 文本协议:使用纯文本格式,每个事件以 data: 开头

通信流程

SSE 消息格式

特点

  • 异步通信:支持服务器主动推送
  • 单向流:仅服务器到客户端(客户端需要通过其他方式发送请求)
  • 自动重连:连接断开后浏览器会自动重连
  • 实时性好:适合需要实时更新的场景

实现示例

对比与选择

stdio 适用场景

  • 本地工具和CLI应用
  • 需要双向同步通信
  • 简单的请求-响应模式
  • 进程级别的隔离需求

SSE 适用场景

  • Web 应用集成
  • 需要服务器推送能力
  • 实时数据流和通知
  • 长时间运行的任务反馈

在 MCP 中的应用

两种方式都能完整支持 MCP 的三种核心能力(Tools、Resources、Prompts),选择哪种主要取决于你的应用架构和具体需求。
 
上一篇
AI编程分享
下一篇
如何解决突然本地配置的MCP工具都不可用了?