你大概已经听过这句话:MCP 是 AI 领域的 USB-C。
这话没错,但它成功地把一个更尖锐的问题掩盖了——当协议真的标准化之后,我们为什么还需要 Agent 框架?
换句话说,如果每个工具都能通过 MCP 即插即用,那 LangChain、LlamaIndex、AutoGen、Claude Agent SDK 这些框架凭什么继续存在?它们到底在解决什么问题,还是说只是模型能力不够时的过渡产物?
这个问题我纠结了很久。2024 年 11 月,Anthropic 发布MCP 协议的时候,我第一反应是:这不就是给 AI 做的 USB 接口吗,以后接什么工具都是插上就用,框架层还有什么好折腾的。
后来真在项目里用了一遭,才发现这个类比只对了一半。
MCP 标准化的那一层,恰恰是最不重要的部分。
- MCP 只解决了传输问题:客户端怎么发现工具、怎么调用工具、结果怎么返回。它定义了协议,但没有定义模型怎么用这些工具。
- 框架解决的是决策问题:模型该调用哪个工具、什么时候调、参数怎么填、调用结果怎么解读、下一步怎么办。
一个画板,一个画家。MCP 是画板,框架是画家的大脑。
你真正在选的是「模型怎么做决策」这件事的答案
先看一个最简单的例子。
你让 Agent 查一下最近的天气,然后发一条微博。
如果没有 MCP,你要自己写代码调用天气 API、自己解析返回数据、自己调微博接口、自己处理 token 溢出。你写的不只是业务逻辑,你是从零搭一套工具调用机制。
有了 MCP,天气服务和微博服务都变成标准 MCP server,一个 fetch,一个 write。看起来一切变简单了。
但当你真正写 Agent 逻辑的时候,你会发现你仍然得回答一堆问题:
- 模型返回一个 tool_call,携带工具名和参数,你如何验证这个参数?
- 天气接口返回的数据结构很复杂,模型能否正确抽取关键字段?
- 微博写入失败,返回的 error code 模型能理解吗?要不要转换成自然语言喂回去?
- 这是个多步任务,前面结果会影响后面的决策,这个状态保存在哪?
MCP 一个都不管。
这就是为什么市面上的 Agent 框架看起来是在围绕 MCP 做适配,实际上每个框架都在用不同的方式回答「模型怎么做决策」。
LangChain 的问题不是大,而是什么都想要
讲个我的个人经历。
最早做 Agent 项目,我用的 LangChain。倒不是因为它最好,而是因为教程多,大家都在用,出了问题好搜。
但用了两周我就崩溃了。
LangChain 把 Agent 抽象成 Chain、Runnable、Tool、AgentExecutor 这一大堆概念。文档里每个概念都讲得明明白白,但把它们组合起来的时候,就像走进一个巨大的乐高仓库,你知道零件都在,但没人告诉你最终应该搭成什么样。
我记得有一次,我只是想让 Agent 在调用工具失败后重试一次。在 LangChain 里,你需要去理解 create_react_agent、AgentExecutor 的参数、回调机制——而这些概念本身的复杂度已经超过我要解决的问题了。
社区里有个说法:LangChain 的复杂度是数学上可证明的。你可以往上叠东西,但很难往下拆。
后来 Anthropic 在 2025 年发布Claude Agent SDK,我第一时间试了。一句话总结:它把我想要的东西做出来了,而不是把所有可能的东西做出来。
| 维度 | LangChain | Claude Agent SDK | 自研框架 |
|---|---|---|---|
| 抽象层级 | 高,概念多 | 低,贴近原生 API | 可控,但成本高 |
| MCP 支持 | 通过 langchain-mcp-adapters | 原生支持 | 需要自己实现 |
| 决策模型 | ReAct、Plan-and-Execute 等,可配 | 系统提示词 + 工具定义,轻量 | 完全自定义 |
| 学习成本 | 高 | 低 | 取决于你自己 |
| 透明性 | 中间件多,调试困难 | 源码短小,行为可预期 | 完全透明 |
| 适合谁 | 需要多模型、多 PROVIDER 切换 | 深度绑定 Claude | 有特定决策逻辑需求 |
Claude Agent SDK 的源码只有几千行。你完全能读懂它每一步在做什么。它的核心循环非常直接:
while not finished:
response = client.messages.create(model, tools, messages)
for block in response.content:
if block.type == 'tool_use':
result = execute_mcp_tool(block)
messages.append(block)
messages.append({'role': 'user', 'content': result})
就这么多。没有复杂的 Chain,没有 Runnable,没有 Memory 模块。它把 Agent 的本质摊开给你看:一个循环,一个与工具交互的循环。
MCP 之后,框架真正的差异化战场在哪
如果你拿掉所有营销话术,看框架实际在做什么,你会发现真正有价值的部分只有三块:
- 决策循环的设计:ReAct、Plan-and-Execute、反思、上下文压缩……不同框架用不同策略让模型在复杂任务中不迷路。
- 错误恢复机制:工具调用失败时怎么处理?重试?换一个工具?还是让模型自己反思?这直接决定了 Agent 在真实环境中的鲁棒性。
- 上下文工程:模型上下文有限,怎么把工具的描述、历史对话、用户目标塞进有限的窗口里,还让模型不混淆?这是框架最重要的隐形价值。
MCP 把工具接口标准化,确实帮了大忙——你不用再为每个工具写一脸自定义的 schema。但上面的三个问题,每个都是模型层的核心难题。
举个例子。
你给 Agent 挂了 20 个 MCP 工具。模型每次调用前都要把 20 个工具的描述读一遍——一次调用光工具描述就占用上千 token。
20 个还好,200 个呢?
工具路由就成了框架的分水岭。有的框架会在模型调用之前做一次 rank 或 embedding 匹配,只把最相关的 5 个工具的描述送给模型。有的框架则直接把所有工具一股脑塞进去,让模型自己挑。
后者在 10 个工具时看起来没区别,到 100 个工具时,模型已经开始行为异常,到 200 个时,直接不可用。
这就是为什么我认为:框架真正的长期价值,在于它如何管理工具的规模效应。可惜目前大多数框架还在用「全塞进去」这种懒惰方案。
一个实际的选型心得:我最终是怎么选出来的
我自己的项目经历了两个阶段。
第一个阶段用 LangChain,被复杂的抽象磨得没脾气。第二个阶段换成 Claude Agent SDK,豁然开朗。但我不是劝你无脑用它。
事实上,我的最终选择是自己写一个不到 300 行的 Agent loop,只做一件事:让模型能调用 MCP 工具,然后处理结果。因为当我的项目足够简单时,任何框架都是多余的。
你可能会问:那为什么不直接用 Claude Agent SDK?因为它绑定了 Claude。我的业务场景需要同时支持 Gemini 和 Qwen,所以我自己写了个抽象层,在中间塞了个通用的 tool calling 接口。
这个过程中,MCP 的价值反而突显了——因为所有模型都支持 OpenAI 兼容 tool calling,而 MCP 把我的工具层和模型层完全解耦,换个模型只需要改一个 API 地址。
FAQ:几个常见的困惑
问题一:MCP 都出来了,我是不是不该再用框架自带工具?
框架自带工具(比如搜索、文件读写)和 MCP 不冲突。如果你只需要一两个内置能力,直接用框架的就行,没必要非得套一个 MCP server。MCP 的好处在于跨框架复用,而不是用 MCP 本身。

问题二:LangChain 是不是已经被 MCP 淘汰了?
没有。LangChain 的生态依然庞大,它适配了 MCP,你依然可以用 LangChain 的思路去写 Agent,MCP 只负责接工具。但如果你问我的忠告:小项目别用 LangChain,它的抽象过多,调试成本高。大项目也别用,除非你的团队已经非常熟悉它的心智模型。
问题三:自研 Agent 框架值不值得?
如果你的业务核心就是 Agent 逻辑,而且你发现通用框架在决策、状态管理上有瓶颈,那自研是值得的。但注意,自研的是「决策循环」这部分——工具接入、工具发现、MCP 握手这些底层协议你没必要自己造轮子。
框架的价值,最终由模型的进化定价
写到最后,我心里那个最初的疑问其实有了新的答案。
当 MCP 把工具协议标准化之后,框架的价值并不在于「连接工具」——那是最廉价的劳动。真正有价值的是:
- 如何在有限的上下文窗口里,合理地呈现这个世界的信息给模型;
- 如何在模型出错时,构建一个能让它优雅恢复的循环;
- 如何在多个工具之间,做出正确的路由决策,而不是让模型对着 200 个工具发呆。
这些问题的答案,会随着模型能力的进化而被不断重写。今天的 Claude 可能不需要复杂的工具路由,但未来的某个开源小模型或许需要;今天的 LangChain 可能过度设计,但未来如果模型调用成本降低、工具数量暴增,现在看起来「复杂」的框架反而会重新被需要。
所以,你不用问我「哪个框架最好」,我只会回答你:先想清楚你的 Agent 需要做出的决策是什么——是简单的工具调用,还是多步规划?你的工具规模有多大?你的模型会不会换?
想清楚这些,选型和自研的答案自然浮出水面。
而当协议之战尘埃落定,真正拉开差距的,永远是那个在循环里反复做决策的模型本身。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/346.html