Appearance
35. MCP 和 Function Calling 的关系是什么?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:MCP 和 Function Calling 的关系是什么?
🙋♂️我:MCP 是协议,Function Calling 是模型能力。
👔面试官:对,但还有更精确的描述:Function Calling 是"模型侧的结构化调用机制",MCP 是"应用侧的统一能力接入协议"。两者是上下层关系,不是替代。你能讲清楚如何配合吗?
🙋♂️我:Function Calling 决定"调什么",MCP 决定"怎么接"?
👔面试官:对,而且 Agent 可以在 MCP 暴露的能力之上,继续用 Function Calling 做调用决策。MCP Server 暴露 Tools,模型通过 Function Calling 决定调用哪个 MCP Tool。
💡 简要回答
关系:上下层配合,不是替代。
| 层级 | 角色 | 解决什么 |
|---|---|---|
| Function Calling | 模型侧机制 | 模型如何表达"要调用哪个工具、传什么参数" |
| MCP | 应用侧协议 | 外部工具、资源、提示如何统一暴露和接入 |
配合方式:
- MCP Server 暴露 Tools
- Agent 用 Function Calling 决定调用哪个 MCP Tool
- 两者是"决策层"和"接入层"的分工
📝 详细解析
分层理解
┌─────────────────────────────────────┐
│ Agent / LLM │ ← 决策层
│ ↓ Function Calling │
├─────────────────────────────────────┤
│ MCP Client │ ← 协议层
│ ↓ MCP Protocol │
├─────────────────────────────────────┤
│ MCP Server (Tools/Resources) │ ← 能力层
│ ↓ 具体实现 │
├─────────────────────────────────────┤
│ 外部系统 (API/Database/File) │ ← 资源层
└─────────────────────────────────────┘工作流程
- MCP Server 注册 Tools(含 schema、描述)
- Host 发现 MCP Server,加载 Tools
- 用户提问 → 模型分析 → 决定调用某个 Tool
- 模型输出
tool_calls(Function Calling) - Host 通过 MCP Client 调用 MCP Server
- 结果回传给模型 → 继续推理
关键认知
- 不是替代:MCP 不取代 Function Calling
- 是增强:MCP 让 Function Calling 有统一的能力池可调用
- 分层清晰:模型只管决策,MCP 管接入,Server 管实现
🎯 面试总结
Function Calling 是模型决策机制,MCP 是应用接入协议。两者配合,分层清晰。