本页内容
如今每一款主流 AI 编码助手——Claude、Cursor、Windsurf、Cline——都支持一种连接外部工具的共享协议。这个协议就是 MCP,即 Model Context Protocol。如果你构建开发者工具、数据流水线或 AI 应用,理解 MCP 已不再是可选项。它是 LLM 与外部世界之间的标准接口。
本指南从零开始解释 MCP:它是什么、在架构上如何运作、为何重要,以及如何基于它进行构建。
目录
- 什么是 Model Context Protocol?
- MCP 为何存在
- MCP 架构:Client、Server、Transport
- MCP 工具发现的工作原理
- MCP 工具调用的工作原理
- MCP 与 REST API 的对比
- 构建一个 MCP server
- 真实场景的 MCP 示例:网页抓取
- 2026 年的 MCP 生态
- 常见问题
什么是 Model Context Protocol?
Model Context Protocol(MCP) 是由 Anthropic 创建的开放标准,它定义了 AI 助手如何与外部工具和数据源通信。MCP 于 2024 年 11 月发布,提供了一个通用接口,使任何 AI 客户端无需定制集成代码即可连接到任何兼容 MCP 的服务器。
可以把 MCP 看作 AI 工具的 USB。在 USB 出现之前,每个外设都需要自己的接口和驱动。MCP 为 AI 做了同样的事:它统一了工具如何描述自身能力、客户端如何发现它们,以及调用如何在两端来回流转。
关于 MCP 的关键事实:
- 由 Anthropic 维护的开放规范
- 受 Claude Code、Claude Desktop、Cursor、Windsurf、Cline 和 Zed 支持
- 使用 JSON-RPC 2.0 作为消息格式
- 支持两种传输机制:stdio(本地)和 HTTP+SSE(远程)
- 服务器暴露三种原语:Tools、Resources 和 Prompts
MCP 为何存在
在 MCP 出现之前,把一个 AI 助手连接到外部工具需要:
- 为每个工具编写定制的 API 封装
- 手动为 LLM 定义函数 schema
- 处理鉴权、错误恢复和响应解析
- 为你想支持的每一个 AI 客户端重复这套工作
这种做法无法扩展。一个拥有 10 个工具和 3 个 AI 客户端的开发者将需要 30 个集成点。MCP 把它压缩为 10 个服务器和 3 个客户端——它们说着同一种协议。
实际结果是:工具作者编写一个 MCP server,它便随处可用。客户端作者实现一次 MCP,每个服务器便都可用。
MCP 架构:Client、Server、Transport
MCP 采用客户端-服务器架构,包含三个核心组件:
MCP Host
host 是用户直接交互的应用——Claude Desktop、Cursor 或自定义的 AI 应用。host 管理一个或多个 MCP 客户端连接,并在 LLM 与相应服务器之间路由工具调用。
MCP Client
client 是 host 内部的协议级组件,与单个 MCP server 保持 1:1 连接。它负责能力协商、工具发现和请求/响应的序列化。
MCP Server
server 通过 MCP 协议暴露工具、资源和提示。每个服务器都是一个独立进程,可以用任何语言编写。服务器在初始化握手期间声明自己能做什么。
传输层
MCP 支持两种传输机制:
| 传输 | 用例 | 连接 | 延迟 |
|---|---|---|---|
| stdio | 本地工具、CLI 集成 | 进程管道(stdin/stdout) | 亚毫秒级 |
| HTTP + SSE | 远程服务器、云端部署 | HTTP POST + Server-Sent Events | 取决于网络 |
stdio 传输用于像 CrawlForge 这样的本地 MCP server。host 把服务器作为子进程派生,并通过标准 I/O 流通信。这消除了网络开销,让一切都运行在开发者本机上。
HTTP+SSE 用于远程服务器。客户端通过 HTTP POST 发送 JSON-RPC 请求,并通过 Server-Sent Events 连接接收流式响应。
MCP 工具发现的工作原理
当一个 MCP 客户端连接到服务器时,它做的第一件事就是发现可用的工具。这通过 tools/list 方法完成:
AI 助手会读取这些工具描述和 schema,以理解每个工具的功能及其接受的参数。这正是为什么良好的工具描述如此重要——它们直接影响 LLM 选择工具和填写参数的效果。
MCP 工具调用的工作原理
一旦 LLM 决定使用某个工具,客户端就会发送一个 tools/call 请求:
随后 LLM 会处理这个响应,并可以串联更多的工具调用。例如,在抓取一个页面之后,它可能调用 extract_content 来清洗 HTML,再调用 analyze_content 来提取关键主题。
MCP 与 REST API 的对比
开发者常问 MCP 与传统 REST API 相比如何。以下是直接对比:
| 维度 | MCP | REST API |
|---|---|---|
| 发现 | 通过 tools/list 自动完成 | 手动(读文档、写客户端代码) |
| Schema | 自描述(JSON Schema) | OpenAPI 规范(独立文件) |
| 鉴权 | 由 host/传输层处理 | 每个请求的 header/token |
| AI 集成 | 原生——LLM 读取工具描述 | 手动——开发者编写函数 schema |
| 多工具工作流 | LLM 自主串联工具 | 开发者编写编排逻辑 |
| 传输 | stdio 或 HTTP+SSE | 仅 HTTP |
关键区别在于:MCP 让工具对 AI 原生友好。REST API 需要开发者阅读文档、编写客户端代码,并为 LLM 定义函数 schema。而 MCP server 会自我描述,AI 自行弄清楚如何使用它。
如需更深入的技术对比,请阅读我们的 MCP 与 REST 分析。
构建一个 MCP server
下面是一个用 官方 @modelcontextprotocol/sdk 编写的最简 TypeScript MCP server:
这个服务器暴露了单个 get_weather 工具。当连接到 Claude Code 或 Cursor 时,AI 可以自动发现并调用它。
真实场景的 MCP 示例:网页抓取
CrawlForge 原生实现了 MCP,提供 20 个工具。当开发者请求 Claude 研究某个主题时,真实的交互如下:
用户提示:"研究排名前 5 的向量数据库并对比它们的定价。"
Claude 在幕后做的事:
- 调用
search_web查找向量数据库对比页面 - 对前 3 个结果调用
extract_content获取干净文本 - 调用
batch_scrape抓取 Pinecone、Weaviate、Qdrant、Milvus 和 ChromaDB 的定价页面 - 调用
analyze_content提取定价数据和功能对比 - 把所有内容综合成一份结构化对比
这些步骤中的每一步都使用了不同的 CrawlForge 工具,由 LLM 根据当下任务自动选择。开发者不需要编写任何集成代码。
这正是 MCP 的威力所在:协议负责发现,工具描述引导选择,AI 负责编排工作流。
2026 年的 MCP 生态
自协议发布以来,MCP 生态迅速壮大:
客户端(Host):
- Claude Code 和 Claude Desktop(Anthropic)
- Cursor(Anysphere)
- Windsurf(Codeium)
- Cline(VS Code 扩展)
- Zed(编辑器)
- 通过 SDK 构建的自定义应用
值得关注的 MCP server:
- CrawlForge —— 20 个网页抓取与研究工具
- GitHub MCP —— 仓库管理与代码搜索
- Postgres MCP —— 数据库查询与 schema 探索
- Filesystem MCP —— 文件操作与目录管理
SDK:
- TypeScript/JavaScript:
@modelcontextprotocol/sdk - Python:
mcp包 - Rust、Go 和 Java 的社区实现
官方 MCP 规范 由 Anthropic 维护,并正朝着鉴权标准、能力协商和流式工具结果等特性演进。
常见问题
用简单的话说,MCP 是什么?
MCP(Model Context Protocol)是一种标准,让 Claude 这样的 AI 助手能够连接外部工具。它就像一个万能插头——任何会说 MCP 的 AI 客户端都能使用任何 MCP server,无需定制集成代码。工具自我描述,AI 自行弄清如何使用它们。
Model Context Protocol 是谁创建的?
Anthropic 创建了 MCP,并于 2024 年 11 月将其作为开放规范发布。该协议作为开放标准维护,并接受社区贡献。
哪些编程语言支持 MCP?
TypeScript/JavaScript 和 Python 有官方 SDK。Rust、Go、Java 和 C# 有社区实现。由于 MCP 在标准传输(stdio 或 HTTP)之上使用 JSON-RPC 2.0,任何能读写 JSON 的语言都可以实现一个 MCP server。
MCP 与 OpenAI 的函数调用有何不同?
OpenAI 的函数调用是 OpenAI API 专有的,要求开发者在每次 API 调用中手动定义函数 schema。MCP 则是一个开放协议,工具自我描述,可跨多个 AI 客户端工作(而不仅限于一家厂商),并在简单的函数调用之外支持持久连接、资源访问和提示模板。
CrawlForge 如何使用 MCP?
CrawlForge 构建为一个原生 MCP server。当你把它连接到 Claude Code 或 Cursor 时,AI 会自动发现全部 20 个抓取工具,并可根据自然语言请求调用它们。无需编写任何 API 封装代码。请在我们的 快速入门指南 中了解如何配置。
今天就构建你的第一个 MCP 集成。 免费开始,赠送 1,000 credits,在 60 秒内把 CrawlForge 连接到 Claude。