MCP vs Tool Calling
学到 Tool Use / Function Calling 和 MCP 之后,一个很容易混淆的问题就是:
MCP 和 Tool Calling 到底是什么关系,它们在解决同一个问题吗?
结论并不复杂:
它们有关,但不在同一层。
Tool Calling主要回答:模型怎么调用能力MCP主要回答:能力怎么被标准化提供给模型系统
这篇文档的目标,就是把这两个概念一次分清。
1. Tool Calling 在解决什么问题
Tool Calling 更接近模型运行时的问题。
它主要关心:
- 当前这轮是否需要调用工具
- 应该调用哪个工具
- 参数应 该长什么样
- 工具结果怎样回到模型上下文里
典型流程是:
- 用户提出请求
- 模型判断需要工具
- 模型生成结构化参数
- 系统执行工具
- 结果回注给模型
- 模型给出下一步或最终答案
这个过程通常是:
一次模型驱动的工具决策循环
2. MCP 在解决什么问题
MCP 更接近系统接入层的问题。
它主要关心:
- 外部能力怎么被发现
- 外部能力怎么被暴露
resources / prompts / tools怎么统一纳入协议- 不同客户端怎么复用同一套能力
典型问题包括:
- 一个 Figma 能力怎样被 IDE、聊天客户端和 Agent 平台共同使用
- 一个知识服务怎样既能提供资源,又能提供工具
- 工具与资源的权限、连接与协商怎样统一管理
MCP 更接近:
一套标准化接入协议
3. 一个最简单的类比
可以用下面这个类比:
Tool Calling像“模型会不会按下按钮”MCP像“按钮面板和电路接口是不是统一标准”
前者关注 调用行为,后者关注接入规范。
4. 为什么它们经常被混在一起
因为在真实系统里,这两层往往是连着出现的。
例如:
- 模型通过
tool calling决定要调用某个工具 - 这个工具本身可能来自一个
MCP server
于是从外面看,像是在做“一次工具调用”;但从系统内部看,其实跨了两层:
- 上层:模型决策与参数生成
- 下层:能力发现、协议协商、实际接入
5. 两者最核心的区别
5.1 关注点不同
Tool Calling 关心:
- 决策
- 参数
- 调用
- 回注
MCP 关心:
- 能力暴露
- 协议连接
- 资源 / 提示 / 工具的统一表示
- 多客户端复用
5.2 抽象层不同
Tool Calling 是模型行为层。
MCP 是系统能力接入层。
5.3 复用方式不同
Tool Calling 经常写在单个应用里。
MCP 更适合把能力抽成共享接入点,让多个应用一起使用。
5.4 能力边界不同
Tool Calling 主要面向可执行动作。
MCP 不只包含 tools,还包含:
resourcesprompts
它讨论的不只是“执行”,也包括“上下文供给”和“提示模板供给”。
6. 什么场景只需要 Tool Calling
下面这些场景,通常只做 tool calling 就够了:
- 一个最小 demo
- 一个单应用里的内部函数调用
- 少量固定工具
- 本地代码里直接注册函数
例如:
- 查天气
- 调一个内部 API
- 做一个单机版助手
这时重点是把调用行为跑顺,不一定需要额外引入协议层。
7. 什么场景更适合引入 MCP
下面这些场景,MCP 的价值会明显上升:
7.1 工具不止来自一个应用内部
如果能力来源已经包括:
- 设计工具
- 日历
- 文件系统
- 数据服务
- 代码仓库
而且希望统一管理,就更适合 MCP。
7.2 同一组能力要被多个客户端复用
例如同一个能力希望被:
- 桌面助手
- IDE
- 聊天界面
- 自动化 Agent 平台
共同使用。