# MCP 传输机制

模型上下文协议 (MCP) 支持 Cline-胜算云增强版和 MCP 服务器之间通信的两种主要传输机制：标准输入/输出 (STDIO) 和服务器发送事件 (SSE)。每种机制都有其独特的特性、优势和用例。

#### STDIO[ 传输](https://docs.roocode.com/features/mcp/server-transports#stdio-transport) <a href="#stdio-transport" id="stdio-transport"></a>

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

**STDIO 传输的**[**工作**](https://docs.roocode.com/features/mcp/server-transports#how-stdio-transport-works)**原理**

1. 客户端（Cline）生成一个 MCP 服务器作为子进程
2. 通信通过进程流进行：客户端写入服务器的 STDIN，服务器响应 STDOUT
3. 每条消息都由换行符分隔
4. 消息格式为 JSON-RPC 2.0

复制

```
Client                    Server
  |                         |
  |<---- JSON message ----->| (via STDIN)
  |                         | (processes request)
  |<---- JSON message ------| (via STDOUT)
  |                         |
```

**STDIO**[ **特性**](https://docs.roocode.com/features/mcp/server-transports#stdio-characteristics)

* **位置** ：与 Cline 在同一台机器上运行
* **性能** ：非常低的延迟和开销（不涉及网络堆栈）
* **简单** ：无需网络配置即可直接进行进程通信
* **关系** ：客户端与服务器之间的一对一关系
* **安全性** ：由于不存在网络暴露，因此本质上更安全

**何时使用** [**STDIO**](https://docs.roocode.com/features/mcp/server-transports#when-to-use-stdio)

STDIO 传输非常适合：

* 在同一台机器上运行的本地集成和工具
* 安全敏感操作
* 低延迟要求
* 单客户端场景（每个服务器一个 Cline 实例）
* 命令行工具或 IDE 扩展

**STDIO 实现**[**示例**](https://docs.roocode.com/features/mcp/server-transports#stdio-implementation-example)

复制

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

const server = new Server({name: 'local-server', version: '1.0.0'});
// Register tools...

// Use STDIO transport
const transport = new StdioServerTransport(server);
transport.listen();
```

#### 上交所[运输](https://docs.roocode.com/features/mcp/server-transports#sse-transport) <a href="#sse-transport" id="sse-transport"></a>

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

**SSE 传输的**[**工作**](https://docs.roocode.com/features/mcp/server-transports#how-sse-transport-works)**原理**

1. 客户端（Cline）通过 HTTP GET 请求连接到服务器的 SSE 端点
2. 这将建立一个持久连接，服务器可以将事件推送到客户端
3. 对于客户端到服务器的通信，客户端向单独的端点发出 HTTP POST 请求
4. 沟通通过两个渠道进行：
   * 事件流（GET）：服务器到客户端的更新
   * 消息端点（POST）：客户端到服务器的请求

复制

```
Client                             Server
  |                                  |
  |---- HTTP GET /events ----------->| (establish SSE connection)
  |<---- SSE event stream -----------| (persistent connection)
  |                                  |
  |---- HTTP POST /message --------->| (client request)
  |<---- SSE event with response ----| (server response)
  |                                  |
```

**上交所**[**特征**](https://docs.roocode.com/features/mcp/server-transports#sse-characteristics)

* **远程访问** ：可以托管在与 Cline 实例不同的机器上
* **可扩展性** ：可以同时处理多个客户端连接
* **协议** ：通过标准 HTTP 工作（无需特殊协议）
* **持久性** ：维护服务器到客户端消息的持久连接
* **身份验证** ：可以使用标准 HTTP 身份验证机制

**何时使用** [**SSE**](https://docs.roocode.com/features/mcp/server-transports#when-to-use-sse)

SSE 传输更适合于：

* 跨网络远程访问
* 多客户端场景
* 公共服务
* 许多用户需要访问的集中式工具
* 与 Web 服务集成

**SSE 实施**[**示例**](https://docs.roocode.com/features/mcp/server-transports#sse-implementation-example)

复制

```
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
import express from 'express';

const app = express();
const server = new Server({name: 'remote-server', version: '1.0.0'});
// Register tools...

// Use SSE transport
const transport = new SSEServerTransport(server);
app.use('/mcp', transport.requestHandler());
app.listen(3000, () => {
  console.log('MCP server listening on port 3000');
});
```

#### 本地与托管：部署[方面](https://docs.roocode.com/features/mcp/server-transports#local-vs-hosted-deployment-aspects) <a href="#local-vs-hosted-deployment-aspects" id="local-vs-hosted-deployment-aspects"></a>

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

**STDIO：本地部署**[**模型**](https://docs.roocode.com/features/mcp/server-transports#stdio-local-deployment-model)

STDIO 服务器与 Cline 在同一台机器上本地运行，这有几个重要的含义：

* **安装** ：必须在每个用户的机器上安装服务器可执行文件
* **发行版** ：您需要为不同的操作系统提供安装包
* **更新** ：每个实例必须单独更新
* **资源** ：使用本地机器的 CPU、内存和磁盘
* **访问控制** ：依赖于本地机器的文件系统权限
* **集成** ：轻松与本地系统资源（文件、流程）集成
* **执行** ：以 Cline 启动和停止（子进程生命周期）
* **依赖项** ：任何依赖项都必须安装在用户的机器上

实际示例

使用 STDIO 的本地文件搜索工具将：

* 在用户的机器上运行
* 直接访问本地文件系统
* 在需要时由 Cline 启动
* 无需网络配置
* 需要与 Cline 一起安装或通过包管理器安装

**SSE：托管部署**[**模型**](https://docs.roocode.com/features/mcp/server-transports#sse-hosted-deployment-model)

SSE 服务器可以部署到远程服务器并通过网络访问：

* **安装** ：在服务器上安装一次，可供许多用户访问
* **分布** ：单一部署服务于多个客户端
* **更新** ：集中更新立即影响所有用户
* **资源** ：使用服务器资源，而不是本地机器资源
* **访问控制** ：通过身份验证和授权系统进行管理
* **集成** ：与用户特定资源的更复杂的集成
* **执行** ：作为独立服务运行（通常持续运行）
* **依赖关系** ：在服务器上管理，而不是在用户机器上

实际示例

使用 SSE 的数据库查询工具将：

* 在中央服务器上运行
* 使用服务器端凭据连接到数据库
* 持续可供多个用户使用
* 需要适当的网络安全配置
* 使用容器或云技术进行部署

**混合**[**方法**](https://docs.roocode.com/features/mcp/server-transports#hybrid-approaches)

一些场景受益于混合方法：

1. **具有网络访问的 STDIO** ：充当远程服务代理的本地 STDIO 服务器
2. **带有本地命令的 SSE** ：可以通过回调触发客户端计算机上的操作的远程 SSE 服务器
3. **网关模式** ：用于本地操作的 STDIO 服务器连接到 SSE 服务器以实现专门功能

#### 在 STDIO 和 [SSE](https://docs.roocode.com/features/mcp/server-transports#choosing-between-stdio-and-sse) 之间进行选择 <a href="#choosing-between-stdio-and-sse" id="choosing-between-stdio-and-sse"></a>

#### &#x20;<a href="#choosing-between-stdio-and-sse" id="choosing-between-stdio-and-sse"></a>

| 考虑        | 标准输出   | 上交所              |
| --------- | ------ | ---------------- |
| **地点**    | 仅限本地机器 | 本地或远程            |
| **客户**    | 单一客户端  | 多个客户端            |
| **表现**    | 更低的延迟  | 更高的延迟（网络开销）      |
| **设置复杂性** | 更简单    | 更复杂（需要 HTTP 服务器） |
| **安全**    |        |                  |
|           |        |                  |
|           |        |                  |

考虑标准输出上交所

**地点**

仅限本地机器

本地或远程

**客户**

单一客户端

多个客户端

**表现**

更低的延迟

更高的延迟（网络开销）

**设置复杂性**

更简单

更复杂（需要 HTTP 服务器）

**安全**

本质安全

需要明确的安全措施

**网络访问**

不需要

必需的

**可扩展性**

限于本地机器

可以跨网络分发

**部署**

按用户安装

集中安装

**更新**

分布式更新

集中更新

**资源使用情况**

使用客户资源

使用服务器资源

**依赖项**

客户端依赖项

服务器端依赖项

#### 在 Cline-胜算云增强版 中配置传输 <a href="#configuring-transports-in-roo-code" id="configuring-transports-in-roo-code"></a>

有关在 Cline-胜算云增强版 中配置 STDIO 和 SSE 传输的详细信息（包括示例），[ 请参阅配置 MCP 服务器 ](https://docs.cline.bot/mcp-servers/configuring-mcp-servers)。

<br>
