AI开发-MCP简介
前言
MCP(Model Context Protocol) 是由 Anthropic 于 2024 年 11 月推出的开放协议。
它定义了 LLM 与外部系统(如数据库、API、文件系统)交互的标准方式。
类比:MCP = AI 领域的 USB-C 接口 —— 统一插拔,即插即用。
协议类型
MCP(Model Context Protocol,模型上下文协议)目前支持三种主要的通信协议类型:stdio、HTTP+SSE(已弃用)以及Streamable HTTP。
这三者分别适用于不同的运行环境和交互需求,体现了MCP在本地开发、远程部署与流式交互等多场景下的灵活性和演进方向。
stdio
stdio(标准输入/输出)
stdio 是最基础、最轻量级的通信方式,适用于本地进程间通信。它通过操作系统的标准输入(stdin)和标准输出(stdout)传递 JSON-RPC 格式的消息,无需网络配置,具有极低延迟和高安全性。
- 工作原理:客户端将 MCP 服务器作为子进程启动,通过 stdin 发送请求,从 stdout 读取响应。
- 适用场景:
- 本地插件开发(如 VS Code、IntelliJ 中的工具集成)
- 快速调试与脚本自动化
- 容器内部通信
- 优点:零网络依赖、实现简单、安全高效
- 缺点:仅限本地使用,无法跨网络、不支持多实例并发
HTTP + SSE(已弃用)
HTTP + SSE(Server-Sent Events)——已弃用
早期 MCP 版本(如 2024 年 11 月发布)引入了 HTTP + SSE 作为远程通信方案。
该模式通过两个 HTTP 接口协同工作:
- GET /sse:建立长连接,用于服务端向客户端推送事件流(
text/event-stream) - POST /message:客户端向服务端发送请求
- 特点:
- 支持流式输出(适合 LLM 逐步生成)
- 单向通信(服务端 → 客户端),客户端需另开 POST 请求
- 浏览器原生支持自动重连
- 问题:
- 连接易断且不支持可靠重连
- 服务端需维持大量长连接,资源消耗大
- 仅单向通信,架构复杂
- 状态:已于 2025 年 3 月 26 日被官方弃用,仅作为兼容选项保留
Streamable HTTP
Streamable HTTP(推荐标准)
为解决 HTTP+SSE 的缺陷,MCP 在 2025 年 3 月 26 日正式引入 Streamable HTTP,并将其确立为官方推荐的标准网络传输协议。
核心特性:
单一 HTTP 端点(如
/mcp),同时支持 POST(请求)和 GET(SSE 流)双模式响应:
- 若客户端
Accept: application/json→ 返回一次性 JSON 响应
- 若客户端
若
Accept: text/event-stream→ 升级为 SSE 流式响应会话管理:通过
Mcp-Session-Id头实现上下文绑定与断线恢复事件 ID 与重放机制:支持
Last-Event-ID实现消息续传安全增强:内置 DNS 重绑定防护(验证 Host/Origin 头)
适用场景:
- 远程 MCP 服务部署
- 多轮对话、长任务执行(如文件处理、数据库查询)
- 不稳定网络环境下的可靠通信
- 高并发分布式系统
优势:
- 兼容传统 JSON API 与流式 SSE
- 无状态设计,易于水平扩展
- 支持断线重连与会话恢复
- 架构简洁(单一端点替代旧版双接口)
值得注意的是,在 Streamable HTTP 中,SSE 不再是独立的传输协议,而是其内部的一种可选响应格式。这意味着“SSE”从“传输层”降级为“表现层”技术。
总结对比
| 协议类型 | 是否标准 | 是否支持流式 | 是否长连接 | 适用场景 | 当前状态 |
|---|---|---|---|---|---|
| stdio | ✅ | ✅ | ✅(进程内) | 本地开发、插件、调试 | 活跃支持 |
| HTTP + SSE | ❌ | ✅ | ✅ | 早期远程服务 | 已弃用 |
| Streamable HTTP | ✅ | ✅(可选) | ✅(按需) | 远程部署、生产环境、高可靠交互 | 官方推荐标准 |
因此,MCP 当前正式支持的协议类型为 stdio 和 Streamable HTTP,而 HTTP+SSE 仅作为历史兼容方案存在。开发者应优先采用 Streamable HTTP 构建远程 MCP 服务,以确保与未来版本的兼容性和功能完整性。
测试
1 | npx -y yapi-auto-mcp --stdio --yapi-base-url=https://api.psvmc.cn.com --yapi-token=70:323b0aff5664acb2e7cafec40eecdf8c8e763ad8e413a00a103835863e8888888 |
之所以“直接能调用”,是因为 npx 是 Node.js 生态中的一个工具,它会自动下载并临时执行指定的 npm 包(如果本地未安装),而 yapi-auto-mcp 正是一个发布在 npm 上的、符合 MCP(Model Context Protocol)规范的工具包。