← [ BACK_TO_NOTES ]

MCP vs Function Calling

Function Calling 解决模型如何表达一次结构化工具调用;MCP 解决工具、资源和提示如何以统一协议被 AI Host/Client 发现、连接和使用,两者位于不同抽象层并可组合。

#synthesis #growing #ai #mcp #function-calling

[!info] related notes

MCP vs Function Calling

范围

本文只比较:

二者经常一起出现,但并不处在同一抽象层。

一句话关系

Function Calling 更关心“模型怎样表达这次工具调用”;MCP 更关心“外部能力怎样以统一协议接进 AI 客户端”。

Function Calling 解决什么

模型得到一组工具定义后,可以输出结构化调用意图:

Model
  ↓
tool name + arguments
  ↓
Host / Backend 真正执行

重点是:

  • 选择哪个工具;
  • 生成哪些参数;
  • 把工具结果重新交给模型。

它不要求这些工具必须来自 MCP。

MCP 解决什么

MCP 关注的是能力接入协议:

Host
  ↓
MCP Client
  ↓
MCP Server
  ├─ tools
  ├─ resources
  └─ prompts

它定义了客户端如何发现和调用 Server 暴露的能力,而不是规定模型内部必须用哪一种推理或调用 API。

两者可以怎样组合

一个常见路径是:

MCP Server 暴露 tool
       ↓
Host 发现 tool schema
       ↓
把可用工具交给模型
       ↓
模型产生结构化 tool call
       ↓
Host 通过 MCP Client 调用 Server
       ↓
结果回到模型

因此 MCP 与 Function Calling 更像:

能力接入层 + 模型调用表达层。

不要把两者混成替代关系

错误问题:

“有 MCP 以后还需不需要 Function Calling?”

更准确地问:

  • 工具从哪里发现和连接?
  • 模型怎样表达使用哪个工具?
  • 谁执行工具?
  • 谁负责参数校验、权限、超时和错误恢复?

这些职责可能跨 MCP、模型 API 和 Agent Runtime 多层完成。

最小例子

假设一个 MCP Server 暴露:

search_repo(query)

MCP 负责让 Host 获得这个工具及 schema。

当用户问“代码里哪里实现了鉴权”时,模型可以通过 Function Calling / Tool Calling 机制生成:

{
  "name": "search_repo",
  "arguments": {
    "query": "authentication"
  }
}

真正的搜索由外部 Server 执行。

学习检查

  1. Function Calling 与 MCP 分别主要解决哪一层问题?
  2. 模型返回 tool name + arguments 后,谁真正执行工具?
  3. 一个工具不是 MCP 提供的,还能不能使用 Function Calling?
  4. MCP Server 暴露 tool 后,模型是否一定自动理解何时调用它?
  5. 画出“模型通过 MCP 工具搜索代码”的最小端到端链路。
创建于 2026/9/30 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本