MCP vs. API:为什么传统 API 撑不起 AI Agent

本文为 dev.to 上的文章,原文地址: https://dev.to/cpathirage/mcp-vs-api-why-traditional-apis-arent-enough-for-ai-agents-go2 。
API 没有坏。
几十年来,它支撑着互联网、移动应用、SaaS 平台和分布式系统。
但有些东西变了。
软件 API 的消费方,不再总是开发者写的另一段软件。
越来越多的时候,它是 AI Agent。
而 AI Agent 与软件交互的方式,和传统应用完全不同。
传统应用早就知道:
- 该调哪个 endpoint
- 该传什么参数
- 该用哪种认证
- 该期待什么样的响应
- 拿到响应后该做什么
AI Agent 往往得动态地把这些搞清楚。
它需要理解有哪些能力可用、判断哪个能力相关、给出正确的参数、解读结果,并可能基于刚得到的信息再调下一个工具。
于是出现了一类新的集成问题。
这正是 Model Context Protocol(MCP) 有意思的地方。
API 把功能暴露给软件。MCP 则为 AI 应用发现并使用各种能力,提供了一套标准方式。
本文将讨论:这个区别为何重要、MCP 如何运作、它与传统 API 相比如何,以及它为什么可能成为 AI Agent 架构中的重要一层。
问题所在:API 是为软件设计的
先看一次传统的 API 交互。
假设某个应用需要客户信息,开发者会写:
| |
应用非常清楚自己要什么。
API 返回类似:
应用按照开发者预先写好的代码处理这个响应。
关键在于:应用不需要对 API 做任何推理。
它只是执行一条预定义的集成路径。
架构大致如下:
这个模型运转得非常好。
那问题在哪?
问题出现在消费方是 AI Agent 的时候。
API vs. AI Agent
AI Agent 事先并不一定知道该执行哪个操作。
设想用户提出:
“找到客户 Acme Corp,查一下它最近的支持工单,看看我们最近和它的对话,然后告诉我这个客户要不要升级处理。”
这不是一次 API 调用。
Agent 可能需要:
- 找到这个客户。
- 取回账户信息。
- 搜支持工单。
- 搜消息记录。
- 分析结果。
- 判断是否该升级。
- 可能还要创建一张升级工单。
模型必须自己决定下一步做什么。
这和一个按固定顺序调用 API 的传统应用,有本质区别。
架构变成:
再设想:你要做 20 个 AI 应用,它们都需要访问同样那 20 个系统。
集成量立刻爆炸。
集成难题
没有统一协议,每个 AI 应用都可能要自己写一套集成。
设想三个 AI 应用、三个业务系统:
每个应用都要搞明白:
- 认证
- API endpoint
- 请求格式
- 响应格式
- 错误
- 权限
- 工具的语义
- 什么情况下该用这个操作
而且模型还要掌握足够多的相关信息,才能正确使用这些能力。
MCP 在这里提出了另一条路。
什么是 Model Context Protocol?
Model Context Protocol(MCP) 是一个开放协议,用于标准化 AI 应用连接外部能力(工具、资源、提示词)的方式。
它不让每个 AI 应用各自发明一套集成机制,而是给“向 AI 应用暴露能力”这件事提供一个通用协议。
宏观上看:
重点不是“又一种调 API 的方式”。
重点是可发现性(discoverability)。
AI 应用可以自行了解有哪些能力可用,以及这些能力该怎么用。
MCP 并不意味着 API 已死
这是最需要理解的一点。
MCP 未必是 REST、GraphQL、gRPC 等 API 技术的替代品。
在很多架构里,MCP 是架在现有 API 之上的。
例如:
MCP Server 成了一个对 AI 友好的适配器。
底层的 CRM 不需要变成“MCP 原生”。
现有 API 继续做它原本的事。
MCP 在 AI 应用和这项能力之间,提供了一个标准接口。
由此得到一种很好用的理解方式:
API 是服务接口。MCP 可以是 AI 接口。
MCP 到底连接什么?
MCP 并不局限于 API。
一个 MCP Server 可以暴露多种类型的能力和信息。
API
例如:
数据库
MCP Server 可以对数据库提供受控访问。
例如:
AI 并不一定拿到无限制的数据库访问权。
Server 可以只暴露定义清晰的操作,例如:
文件与文档
MCP 也能提供对文件或其他资源中信息的访问。
例如:
企业内部系统
这可能是最有意思的用例。
企业里有些内部系统从来就不是为 AI 设计的。
MCP Server 可以充当这些系统和 AI 应用之间的接口。
也就是说,MCP 可以成为 AI 与既有系统之间的桥。
MCP 为什么存在?
MCP 试图解决几类问题。
1. 可发现性
AI Agent 需要知道:
“我能做什么?”
传统应用早就知道自己要调哪个 API。
Agent 可能需要动态发现有哪些能力可用。
2. 标准化
没有通用协议,各家 AI 平台实现工具集成的方式各不相同。
开发者就得为同一项集成写多个版本。
协议为 AI 应用和外部能力之间建立了共同语言。
3. 上下文
AI 模型要的不只是一个函数名。
知道有个函数叫:
| |
远远不够。
模型还需要理解:
- 这个函数做什么
- 它接受哪些参数
- 这些参数是什么意思
- 返回结果代表什么
- 什么情况下该用它
这些元数据会进入模型的工作上下文。
4. 动态工具使用
与其把所有可能的工具都硬编码进 AI 应用,兼容的客户端可以直接发现 Server 暴露的能力。
工具发生变化时,系统依然灵活。
5. 互操作性
长期来看,最重要的可能是互操作性。
通过 MCP 暴露的能力,有潜力被多个兼容的 AI 应用共同消费。
与其这样:
不如走向:
这是完全不同的集成模型。
MCP 如何工作:Client 与 Server
拆开看架构。
一个简化的 MCP 系统长这样:
| |
这里有几个关键角色。
AI 应用 / Host
Host 是模型运行所在的那个应用。
它可能是:
- 一个 AI 助手
- 一个编码环境
- 一个 Agent 平台
- 一个企业级 AI 应用
Host 提供使用 MCP 连接的环境。
MCP Client
MCP Client 负责 AI 应用和 MCP Server 之间的通信。
概念上:
Client 的职责是说这个协议,并把 Server 的能力提供给应用使用。
MCP Server
MCP Server 暴露能力。
它可以很小:
也可以挡在整个企业系统前面:
Server 是“面向 AI 的接口”与底层系统交汇的地方。
MCP 的核心概念
理解 MCP 最简单的切入方式,是记住四个概念:
- Tools(工具)
- Resources(资源)
- Prompts(提示词)
- Context(上下文)
它们回答的是不同的问题。
Tools:“AI 能做什么?”
Tools 代表模型可以调用的操作。
例如:
Tools 主要关乎动作。
一个 Tool 可以带有描述其用途和输入 schema 的元数据。
例如:
模型据此判断这个 Tool 是否相关、该传什么参数。
Resources:“AI 能访问哪些信息?”
Resources 代表可以提供给 AI 应用的信息。
把 Resources 理解成数据,而不是动作。
例子可能包括:
一个好用的心智模型是:
这个区分很重要,因为 Agent 两者都需要。
它既需要信息来推理,也需要工具来行动。
Prompts:“这项能力该怎么用?”
MCP 还可以暴露可复用的提示词。
例如:
| |
或者:
| |
目标不只是暴露一个函数。
系统还可以提供结构化的交互模式,帮助 AI 应用有效地使用底层能力。
Context:“模型需要知道什么?”
这是把所有东西串起来的概念。
假设 Agent 只看到这个:
| |
这没什么用。
模型需要知道:
现在模型才有足够信息去推理这项能力。
这就是“暴露一个函数”和“向 AI 系统暴露一项能力”之间的根本区别。
MCP vs. API:区别在哪?
最简对比:
| Traditional API | MCP | |
|---|---|---|
| 主要消费方 | 软件应用 | AI 应用 |
| 主要抽象 | Endpoint / 函数 | Tools、Resources、Prompts |
| 发现方式 | 通常由开发者驱动 | 围绕能力发现设计 |
| 上下文 | 通常在 API 调用之外 | 是 AI 交互的核心 |
| 集成方式 | 显式实现 | 标准化协议 |
| 工具元数据 | 通常是文档 / OpenAPI | 设计上就是暴露给客户端的 |
| 主要目标 | 软件到软件的通信 | AI 到能力的交互 |
但还有更重要的区别。
API 回答:
“我怎么调用这个服务?”
MCP 回答:
“用这个服务我能做什么,AI 应用该如何与之交互?”
这才是概念上的转变。
硬编码 vs. 上下文
看一个传统的 AI 集成。
开发者可能写:
知识写在应用里。
再看基于 MCP 的做法。
Client 可以发现一个工具:
模型于是可以推理:
集成不再是把所有可能路径硬编码,而是暴露可发现的能力。
这是架构层面的显著转变。
MCP 架在 API 之上:新的中间件层
MCP 在这里变得特别实用。
你不需要丢掉现有 API。
你可以在它们之上建一层 MCP。
例如,假设公司已经有一套客户 API:
你可以做一个 MCP Server,暴露:
底层 API 完全不变。
MCP Server 把面向 AI 的交互,翻译成相应的 API 调用。
所以我觉得有一句话很适合描述 MCP:
MCP 可以成为架在现有软件基础设施之上的 AI 原生中间件层。
实战:构建一个 AI 支持 Agent
让它具体起来。
假设你在为客户支持团队做一个 AI 助手。
支持人员问:
“Acme Corp 为什么不满意?我该不该把这家客户升级?”
答案不存在某一个数据库里。
AI 需要同时看:
- CRM 数据
- 支持工单
- 最近的对话
- 账户历史
没有 MCP,应用里可能散着几套独立集成:
每套集成都需要定制代码。
现在换用 MCP 试试。
接下来走一遍流程。
第 1 步:发现能力
Agent 发现这些工具:
第 2 步:理解工具
模型收到描述和 schema。
它了解到:
| |
可以按客户名搜索。
以及:
| |
可以取回最近的支持问题。
第 3 步:决定用什么
模型推理:
关键在于:模型不只是生成文本。
它在决定该用哪些外部能力。
第 4 步:调用工具
Agent 调用相关工具。
例如:
| |
然后:
| |
然后:
| |
第 5 步:合并结果
工具返回的内容进入模型上下文。
模型现在可以综合比对:
第 6 步:给出建议
最终回答可能是:
“Acme 在过去 30 天开了 5 张高优先级工单,其中 3 张是同一个计费问题。最近的对话也显示客户对续约存在顾虑。建议将该客户升级给企业支持团队。”
这才是 AI Agent 与真实世界交互。
而不只是生成文本。
底层发生了什么?
重点在于:MCP Server 不只是另一个 HTTP endpoint。
它暴露的是关于能力的元数据。
概念上:
这些元数据可以描述:
- 工具名
- 描述
- 输入 schema
- 资源
- 提示词
- Server 能力
模型据此判断该采取什么动作。
这是它与传统集成模型的关键差异之一。
MCP 改变了模型与软件的关系
这里正在发生一个更大的转变。
最初,LLM 主要生成文本。
后来模型有了工具调用能力。
MCP 把这件事推向更标准化的模型:
模型可以在这个循环里持续推进:
这是越来越智能体化(agentic)的系统的基础。
MCP 不只是工具调用
很容易这样想:
“MCP 不就是标准化的 function calling 吗?”
这个理解太窄了。
工具调用是 MCP 的重要部分,但更宏观的理念是对上下文和能力的标准化访问。
AI 应用可能需要:
这些合在一起,才让 AI 系统能够与外部环境交互。
这也是 Model Context Protocol 里 Context 一词的分量所在。
安全怎么办?
谈 MCP 的兴奋,必须和工程现实平衡。
给 AI Agent 工具访问权,等于让一个由概率推理驱动的软件去操作外部系统。
这带来了严重的安全问题。
权限
AI Agent 应该被允许:
| |
但不被允许:
| |
当然应该。
工具权限必须显式定义。
认证
MCP Server 需要与其部署场景相匹配的安全认证和授权机制。
最新的 MCP 规范持续演进其授权模型;2026 年 7 月 28 日的规范版本进一步强化了授权,并在签发方校验(issuer validation)和客户端元数据方面做了改动。
提示词注入
设想一个会取回外部文档的工具。
其中一份文档写着:
如果这段内容进入模型上下文,它就落入了 Agent 的安全边界之内。
模型需要区分:
| |
和:
| |
这不是 MCP 独有的问题。
这是所有能接触外部信息的 AI Agent 都要面对的根本挑战。
破坏性操作
读数据是一回事。
改数据是另一回事。
Agent 可能被允许:
| |
但在做下面这些之前必须人工确认:
这正是人工审批、策略执行和工具级授权变得重要的地方。
MCP 本身也在快速演进
MCP 不是静态协议。
2026 年 7 月 28 日的规范带来了一次重大的架构更新,包括:无状态协议核心、多轮往返请求、基于 header 的路由、可缓存的列表结果、授权强化、正式的扩展框架,以及正式的废弃策略。
这很重要,因为生产基础设施和本地原型的要求完全不同。
被真实 Agent 系统使用的协议,必须考虑:
- 可扩展性
- 路由
- 缓存
- 授权
- 可靠性
- 向后兼容
- 可观测性
从协议的方向可以看出,MCP 正越来越被当作基础设施,而不只是开发者的实验性便利工具。
MCP 会取代 API 吗?
大概不会。
至少不是这种意义上的:
| |
更好的思考方式是:
对于确定性的软件到软件通信,API 依然非常出色。
MCP 解决的是另一个问题。
API
“软件可以这样调用我的服务。”
MCP
“AI 应用可以发现并使用这些能力。”
这两层可以共存。
事实上,它们很可能会共存。
更大的转变:从 API 到能力
这是我觉得 MCP 最有意思的地方。
多年来,开发者的思考单位是集成(integration)。
例如:
“我们要把自己的应用和 Salesforce 集成起来。”
有了 AI Agent,问题开始变。
与其问:
“我怎么把这个 AI 应用和 Salesforce 集成?”
不如问:
“我的 AI Agent 应该能访问哪些能力?”
例如:
底层系统可能是:
但 AI 不必主要按这些系统来思考。
它按能力来思考。
对 Agent 而言,这是自然得多的抽象。
互操作的 AI 生态
设想一个未来:企业通过 MCP Server 暴露自己的能力。
你可能会有:
开发者不需要为每个系统写一套完全定制的集成,就能做出 AI Agent。
Agent 可以直接发现兼容的能力。
这就是互操作的承诺。
同一项底层能力,有潜力被不同的 AI 应用消费。
这对开发者意味着什么
如果 MCP 继续成为智能体系统的通用接口,开发者可能需要为产品准备两个接口。
人 / 软件接口
AI 接口
| |
这并不意味着每个产品都需要两者。
但对那些希望 AI Agent 能使用其能力的产品来说,暴露一个对 AI 友好的接口,可能会越来越有价值。
未来的架构?
一种可能的架构是这样的:
AI 应用成为推理层。
MCP 成为能力层。
API 和数据库仍是基础设施层。
这种分层很强大,因为每一层都可以独立演进。
重要提醒
要小心别把 MCP 变成又一次 AI 炒作。
MCP 不会自动让 AI Agent 变聪明。
它不解决:
- 幻觉
- 推理能力差
- 授权
- 提示词注入
- 不可靠的外部服务
- 糟糕的工具描述
- 错误的工具选择
- 业务策略
MCP 提供的是一个标准化接口。
Agent 的质量依然取决于模型、应用架构、工具、权限、数据以及周边的防护措施。
协议是使能者,不是智能本身。
MCP vs. API:记住这个心智模型
如果这篇文章你只记一件事,就记这个:
对比:
区别在于可发现性与上下文。
API 一般默认开发者已经想清楚了软件该做什么。
AI Agent 则往往需要动态地想清楚。
那传统 API 是失败了吗?
不是。
它们做的正是它们被设计来做的事。
问题是:AI Agent 是一种不同类型的软件消费方。
传统应用是确定性的。
AI Agent 可以是动态的。
传统应用知道该调哪个 API。
AI Agent 可能需要发现该用哪个能力。
传统应用可以把集成逻辑写进代码。
AI Agent 需要能被它推理的描述、schema、上下文、工具和结果。
这就是为什么行业需要另一层。
而 MCP 可能成为这个理念最重要的实现之一。
结语:从 API 到 AI 原生接口
MCP 最有趣的地方,不是它给了 AI 另一种调 API 的方式。
而是它改变了抽象。
我们过去习惯围绕 endpoint 来构建软件集成:
AI Agent 需要的东西更接近:
这是一种面向能力的模型。
也正是 MCP 令人信服之处。
未来大概不是:
用 MCP 取代 API。
而更接近:
MCP 负责面向 AI 的能力,API 负责服务间通信,两者协同工作。
更大的转变,是从硬编码集成走向可发现的能力。
从:
“我知道该调哪个 API。”
走向:
“我知道我要达成什么。有哪些能力能帮我做到?”
对 AI Agent 来说,这是自然得多的架构。
而如果这个模型胜出,MCP 就不只是一个新的开发者协议。
它可能成为 AI 模型与软件世界之间的结缔组织。