Appearance
73. AI Agent 中 Function Call 和 MCP 的区别是什么?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔 面试官:Function Call 和 MCP 都能让 Agent 调工具,有啥区别?
🙋 我:MCP 是新出来的,比 Function Call 更先进?
👔 面试官:「更先进」说明你没想清楚它们解决的是不同层次的问题。你能说清楚两者的关系吗?
这道题考的是分层思维,不是时间先后。
💡 简要回答
Function Call 和 MCP 解决的是不同层次的问题,不是替代关系,而是层叠关系:
- Function Call:解决的是「LLM 如何结构化地表达调用意图」——让模型输出 JSON 而不是自然语言来描述工具调用。
- MCP:解决的是「工具如何被标准化暴露给任意 Agent」——在 Function Call 的基础上,定义了工具发现、通信、传输的完整标准协议。
可以这样理解:Function Call 是大脑发出的指令格式,MCP 是连接大脑和手脚的神经系统标准。
📝 详细解析
从问题出发理解两者
Function Call 解决的问题:LLM 只会输出文字,怎么让它「告诉」我要调哪个工具、参数是什么?
答案是:训练模型识别工具调用意图,并以结构化 JSON 格式输出调用请求,而不是自然语言。这是模型侧的能力,是 LLM 学会的一种「语言」。
MCP 解决的问题:工具越来越多,每个框架接每个工具都要写适配代码,生态碎片化怎么办?
答案是:制定标准协议,让工具提供方按标准开发 Server,Agent 框架按标准实现 Client,两者通过协议互通,不需要点对点适配。
层叠关系可视化
用户意图
↓
LLM 推理 + Function Call ← 「我要调 get_weather,参数是北京」(JSON 格式)
↓
MCP Client 发起请求 ← 「通过 MCP 协议,找到对应的 Server 并发请求」
↓
MCP Server 执行工具 ← 「调天气 API,返回结构化结果」
↓
结果回到 LLMFunction Call 发生在「LLM 决策层」,MCP 发生在「工具接入层」。两者协同工作,前者负责「想清楚要调什么」,后者负责「找到工具并调通」。
对比速查
| 维度 | Function Call | MCP |
|---|---|---|
| 解决问题 | LLM 如何表达调用意图 | 工具如何被标准化暴露 |
| 所在层次 | LLM 能力层(模型侧) | 工具集成层(架构侧) |
| 关键产出 | 结构化 JSON(tool_calls) | 统一通信协议(JSON-RPC) |
| 发明方 | OpenAI(2023) | Anthropic(2024) |
| 关系 | 基础能力 | 在 FC 基础上的上层规范 |
🎯 面试总结
别说「MCP 取代了 Function Call」,这两者根本不在同一层。答题时要点出层叠关系:Function Call 是模型学会的「调用语言」,MCP 是行业制定的「接入标准」,两者配合才构成完整的工具调用闭环。能画出上面那个调用链路图,这道题就答满了。