AI开发-MCP简介

前言

MCP(Model Context Protocol) 是由 Anthropic 于 2024 年 11 月推出的开放协议。

它定义了 LLM 与外部系统(如数据库、API、文件系统)交互的标准方式。

类比:MCP = AI 领域的 USB-C 接口 —— 统一插拔,即插即用。

协议类型

MCP(Model Context Protocol,模型上下文协议)目前支持三种主要的通信协议类型:stdioHTTP+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)规范的工具包。