MCP Servers
MCP 传输机制
mcp-transport-mechanisms 说明
MCP 传输机制
模型上下文协议(MCP)支持两种主要的通信传输机制,用于 Cline 与 MCP 服务器之间的数据交互:标准输入/输出(STDIO)和服务器推送事件(SSE)。每种方式都有其独特特性、优势和适用场景。
STDIO 传输
STDIO 传输在本地机器上运行,通过标准输入/输出流进行通信。
STDIO 工作原理
- 客户端(Cline)以子进程方式启动 MCP 服务器
- 通信通过进程流进行:客户端写入服务器的 STDIN,服务器通过 STDOUT 响应
- 每条消息以换行符分隔
- 消息格式为 JSON-RPC 2.0
STDIO 特性
- 本地性:与 Cline 运行在同一台机器上
- 高性能:极低延迟和开销(无网络栈)
- 简洁性:无需网络配置,进程间直接通信
- 一对一关系:每个服务器仅服务一个客户端
- 安全性:无网络暴露,天然更安全
适用场景
STDIO 传输适合以下场景:
- 本地集成和工具(与 Cline 同机运行)
- 对安全性要求高的操作
- 低延迟需求
- 单客户端场景(每个服务器仅服务一个 Cline 实例)
- 命令行工具或 IDE 扩展
STDIO 实现示例
SSE 传输
服务器推送事件(SSE)传输在远程服务器上运行,通过 HTTP/HTTPS 进行通信。
SSE 工作原理
- 客户端(Cline)通过 HTTP GET 请求连接服务器的 SSE 端点
- 建立持久连接,服务器可持续向客户端推送事件
- 客户端向服务器发送消息时,通过 HTTP POST 请求到另一个端点
- 通信分为两条通道:
- 事件流(GET):服务器到客户端的更新
- 消息端点(POST):客户端到服务器的请求
SSE 特性
- 远程访问:可部署在与 Cline 不同的机器上
- 可扩展性:支持多个客户端并发连接
- 协议标准:基于标准 HTTP,无需特殊协议
- 持久连接:服务器到客户端消息为持久连接
- 认证支持:可用标准 HTTP 认证机制
适用场景
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 服务器 |
安全性 | 天然安全 | 需额外安全措施 |
网络需求 | 无需 | 必须 |
可扩展性 | 受限于本地 | 可跨网络分布 |
部署方式 | 每用户单独安装 | 集中式安装 |
更新方式 | 分布式更新 | 集中式更新 |
资源占用 | 占用客户端资源 | 占用服务器资源 |
依赖管理 | 客户端依赖 | 服务器端依赖 |
在 Cline 中配置传输方式
关于在 Cline 中配置 STDIO 和 SSE 传输方式的详细信息与示例,请参见:配置 MCP 服务器。