Chapter 01

MCP 协议全景:AI 工具的通用语言

理解 Model Context Protocol 的本质,掌握它为何成为 AI 生态的基础设施标准

什么是 MCP(Model Context Protocol)

MCP,全称 Model Context Protocol(模型上下文协议),是 Anthropic 于 2024 年 11 月正式开源的一个通信标准协议。它定义了 AI 大语言模型(LLM)与外部工具、数据源之间进行交互的规范化方式。

简单来说,MCP 就像是 AI 世界的 USB 接口——在 USB 标准出现之前,每种外设都需要专属的连接方式;USB 统一了接口规范后,任何设备只要遵循 USB 标准就能互相连接。MCP 在 AI 领域扮演的正是这个角色。

MCP Host
运行 LLM 的应用程序,例如 Claude Desktop、Cursor IDE、VSCode Copilot。Host 负责发起连接、管理多个 MCP Client。
MCP Client
嵌入在 Host 内部的协议客户端,负责与单个 MCP Server 建立并维护连接,处理消息的发送与接收。
MCP Server
独立运行的轻量级程序,向 Client 暴露具体的工具(Tools)、资源(Resources)和提示词模板(Prompts)。它可以访问文件系统、数据库、外部 API 等任何数据源。
  ┌─────────────────────────────────────────────────────────────────┐
  │                        MCP Host                                 │
  │  (Claude Desktop / Cursor / VSCode / 自定义 AI 应用)            │
  │                                                                 │
  │   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐        │
  │   │ MCP Client 1│   │ MCP Client 2│   │ MCP Client 3│        │
  │   └──────┬──────┘   └──────┬──────┘   └──────┬──────┘        │
  └──────────┼────────────────┼────────────────┼──────────────────┘
             │ stdio          │ HTTP+SSE      │ stdio
                                           
  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
  │  MCP Server  │  │  MCP Server  │  │  MCP Server  │
  │  文件系统     │  │  GitHub API  │  │  数据库查询  │
  └──────────────┘  └──────────────┘  └──────────────┘

Anthropic 为何创建 MCP

在 MCP 出现之前,AI 应用开发面临严重的集成碎片化问题。每当开发者想让 AI 访问一种新工具或数据源时,都需要为那个特定的 LLM、那个特定的应用单独编写集成代码。

MCP 之前的困境

  • N 个 AI 应用 × M 种工具 = N×M 种集成
  • 每种集成都有独特的 API 格式
  • 换一个 LLM,所有集成要重写
  • 工具开发者需要为每个平台单独适配
  • 安全审计困难,行为不可预测

MCP 带来的改变

  • N 个 AI 应用 + M 种工具,只需 N+M 种实现
  • 统一的 JSON-RPC 2.0 消息格式
  • MCP Server 与具体 LLM 无关
  • 工具开发者一次实现,处处可用
  • 标准化安全模型,行为可审计
核心理念 MCP 的设计哲学是:解耦 AI 应用与工具实现。AI 应用只需要知道"如何调用 MCP 协议",不需要了解底层工具的具体实现;工具开发者只需要实现 MCP Server,不需要针对每个 AI 应用做适配。

解决 AI 工具碎片化问题

碎片化问题在实践中具体表现为以下几种形式:

上下文窗口的局限

LLM 本身是无状态的,它只能处理当前对话窗口内的信息。要让 AI 访问外部文件、实时数据或执行操作,必须通过某种机制将这些能力注入给它。MCP 提供了一个标准化的"能力注入"框架。

Function Calling 的不足

OpenAI 早期提出的 Function Calling 虽然解决了让 LLM 调用函数的问题,但它是模型绑定的——函数的定义格式与调用方式都依赖于具体的 LLM API。如果换用不同的模型,就需要修改函数定义格式。MCP 则是完全模型无关的标准协议。

工具发现与动态能力

Function Calling 中,所有可用函数必须在调用时一次性传入 LLM。而 MCP 支持动态的能力发现:Host 可以在运行时查询 Server 提供了哪些 Tools、Resources 和 Prompts,并根据情况动态决定使用哪些能力。

MCP 生态现状(2025 年)

MCP 自 2024 年 11 月开源后,在 2025 年经历了爆发式增长。以下是当前主要集成情况:

已集成 MCP 的主流工具

💬

Claude Desktop

官方参考实现,支持 stdio 传输,配置 JSON 文件注册 Server

Cursor IDE

AI 代码编辑器,深度集成 MCP,支持代码库级别的工具调用

🔷

VSCode Copilot

GitHub Copilot 集成 MCP,通过 Agent 模式调用外部工具

🤖

Windsurf

Codeium 开发的 AI IDE,支持 MCP Server 扩展

🌊

Zed Editor

高性能代码编辑器,原生支持 MCP 协议集成

🧩

Continue.dev

开源 AI 代码助手,支持自定义 MCP Server 接入

官方 MCP Server 库

Anthropic 在 GitHub 上维护了一个官方 MCP Server 集合(modelcontextprotocol/servers),包含以下常用服务:

@modelcontextprotocol/server-filesystem
文件系统访问,支持读取、写入、列举目录、搜索文件内容
@modelcontextprotocol/server-github
GitHub API 集成,管理仓库、Issues、Pull Requests、代码搜索
@modelcontextprotocol/server-postgres
PostgreSQL 数据库访问,执行 SQL 查询,查看表结构
@modelcontextprotocol/server-brave-search
Brave Search API 集成,让 AI 具备实时网络搜索能力
@modelcontextprotocol/server-puppeteer
浏览器自动化,截图、页面交互、内容抓取

与 Function Calling 的本质区别

这是 MCP 初学者最常见的困惑,需要仔细辨析:

维度 Function Calling MCP
层次 LLM API 层的功能 应用层的通信协议
耦合性 与特定 LLM API 绑定 完全与 LLM 无关
工具发现 静态,调用时一次性传入 动态,运行时查询
传输方式 HTTP API 调用的一部分 独立的 stdio/HTTP/SSE 连接
状态管理 无状态 有状态(持久连接)
能力类型 仅工具调用 Tools + Resources + Prompts + Sampling
安全模型 由调用方自行实现 协议层标准化安全机制
关键理解 Function Calling 是 LLM 理解"要调用什么函数"的机制;MCP 是实际执行工具调用的传输与通信框架。在实践中,Host 内部通常使用 Function Calling 让 LLM 决策调用哪个 MCP Tool,然后再通过 MCP 协议将调用请求发送给对应的 Server 执行。两者是互补关系,不是替代关系。

MCP 的核心能力三角

MCP 协议定义了三种核心能力类型,每种都有明确的适用场景:

Tools(工具)
模型控制的操作。AI 可以主动发起调用,执行具体操作,例如读取文件、查询数据库、发送 HTTP 请求。Tools 有明确的输入参数和输出结果,类似于函数调用。
Resources(资源)
应用控制的数据。Server 暴露的可访问数据,例如文件内容、数据库记录、实时状态。Resources 通过 URI 寻址,Host 决定何时将哪些资源加入对话上下文。
Prompts(提示模板)
用户控制的模板。可参数化的提示词模板,通常由用户主动调用。例如 "代码审查" 模板、"文档生成" 模板,让用户可以快速触发标准化的 AI 工作流。
版本说明 本教程基于 MCP 1.0+ 规范(2025 年版本)。MCP 规范仍在快速演进中,部分 API 细节可能随版本更新有所变化。建议同时参考官方文档 modelcontextprotocol.io 获取最新信息。