Skip to content

1.2 MCP 的前世今生——从 LSP 灵感到开放标准

小周发现了 MCP,但他很好奇:这个协议是怎么来的?为什么是 Anthropic 发起的?


MCP 诞生前夜

在 MCP 出现之前,AI 工具集成经历过几次失败的尝试:

ChatGPT Plugins(2023)
OpenAI 尝试用插件市场让 ChatGPT 连接外部服务。用户可以安装第三方插件。
绑定 ChatGPT 生态,无法跨工具使用;安全模型薄弱;2024 年逐渐淡出
Function Calling(2023)
各家 LLM 厂商引入工具调用格式——OpenAI、Anthropic、Google 各自定义参数格式。
绑定特定模型;工具定义静态硬编码;不支持动态发现和双向通信
定制集成(一直存在)
每个 AI 工具为每个外部系统写专门的适配器——这正是小周遇到的 M×N 问题。
重复劳动、维护成本高、新工具/新系统都要从头再来

MCP 的关键洞察:与其在每个 AI 工具里为每个外部系统写适配器,不如定义一个标准协议——就像 USB-C 统一了充电接口一样。


LSP 的启示

MCP 的设计灵感来自一个成功的先例:Language Server Protocol (LSP)

LSP 解决的问题

2015 年之前,每给一个编辑器加一种语言支持,都要写一套插件:

VS Code + Python   → 写一套插件
Vim + Python       → 写一套插件
Emacs + Python     → 写一套插件
Sublime + Python   → 写一套插件

再加 Go 语言?→ 4 × 2 = 8 个插件

微软在 2015 年发布了 LSP,定义了编辑器和语言服务之间的标准协议:

语言实现一次 Language Server
VS Code、Vim、Emacs、Sublime...都通过同一个协议连接

加 N 种语言?N 个 Language Server
加 M 种编辑器?M 个 Client
总计 M + N,而不是 M × N

MCP 的类比

MCP 做了同样的事,只是把场景从「编辑器 + 编程语言」换成了「AI 应用 + 外部系统」:

LSP(2015)
领域 编程语言 + 编辑器
协议 JSON-RPC 2.0
架构 IDE → Client → Language Server
传输 stdio / Socket
核心 Diagnostics、Completions、Hover
MCP(2024)
领域 AI 应用 + 外部系统
协议 JSON-RPC 2.0
架构 Host → Client → MCP Server
传输 stdio / Streamable HTTP
核心 Resources、Prompts、Tools

两者都使用 JSON-RPC 2.0,都有 Client-Server 架构,都通过标准协议解决 M×N 集成问题。


时间线

2015.06LSP 发布——微软发布 Language Server Protocol,定义编辑器与语言服务的标准协议
2024.11MCP v1 发布——Anthropic 发布 Model Context Protocol,定义 AI 应用与外部系统的标准协议。基础协议、stdio 传输、三大原语(Resources、Prompts、Tools)
2025.03MCP v2——Streamable HTTP 传输(替代 SSE)、Elicitation(用户表单)、结构化工具输出、Completions(参数自动补全)
2025.06MCP v3——Tool Annotations(工具注解:readOnly、destructive 等)、Resource Links、JSON-RPC 批处理改进
2025.11MCP v4(当前)——OAuth 2.1 授权流程、Tasks(任务管理)、MCP Apps(返回 HTML 的工具)、扩展系统

交给社区

MCP 的一个关键决策是移交 Linux Foundation 管理。这意味着:

  • 不属于任何一家公司:Anthropic 发起了 MCP,但它现在是开放标准
  • OpenAI 也支持:ChatGPT 已经支持 MCP,尽管 MCP 是竞争对手发起的
  • 社区驱动演进:任何人都可以参与规范制定和 SDK 开发

为什么交给基金会重要?

如果 MCP 只属于 Anthropic,其他 AI 公司不会支持它。交给 Linux Foundation,MCP 成为「AI 行业的 USB-C」而非「Anthropic 的私有协议」。


MCP 的 10 种官方 SDK

MCP 目前有 10 种官方 SDK,按成熟度分为三个层级(Tier 1 由核心团队维护,Tier 2 由社区维护且功能完整,Tier 3 为早期阶段):

Tier 1
TypeScript
最成熟,社区最活跃
Tier 1
Python
社区最活跃
Tier 2
Java
社区维护
Tier 2
C#
社区维护
Tier 2
Go
社区维护
Tier 3
Rust / Kotlin / Swift
早期阶段

本课程的代码示例以 PythonTypeScript 为主(Tier 1 SDK,最稳定)。


本节核心要点

  • MCP 的设计灵感来自 LSP——都是用标准协议解决 M×N 集成问题
  • 两者都使用 JSON-RPC 2.0 和 Client-Server 架构
  • MCP 从 v1(2024.11)发展到 v4(2025.11),逐步加入 HTTP 传输、授权、任务管理等能力
  • MCP 已移交 Linux Foundation,是开放标准而非 Anthropic 私有协议
  • 10 种官方 SDK,本课程以 Python + TypeScript 为主

思考题:为什么 Anthropic 选择 JSON-RPC 2.0 而不是 REST 作为 MCP 的消息格式?(提示:想想双向通信的需求)

参考思路

关注"双向通信"——MCP 中 Server 可以反过来向 Client 发请求(Sampling、Elicitation),REST 是单向的请求-响应模式,无法支持这种能力。同时 JSON-RPC 2.0 的通知机制也让 Server 可以推送事件。


← 上一节:集成噩梦 | 目录 | 下一节:你需要 MCP 吗?→