Model Context Protocol (MCP) 支持两种主要的通信传输机制,用于 AI agent 与 MCP 服务器之间的数据交互:标准输入/输出 (STDIO) 和 服务器推送事件 (SSE)。选择合适的传输方式对于构建高效、安全的 AI 工具集成至关重要。
MCP 为 AI 应用创建了标准化的双向连接,使大语言模型 (LLM) 能够轻松连接各种数据源和工具。传输层通过 JSON-RPC 2.0 消息在客户端(如 Cursor)和服务器之间通信。
MCP 就像是 AI 时代的 USB-C 接口,为不同的 AI 模型和外部工具提供了一个通用的连接标准。
┌─────────────────────────────────────────────────────────┐
│ AI 客户端 (Client) │
│ (Cursor, Claude Desktop, etc.) │
└────────────────────┬────────────────────────────────────┘
│
│ MCP Protocol (JSON-RPC)
│
┌────────────────────▼────────────────────────────────────┐
│ MCP 服务器 (Server) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Tools │ │ Resources │ │ Prompts │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────┬────────────────────────────────────┘
│
│ API Calls / System Access
│
┌────────────────────▼────────────────────────────────────┐
│ 外部系统/服务 (External Systems) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │ 文件系统 │ │ 数据库 │ │ API服务 │ │ 其他工具 ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
└─────────────────────────────────────────────────────────┘
(MCP 架构概览)
STDIO 传输在本地机器上运行,通过标准输入/输出流进行通信。这是最简单、最高效的连接方式。
客户端 MCP Server
| |
|<---- JSON消息 ----->| (via STDIN)
| | (processes request)
|<---- JSON消息 ------| (via STDOUT)
| |
服务器推送事件 (SSE) 传输通常用于远程服务器,通过 HTTP/HTTPS 进行通信。
Client Server
| |
|---- HTTP GET /events ----------->| (建立 SSE 连接)
|<---- SSE event stream -----------| (持久连接)
| |
|---- HTTP POST /message --------->| (客户端请求)
|<---- SSE event with response ----| (服务器响应)
| |
在选择传输方式时,可以参考以下对比表:
| 考量维度 | STDIO (本地) | SSE (远程) |
|---|---|---|
| 部署位置 | 仅本地机器 | 本地或远程服务器 |
| 客户端支持 | 单客户端 (1对1) | 多客户端并发 (1对多) |
| 性能延迟 | 极低延迟 | 受网络环境影响 |
| 安全性 | 高 (本地进程隔离) | 需配置网络安全/认证 |
| 配置复杂度 | 简单 (无需配置) | 需配置 HTTP 服务器 |
| 典型用途 | 本地文件/命令行工具 | 数据库/API网关/共享服务 |
如果你只是想在自己的电脑上使用一些脚本或文件工具,STDIO 是首选。如果你需要为团队提供一个共享的数据库查询工具,或者工具运行在云端,那么 SSE 是必须的。
以Cursor为例:
在Cursor中配置MCP Server时,选择"STDIO"传输方式,则Cursor会以子进程方式启动MCP Server。(参考:Cursor如何配置MCP?)
STDIO 服务器随 Cursor 启动而启动,生命周期由 Cursor 管理。这意味着每台用户机器都需要安装服务器可执行文件和相关依赖。这种模式适合个人开发者工具。
SSE 服务器作为独立服务持续运行,只需在服务器上安装一次,即可供多用户访问。更新和维护都在服务器端进行,对客户端透明。这种模式适合企业级应用集成。
某些高级场景可采用混合方案:例如,本地 STDIO 服务器作为网关,处理本地操作的同时,代理连接远程 SSE 服务器以获取云端数据。