Skip to content

前言

写作动机

2025 年,AI Agent 生态面临一个尴尬的现实:每个 Agent 框架都在重新发明工具集成的轮子。

Claude Code 有自己的工具系统,LangChain 有自己的 Tool 抽象,Cursor 有自己的集成方式。一个开发者写了一个"搜索 Jira 工单"的工具,想在 Claude Code 里用——得按 Claude Code 的格式实现一遍。想在 LangChain 里用——得按 LangChain 的 BaseTool 重写一遍。想在 Cursor 里用——又得再来一遍。

这就像 USB 标准出现之前的外设市场:每个厂商有自己的接口,买个鼠标还要看主板兼容性。

MCP(Model Context Protocol)就是 Agent 生态的 USB 标准。

它定义了一个开放的、标准化的协议,让任何工具只要实现一次 MCP Server,就能被所有支持 MCP 的 Client 调用——Claude Code、Claude Desktop、Cursor、Windsurf、Zed,以及未来更多的 Agent 平台。

2024 年 11 月 Anthropic 发布 MCP 的第一个版本时,社区的反应是"又一个协议?"。但短短半年内,MCP 的 GitHub 仓库获得了数万星标,被主流 AI 编程工具采纳,生态中涌现了数百个 MCP Server。这种增长速度说明了一个事实:Agent 生态确实需要一个标准协议,MCP 来得正是时候。

这本书讲什么

本书不是 MCP 的使用教程——官方文档已经做得很好了。

本书关注的是协议的设计与实现

  • 为什么选择 JSON-RPC 而不是 gRPC 或 REST?
  • 能力协商机制如何保证前后向兼容?
  • OAuth 2.1 认证框架为什么这么复杂?解决了什么问题?
  • STDIO 和 Streamable HTTP 两种传输层各自的设计权衡是什么?
  • Sampling 机制如何让 Server 反向调用 LLM 而不暴露 API Key?
  • Claude Code 的 MCP 客户端(12 万行 TypeScript)是怎么集成的?

每一章从设计意图出发,深入 TypeScript SDK 和 Python SDK 的源码实现,最后提炼可迁移的协议设计模式。

本书读者

  • MCP Server 开发者:想构建自己的 MCP Server,需要理解协议细节
  • Agent 框架开发者:想在自己的框架中集成 MCP Client,需要理解 SDK 内部
  • 协议设计者:对开放协议的设计方法论感兴趣
  • AI 应用架构师:需要评估 MCP 是否适合你的 Agent 平台

本书组织

源码版本

本书基于以下版本分析:

组件版本获取方式
MCP 协议规范2025-11-25git clone https://github.com/modelcontextprotocol/specification.git
TypeScript SDK2.0.0-alpha.0git clone https://github.com/modelcontextprotocol/typescript-sdk.git
Python SDKlatestgit clone https://github.com/modelcontextprotocol/python-sdk.git

核心源码目录:

  • 规范文档:docs/specification/2025-11-25/
  • TS SDK:packages/core/, packages/client/, packages/server/
  • Python SDK:src/mcp/client/, src/mcp/server/

致谢

感谢 Anthropic 团队发起 MCP 并保持开源,感谢社区贡献者构建了丰富的 MCP Server 生态。

基于 VitePress 构建