在上一篇《Context Engineering》中,我们讨论了一个问题:

Agent 想要把事情做好,不仅需要一个足够强的模型,还需要正确的 Context。

但 Context 解决的主要是「让 Agent 知道什么」。

还有一个问题没有解决:

Agent 怎么真正去做事情?

例如,一个 Coding Agent 需要读取代码、修改文件、执行测试;一个企业 Agent 需要查询数据库、读取 CRM、发送邮件;一个知识库 Agent 需要搜索文档、查询向量数据库。

最直接的办法当然是给 Agent 接 API。

但当工具越来越多,问题很快就出现了。

每个 AI 应用都有自己的工具接入方式,每个工具都有自己的参数定义和调用方式。开发者需要为不同的模型、不同的 Agent、不同的应用重复做适配。

MCP 正是在这样的背景下出现的。

MCP 全称是 Model Context Protocol(模型上下文协议),是一个用于标准化 AI 应用与外部系统连接的开放协议。官方文档目前将它定义为连接 AI 应用与外部系统的开放标准,并围绕 Tools、Resources、Prompts 等能力建立协议规范。

如果把 Agent 看成一个需要不断获取信息和执行操作的软件,那么 MCP 解决的核心问题可以简单概括为:

如何用一种标准方式,让 AI 应用发现、理解并使用外部能力。

1. AI Agent 为什么需要“工具协议”

先不考虑 MCP。

假设我们正在开发一个 AI Agent,它需要操作 GitHub。

最简单的方式是:

Agent
  ↓
GitHub API
  ↓
GitHub

然后我们又希望它能够查询 MySQL:

Agent
  ↓
MySQL API / 自定义代码
  ↓
MySQL

再增加一个文件系统:

Agent
  ↓
Filesystem API
  ↓
File System

再增加 Slack、Notion、Jira、浏览器……

最后很容易变成:

                    ┌── GitHub
                    │
                    ├── MySQL
                    │
AI Application ─────┼── Slack
                    │
                    ├── Notion
                    │
                    ├── Browser
                    │
                    └── File System

真正麻烦的地方不是这些 API 本身,而是每个 AI 应用都需要自己做一遍连接和适配。

如果有 10 个 AI 应用、100 个工具,理论上就会产生大量重复的集成工作。

MCP 想解决的就是这一层问题:

                    ┌── GitHub MCP Server
                    │
                    ├── MySQL MCP Server
                    │
AI Application ─ MCP ┼── Slack MCP Server
                    │
                    ├── Notion MCP Server
                    │
                    └── FileSystem MCP Server

于是 AI 应用不需要为每个系统重新设计一套完全不同的工具接入机制,而是通过 MCP 与符合协议的 Server 通信。

这就是 MCP 最核心的价值:

把“AI 如何连接外部能力”从各个应用自己的实现,逐渐变成一个标准化的协议层。

Anthropic 在 2024 年首次公开 MCP 时,就将它定位为连接 AI 应用与外部数据源、工具的开放标准。到 2025 年 12 月,Anthropic 又将 MCP 捐赠给 Linux Foundation 旗下的 Agentic AI Foundation,并明确推动其向开放、社区驱动和厂商中立的方向发展。

2. MCP 到底解决了什么

理解 MCP,最容易犯的错误是把它理解成:

「一个让 LLM 调用 API 的协议。」

这句话并不完全错误,但太窄了。

MCP 的目标实际上是标准化 AI 应用如何向模型提供 Context 和能力。

目前 MCP Server 的核心能力包括:

MCP Server
│
├── Tools
│
├── Resources
│
└── Prompts

它们分别解决不同问题。

2.1 Tools

Tools 是 Agent 可以调用的操作。

例如:

search_code
read_file
write_file
run_test
query_database
create_issue
send_message

MCP 规范把 Tool 定义为 Server 暴露给模型调用的函数,并要求工具具有名称以及描述其输入参数的 Schema。

2.2 Resources

Resources 更接近「可以被读取的上下文或数据」。

例如:

file://project/README.md
file://project/package.json
database://schema/users
docs://api/auth

它们并不一定意味着「执行一个动作」,而是为 AI 应用提供可以读取和使用的 Context。

2.3 Prompts

Prompts 是可复用的提示模板和工作流。

例如:

review-code
debug-error
generate-report
analyze-database

它可以让 MCP Server 向客户端提供结构化、可复用的 Prompt 模板。

因此:

Tools
    → 做什么

Resources
    → 看什么

Prompts
    → 怎么开始一个任务

虽然这个理解是简化后的,但对于初学 MCP 非常有帮助。

MCP 官方规范也明确将 Resources、Prompts 和 Tools 作为 Server 侧的核心能力。

3. MCP 的基本架构是什么

MCP 的架构可以先简单理解成:

┌───────────────────────────────┐
│         AI Application        │
│                               │
│  Claude / IDE / Agent / App   │
└───────────────┬───────────────┘
                │
           MCP Client
                │
        MCP Protocol
                │
┌───────────────▼───────────────┐
│          MCP Server           │
│                               │
│   Tools / Resources / Prompts │
└───────────────┬───────────────┘
                │
        ┌───────┼────────┐
        ↓       ↓        ↓
      GitHub   MySQL    Files

这里有三个角色需要区分。

Host / AI Application

就是最终承载 AI 能力的应用,例如一个 AI IDE、桌面 AI 应用或者 Agent 平台。

MCP Client

负责在 Host 内部与 MCP Server 建立 MCP 通信。

MCP Server

负责把自己的工具、资源或 Prompt 暴露给 MCP Client。

因此,MCP 并不是:

LLM
 ↓
MCP
 ↓
Database

更准确的关系是:

AI Application
      │
      │ MCP Client
      │
      │ MCP Protocol
      ↓
MCP Server
      │
      ├── Tool
      ├── Resource
      └── Prompt
      │
      ↓
External System

官方架构文档也是按照 Host、Client、Server 以及协议层来描述 MCP 的整体架构。

4. MCP 和 API 到底有什么区别

这是理解 MCP 最重要的问题之一。

因为 MCP Server 背后通常还是在调用 API、数据库、文件系统或者其他程序,所以很多人会问:

「我已经有 API 了,为什么还需要 MCP?」

关键在于它们解决的问题不同。

API 主要解决:

软件和软件之间如何进行通信。

例如:

POST /api/orders/refund

调用方需要知道:

URL
HTTP Method
Authentication
Headers
Request Schema
Response Schema
Error Handling

而 MCP 更关注:

AI 应用如何发现、理解和使用这些能力。

例如一个 MCP Tool:

refund_order

它可以提供:

名称:
refund_order

描述:
对指定订单执行退款。

参数:
order_id
amount
reason

这样 Agent 就可以根据 Tool 的名称、描述和 Schema 判断:

当前任务需要退款
        ↓
发现 refund_order
        ↓
理解参数
        ↓
生成参数
        ↓
调用 Tool

所以可以简单理解:

API
 ↓
定义软件能力

MCP
 ↓
定义 AI 应用如何发现和使用这些能力

MCP Server 甚至完全可以把现有 API 包装成 MCP Tool。

例如:

已有系统

Order API
    ↓
POST /orders/refund


MCP Server
    ↓
refund_order Tool
    ↓
Order API

因此 MCP 并不是 API 的替代品。

很多情况下,它反而是建立在现有 API 之上的一层 AI 原生适配层。

5. MCP 和 Function Calling 又是什么关系

另一个容易混淆的概念是 Function Calling。

Function Calling 解决的问题是:

让模型产生结构化的函数调用请求。

例如模型可能产生:

{
  "name": "get_weather",
  "arguments": {
    "city": "Tokyo"
  }
}

你的应用拿到这个调用请求后,再执行真正的函数。

所以一个简单的 Function Calling 流程是:

User
 ↓
LLM
 ↓
Function Call
 ↓
Application
 ↓
Function
 ↓
Result
 ↓
LLM

而 MCP 关注的是另一层:

AI Application
      ↓
MCP Client
      ↓
MCP Server
      ↓
Tools / Resources / Prompts
      ↓
External Systems

因此它们不是完全竞争关系。

可以把它们理解成不同层次:

Function Calling
    ↓
模型如何表达“我要调用某个函数”

MCP
    ↓
AI 应用如何标准化发现和连接外部能力

一个 MCP Tool 最终仍然可能被 AI 应用转换成模型能够理解的工具定义,然后通过模型的 Tool Calling 能力完成调用。

所以:

Function Calling 是模型调用工具的一种机制;MCP 是连接 AI 应用与外部工具、数据和上下文的一套开放协议。

这个区别非常重要。

6. 一个 MCP Tool 是怎么被调用的

假设我们有一个简单的 MCP Server:

MCP Server
└── search_document

它提供:

name:
search_document

description:
搜索知识库中的相关文档。

input:
{
    "query": "string",
    "limit": "integer"
}

用户问:

MySQL InnoDB 的 Buffer Pool 是做什么的?

Agent 判断需要搜索知识库。

大致流程可以理解为:

User
 ↓
AI Application
 ↓
LLM 判断需要知识检索
 ↓
选择 search_document
 ↓
生成参数
 ↓
MCP Client
 ↓
MCP Server
 ↓
search_document()
 ↓
Knowledge Base
 ↓
返回搜索结果
 ↓
AI Application
 ↓
LLM
 ↓
生成最终答案

如果是 Coding Agent,则可能变成:

用户:
修复 UserService 的测试。

Agent
 ↓
搜索代码
 ↓
read_file
 ↓
修改代码
 ↓
write_file
 ↓
执行测试
 ↓
run_test
 ↓
获取结果
 ↓
继续修复

这时候 MCP 的价值就变得非常明显。

它让 Agent 面对的不是几十套完全不同的集成方式,而是一个相对统一的工具发现和调用模型。

7. MCP 为什么特别适合 Agent

在上一篇文章中我们讲过,Agent 与普通 Chatbot 最大的区别之一,是 Agent 不只是回答问题,而是可以:

理解任务
 ↓
制定计划
 ↓
调用工具
 ↓
观察结果
 ↓
继续行动

所以 Agent 的能力实际上取决于两个方面:

Agent
├── Reasoning
└── Tools

没有工具,Agent 很多时候只能「建议」。

有工具,Agent 才能真正「行动」。

例如:

没有工具:

“你可以运行 PHPUnit 检查代码。”

有工具:

Agent
 ↓
调用 PHPUnit
 ↓
获得测试结果
 ↓
分析错误
 ↓
修改代码
 ↓
重新测试

因此,随着 Agent 能够使用的工具越来越多,工具接入本身就会变成一个基础设施问题。

MCP 正好提供了一种标准化方式。

Anthropic 在 MCP 的工程实践中也将它描述为连接 AI Agent 与外部系统的开放标准,并展示了 MCP 在大量工具场景中的应用。

8. MCP 为什么不是简单的“万能 API 插件”

如果把 MCP 只理解成:

API
 ↓
MCP Server
 ↓
LLM

实际上低估了它。

MCP 的重要意义在于,它正在尝试建立一套围绕 Agent 的通用连接协议。

例如一个 AI 应用可以连接:

GitHub MCP
PostgreSQL MCP
Filesystem MCP
Slack MCP
Notion MCP
Sentry MCP
Browser MCP

然后 Agent 面对的是:

Tools
Resources
Prompts

而不是需要理解每个系统完全不同的集成方式。

这也是 MCP 生态快速发展的重要原因。

截至 2025 年底,Anthropic 表示 MCP 已经被 ChatGPT、Cursor、Gemini、Microsoft Copilot、Visual Studio Code 等多个 AI 产品采用,并有超过 10,000 个公开 MCP Server;同一时期,Anthropic 将 MCP 捐赠给 Linux Foundation 旗下的 Agentic AI Foundation。

这些数据说明 MCP 已经不再只是 Anthropic 自己的一个实验性接口。

但这里也应该保持一个技术判断:

MCP 已经形成了广泛生态,并不意味着它已经成为所有 AI 应用唯一的标准。

AI Agent 的协议和工具生态仍然在快速演进。

因此,更准确的说法是:

MCP 正在成为 AI 应用连接外部工具和上下文的重要开放协议之一。

而不是简单宣布:

「MCP 已经统一了整个 AI 世界。」

9. MCP 的真正价值在哪里

如果只从技术实现来看,MCP 并没有神奇到可以解决所有问题。

它真正有价值的地方,是把一个过去高度分散的问题标准化。

以前:

Claude
  ├── GitHub Adapter
  ├── MySQL Adapter
  ├── Slack Adapter
  └── Custom Adapter

Cursor
  ├── GitHub Adapter
  ├── MySQL Adapter
  ├── Slack Adapter
  └── Custom Adapter

Other Agent
  ├── GitHub Adapter
  ├── MySQL Adapter
  ├── Slack Adapter
  └── Custom Adapter

大量重复。

MCP 希望变成:

                 MCP
                  │
       ┌──────────┼──────────┐
       ↓          ↓          ↓
   GitHub       MySQL      Slack
   Server       Server      Server

然后不同 AI 应用都可以接入这些 MCP Server。

这实际上很像软件生态中曾经出现过的一个非常重要的规律:

当连接数量开始快速增长时,标准化接口的价值往往会越来越高。

MCP 的意义也正在这里。

它不是让 GitHub、MySQL、Slack 本身发生变化,而是让它们能够以更统一的方式成为 Agent 可以使用的能力。

10. MCP 还远没有结束

MCP 当前已经覆盖 Tools、Resources、Prompts、授权、传输等多个方面,规范也仍在持续演进。官方规范目前的 2025-11-25 版本已经包含异步操作、授权、Server Identity 等能力,而官方 Roadmap 也继续讨论事件驱动更新等未来方向。

这意味着 MCP 后续面对的问题已经不只是:

“怎么调用一个工具?”

而会越来越接近:

工具怎么设计?

工具怎么发现?

工具太多怎么办?

工具权限怎么控制?

工具调用如何审计?

工具结果如何进入 Context?

多个 Agent 怎么共享工具?

长时间运行的 Agent 怎么管理工具状态?

这些问题,实际上已经开始进入 MCP 的工程实践。

尤其值得注意的是:

工具数量本身也可能成为 Context 的负担。

如果一个 Agent 同时连接大量 MCP Server,每个工具的名称、描述和参数 Schema 都需要被模型理解,工具定义本身就会占用 Context。因此,MCP 的下一阶段并不只是「连接更多工具」,而是如何让 Agent 在大量工具中高效发现和选择真正需要的工具。Anthropic 也已经针对大量工具场景推出 Tool Search、Programmatic Tool Calling 等能力。

这又回到了上一篇文章讨论的 Context Engineering:

Agent
  ↓
需要工具
  ↓
MCP
  ↓
获得大量 Tools
  ↓
Context 变大
  ↓
需要更好的 Context Engineering

所以这几篇文章实际上是连在一起的。

11. MCP 真正改变的是什么

到这里,可以重新回答最开始的问题:

为什么 AI Agent 需要一个“工具协议”?

因为 Agent 的能力正在从「生成文本」转向「使用外部世界」。

它需要访问:

代码
文件
数据库
API
知识库
浏览器
企业系统
云资源

如果每一个 AI 应用都自己实现一套连接方式,生态最终会变得非常复杂。

MCP 的目标,就是在 AI 应用与这些外部能力之间增加一个标准化协议层:

                         AI Agent
                            │
                       AI Application
                            │
                        MCP Client
                            │
                    Model Context Protocol
                            │
             ┌──────────────┼──────────────┐
             ↓              ↓              ↓
          Tools          Resources       Prompts
             │              │              │
             ↓              ↓              ↓
          GitHub          Docs           Workflow
          Database        Files          Templates
          API             Knowledge      Instructions

所以,MCP 最值得关注的并不是它有多少个 API,也不是某个 MCP Server 有多少功能。

真正值得关注的是:

AI 正在从“调用几个预先写死的函数”,走向“动态发现并使用一个庞大的外部能力生态”。

MCP 正是在解决这个生态中的连接问题。

官方资料