Function Calling、MCP 与 Tool Use 有什么关系和区别?

考查重点:调用表达、连接协议与执行。Function Calling 表达工具名与参数,MCP 统一外部能力连接,Tool Use 泛指工具使用;真实执行仍由应用负责

本题目录

参考答案

核心回答

Function Calling 通常指模型通过约定格式表达工具名称和参数的机制;MCP 是应用与外部能力提供方之间的标准连接协议;Tool Use 泛指使用工具,也常被厂商用作 Function Calling/Tool Calling 的接口名称。 三者可以出现在同一条调用链里,不能机械地划成互斥的三种方案。

  • Function Calling/Tool Calling:解决模型如何接收工具定义、提出调用请求,以及结果怎样关联回本次调用。实际执行由应用、工具服务或供应商运行时负责。
  • MCP:解决宿主应用怎样发现和调用外部工具、读取资源或获取提示模板。工具部分有自己的定义、请求和结果契约。
  • Tool Use:描述工具使用过程时范围较宽;在具体 API 文档里也可能就是结构化工具调用的名字。例如 Anthropic 明确把 tool use 与 function calling 并称。

例如“查北京天气”:模型生成天气工具调用后,应用可以直接调用本地函数或 HTTP API;也可以把请求交给 MCP Client,再由天气 MCP Server 执行。没有 MCP 仍能做 Function Calling;接入 MCP 也不会自动让模型选对工具或填对参数。

模型调用契约与 MCP 契约分别约束什么

模型侧的工具定义通常包含名称、用途和参数 Schema。模型返回调用请求后,执行层解析名称与参数,检查类型、权限和业务条件,执行操作,再按模型接口要求回传结果。调用标识用于把结果对应到正确的工具请求,尤其在多个工具并行时很重要。

MCP 则规定客户端与服务器之间的协议消息。按 2026-07-28 规范,客户端通过 tools/list 取得当前可用工具定义,其中包含 inputSchema;调用工具使用 tools/call,携带名称和参数。它还规定结果、错误、能力与相应的访问控制要求。

这两层格式不能直接画等号。宿主或适配器可能需要把 MCP 定义转换成模型接口支持的工具格式,把模型请求映射成 MCP 调用,再把 MCP 返回内容转换成模型需要的工具结果。模型 API 的调用 ID 与 MCP 的 JSON-RPC 请求 ID 属于不同契约,需要关联,不能假定是同一个字段。

MCP Server 内部仍可以访问普通 HTTP API、数据库或本地文件;底层业务接口并不会因为外面包了一层 MCP,就自动具有理解自然语言的能力。

用天气查询串起完整过程

以应用执行的自定义天气工具为例:

  1. Host 内的 MCP Client 从天气 Server 发现工具,宿主按权限和当前任务筛选,再转换成模型可用的工具定义。
  2. 用户询问北京天气,模型生成天气工具名称及地点参数。
  3. 宿主检查调用并映射到对应 MCP Server,通过 tools/call 发起请求。
  4. Server 执行天气查询,返回结果或错误。
  5. 宿主把结果按模型接口要求关联回原工具调用,模型据此回答,或继续下一步。
flowchart TD
  A[Host 通过 Client 请求工具列表] -->|MCP tools/list| B[Server 返回工具定义]
  B --> C[Host 筛选工具并交给模型]
  C -->|模型 API| D[模型返回工具名称和参数]
  D --> E[Host 校验并发起工具调用]
  E -->|MCP tools/call| F[Server 执行并返回结果]
  F --> G[Host 按模型 API 回传结果]

图中 Host 与 Server 之间的发现、调用走 MCP;Host 与模型之间使用模型自己的工具调用格式。这里的模型没有直接生成或发送 MCP 网络请求。若不用 MCP,Host 可以把执行步骤换成本地函数或业务 HTTP 客户端,模型侧仍可以保持相同的工具使用方式。

为什么 Tool Use 不能总被定义成另一套独立机制

讨论 Agent 行为时,Tool Use 可以包括选工具、生成参数、执行、观察结果和继续行动;这比单次参数生成更宽。但具体供应商可能把整套工具调用接口也命名为 Tool Use。

例如 Claude 文档中,自定义客户端工具返回 tool_use 内容块,由应用执行后发送 tool_result;部分服务器工具则由 Anthropic 托管执行。执行位置不同,但都属于其 Tool Use 能力。因此,不能看到“模型 API 里提供了工具”就认定一定由自己的业务代码执行,也不能把厂商托管工具与 MCP Server 混为同一种服务。

实际交流中应先说明所采用的语境:是在说 Agent 使用工具的行为,还是某家模型接口的名称,再解释调用链中谁生成请求、谁执行、结果怎样返回。

什么时候直接接工具,什么时候接 MCP

如果只有少量内部函数、同一应用独占使用,直接定义模型工具并连接现有服务,通常更简单。团队仍可把工具封装成共享库或普通 API,不需要因为使用 Function Calling 就重复实现所有业务代码。

如果文件、数据库、搜索等能力要供多个宿主复用,或需要接入现有 MCP 生态,MCP 可以统一发现、描述与调用方式,减少重复连接工作。代价是维护客户端、服务器、版本兼容、认证、错误处理和运行状态。是否采用取决于复用需求及维护成本,不取决于“Agent 必须用 MCP”。

MCP 还包含 Resources、Prompts 等能力,不只服务于工具执行;是否开放以及怎样进入模型上下文,由宿主与具体能力契约决定。

两层都有契约,也都不能代替业务判断

参数符合 Schema,只能证明满足相应结构约束,不能证明订单归属、资源访问范围或动作时机正确。发现到工具也不等于获得执行授权,宿主与 Server 仍要按各自职责校验。

同样,MCP 请求传输成功不等于业务成功;应区分协议错误、工具执行错误和有效业务结果,再决定修正参数、重试、换路径或结束。模型看到结果后也可能表述错误,所以还要检查最终回答是否与工具证据一致。具体执行校验见如何保证工具调用正确、安全地执行。

协议和模型 API 都会演进。实际实现应匹配协商的 MCP 版本和当前供应商契约,不能把旧 SSE 示例、某个 SDK 的自动适配能力或当前扩展字段当成所有环境默认支持。

追问:不支持原生 Function Calling 的模型能用 MCP 吗?

MCP Client 可以由用户界面、规则或普通程序直接发起工具请求,并不要求一定由模型选择。若希望模型参与决策,也可以解析它输出的受控动作格式,再由程序校验和执行,但格式稳定性、参数合法性和错误恢复需要额外处理。MCP 本身不会给模型补上原生工具调用能力,也不保证这条替代路径同样可靠。

对应教程

  • 第 17 章:Tools 工具调用:§2.2–2.3 说明模型接收工具名称、描述和参数定义,以及调用意图与实际执行的分工;示例以应用执行工具为主。
  • 第 20 章:MCP 模型上下文协议:§2.2、§3.2 与 §5.5 介绍 Tool/Function Calling 和 MCP 的不同职责、服务器能力及完整调用过程;具体协议行为仍应对照实际版本。

参考资料

  • 国内:JavaGuide:结构化输出与 Function Calling:依据工具调用链与 MCP/HTTP API 的关系,说明正文中模型请求、执行映射和结果回填如何协作,以及为何没有固定多层包装顺序。
  • 国内:Onefly / zero2Agent:Agent 核心概念中的 MCP 专题:采用模型调用意图与工具连接标准的划分,区分正文中两者解决的问题;工具复用仍需宿主适配和权限条件。
  • 国内:Datawhale:第十章 智能体通信协议:借鉴 §10.2.1 中 GitHub、文件工具的直接调用与 MCP 接入示例,说明正文中同一任务的两种执行链路及 Host、Client、Server 的分工。
  • 国外:Anthropic:Tool use with Claude:依据工具使用定义与客户端、服务器工具交互,说明正文中 Tool Use 与 Function Calling 的命名关系,以及请求和结果的处理职责。
  • 国外:MCP:Tools,2026-07-28 规范:依据工具发现、调用、结果和安全约定,说明正文中 MCP 的实际消息契约及其与模型工具调用格式的区别。

相关面经

18 篇

曹操出行

后端实习
实习
查看原面经 →
mcp和functioncall区别

水滴

AI全栈
校招一面
查看原面经 →
Function Calling 和 MCP 有什么区别和联系?

字节跳动

AI全栈实习生
日常实习一面
查看原面经 →
MCP和function call有什么区别?

腾讯

安全技术(风控算法方向)Agent 开发
一面
查看原面经 →
MCP 和直接提供 REST API、Function Calling 的区别是什么?

字节跳动

全栈开发工程师
二面
查看原面经 →
Tool Calling、 MCP 和 CoI 的概念区别
追问
那什么情况下我应该直接去做这个 Tool Calling,或者是走 Tools?什么情况下你的判断要走到 MCP 呢?
展开剩余 13 篇面经

阿里巴巴

AI 应用研发工程师
校招秋招一面
查看原面经 →
Skill、MCP、Function Calling三者区别是什么

钉学科技

FDE 实习
实习
查看原面经 →
mcp和function-call的区别?

小满科技

Agent 开发
社招一面
查看原面经 →
Skill、MCP、CLI、Function Calling 在你体系里分别干什么?

哔哩哔哩(B站)

Agent 开发
社招二面
查看原面经 →
MCP 和 Function Calling(Tools)有什么区别?

字节跳动

后端开发工程师(AI / Agent 方向)
实习二面
查看原面经 →
Skill、MCP、Tools、Function Calling 分别是什么?解决什么问题?

花小小新疆炒米粉

AI 工程师
社招
查看原面经 →
Function Calling、MCP、Tool Use 这三个概念什么关系?

字节跳动

后端开发工程师
日常实习一面
查看原面经 →
agent中,Function calling,MCP,skill是什么,什么场景该用什么

高德

Agent 后端开发
日常实习一面
查看原面经 →
d. 说说大模型和Agent区别,MCP和Function Call 区别

蚂蚁集团

Agent 开发工程师
实习一面
查看原面经 →
function calling和MCP相比,是不是可以没有MCP?

蚂蚁国际

AI 应用 / Agent 开发
暑期实习一面
查看原面经 →
function calling和MCP相比,是不是可以没有MCP?

美团

后端开发
日常实习一面
查看原面经 →
举一个具体的 Case 来说明 Function call 和 MCP 的差异

腾讯

后端开发工程师
一面
查看原面经 →
如何支持 MCP 的,MCP 和 function calling 区别

字节跳动

AI Agent
实习二面
查看原面经 →
MCP和Function Calling

收录题集

9 个来源,共15 份题集
展开剩余 10 份题集

AI 智能体与大模型应用开发面试题库

didilili · ai-agents-from-zero · 3 条原题

查看题集 →

MCP 与工具调用

沉默王二 · 王二讲 Agent · 1 条原题

查看题集 →

Agent 面试题

Guide · JavaGuide · 1 条原题

查看题集 →

AI 机制与工程问答

Guide · JavaGuide · 1 条原题

查看题集 →

Agent 机制与项目追问

Guide · JavaGuide · 2 条原题

查看题集 →

AI 导读问题

Guide · JavaGuide · 2 条原题

查看题集 →

大模型基础面试题

Guide · JavaGuide · 1 条原题

查看题集 →

Agent 面试题

卡码笔记 · 个人整理 · 1 条原题

查看题集 →

LLM 工具调用面试题

小林 Coding · 个人整理 · 3 条原题

查看题集 →

概念考察:Harness Engineering、Context Engineering 与前沿范式

Onefly · zero2Agent · 1 条原题

查看题集 →

相关题目

4 题