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 服务器) |
安全性 | 本质上安全 | 需要明确的安全措施 |
网络访问 | 不需要 | 必需 |
可扩展性 | 限于本地机器 | 可以分布在网络上 |
部署 | 每用户安装 | 集中安装 |
更新 | 分布式更新 | 集中式更新 |
资源使用 | 使用客户端资源 | 使用服务器资源 |
依赖 | 客户端依赖 | 服务器端依赖 |
- Author:二师兄
- URL:https://cloudesx.com/article/mcp-sse-studio
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!