Lazy loaded image
MCP 传输机制 Stdio 与 SSE(译文)
Words 1510Read Time 4 min
2025-1-20
2025-4-4
type
status
date
slug
summary
tags
category
icon
password
Model Context Protocol (MCP) 支持两种主要的传输机制,用于 Cline 和 MCP 服务器之间的通信:标准输入/输出 (STDIO) 和服务器发送事件 (SSE)。每种机制都有其独特的特点、优势和适用场景。

STDIO 传输

STDIO 传输在您的本地机器上运行,并通过标准输入/输出流进行通信。

STDIO 传输的工作原理

  • 客户端 (Cline) 将 MCP 服务器作为子进程启动
  • 通信通过进程流进行:客户端写入服务器的 STDIN,服务器通过 STDOUT 响应
  • 每条消息以换行符分隔
  • 消息格式为 JSON-RPC 2.0

STDIO 特性

  • 本地性:与 Cline 在同一台机器上运行
  • 性能:非常低的延迟和开销(不涉及网络栈)
  • 简单性:无需网络配置的直接进程通信
  • 关系:客户端和服务器之间是一对一关系
  • 安全性:由于没有网络暴露,因此本质上更安全

何时使用 STDIO

STDIO 传输适用于:
  • 在同一机器上运行的本地集成和工具
  • 安全敏感操作
  • 低延迟需求
  • 单客户端场景(每个服务器一个 Cline 实例)
  • 命令行工具或 IDE 扩展

STDIO 实现示例

SSE 传输

服务器发送事件 (SSE) 传输在远程服务器上运行,并通过 HTTP/HTTPS 进行通信。

SSE 传输的工作原理

  • 客户端 (Cline) 通过 HTTP GET 请求连接到服务器的 SSE 端点
  • 这建立了一个持久连接,服务器可以通过该连接向客户端推送事件
  • 对于客户端到服务器的通信,客户端向单独的端点发出 HTTP POST 请求
  • 通信通过两个通道进行:
    • 事件流 (GET):服务器到客户端的更新
    • 消息端点 (POST):客户端到服务器的请求

SSE 特性

  • 远程访问:可以托管在与您的 Cline 实例不同的机器上
  • 可扩展性:可以同时处理多个客户端连接
  • 协议:通过标准 HTTP 工作(不需要特殊协议)
  • 持久性:为服务器到客户端的消息维持持久连接
  • 认证:可以使用标准 HTTP 认证机制

何时使用 SSE

SSE 传输更适合:
  • 跨网络的远程访问
  • 多客户端场景
  • 公共服务
  • 许多用户需要访问的集中式工具
  • 与 Web 服务集成

SSE 实现示例

本地与托管:部署方面

STDIO 和 SSE 传输之间的选择直接影响您将如何部署和管理 MCP 服务器。

STDIO:本地部署模型

STDIO 服务器在与 Cline 相同的机器上本地运行,这有几个重要的影响:
  • 安装:服务器可执行文件必须安装在每个用户的机器上
  • 分发:您需要为不同的操作系统提供安装包
  • 更新:每个实例必须单独更新
  • 资源:使用本地机器的 CPU、内存和磁盘
  • 访问控制:依赖本地机器的文件系统权限
  • 集成:与本地系统资源(文件、进程)轻松集成
  • 执行:随 Cline 启动和停止(子进程生命周期)
  • 依赖:任何依赖项都必须安装在用户的机器上

实际示例

使用 STDIO 的本地文件搜索工具将:
  • 在用户的机器上运行
  • 直接访问本地文件系统
  • 在 Cline 需要时启动
  • 不需要网络配置
  • 需要与 Cline 一起安装或通过包管理器安装

SSE:托管部署模型

SSE 服务器可以部署到远程服务器上,并通过网络访问:
  • 安装:在服务器上安装一次,由多个用户访问
  • 分发:单一部署服务于多个客户端
  • 更新:集中更新立即影响所有用户
  • 资源:使用服务器资源,而非本地机器资源
  • 访问控制:通过认证和授权系统管理
  • 集成:与用户特定资源的集成更复杂
  • 执行:作为独立服务运行(通常是持续的)
  • 依赖:在服务器上管理,而非用户机器上

实际示例

使用 SSE 的数据库查询工具将:
  • 在中央服务器上运行
  • 使用服务器端凭据连接到数据库
  • 持续可用于多个用户
  • 需要适当的网络安全配置
  • 使用容器或云技术部署

混合方法

某些场景受益于混合方法:
  • 具有网络访问的 STDIO:充当远程服务代理的本地 STDIO 服务器
  • 具有本地命令的 SSE:可以通过回调触发客户端机器上操作的远程 SSE 服务器
  • 网关模式:用于本地操作的 STDIO 服务器,连接到用于专门功能的 SSE 服务器

在 STDIO 和 SSE 之间选择

考虑因素
STDIO
SSE
位置
仅本地机器
本地或远程
客户端
单客户端
多客户端
性能
更低延迟
更高延迟(网络开销)
设置复杂性
更简单
更复杂(需要 HTTP 服务器)
安全性
本质上安全
需要明确的安全措施
网络访问
不需要
必需
可扩展性
限于本地机器
可以分布在网络上
部署
每用户安装
集中安装
更新
分布式更新
集中式更新
资源使用
使用客户端资源
使用服务器资源
依赖
客户端依赖
服务器端依赖
 
上一篇
Supabase 宣布推出自建 MCP Server
下一篇
Puppeteer MCP 与 Playwright MCP:深度对比与选择指南