最近总有人问,function calling、MCP、tools 这几个东西到底啥区别,
感觉名字很像,又都跟大模型调用外部工具有关,一聊就容易晕
今天咱们把它捋清楚,详见配图说明

Tools
你可以把 Tools 理解成"工具箱里的各种家伙",
比如:查天气的 API 、发邮件的服务 、操作数据库的函数,在 LLM 应用里统统叫 Tools。
它本身只是个抽象概念,不限定你怎么实现,也不规定怎么跟模型交互。
你就是告诉模型:"二狗子,这儿有把螺丝刀,这儿有个扳手,你看着用,"
至于模型怎么挑工具、什么时候用,那是另一回事。
Function Calling
这是 OpenAI 等模型厂商提供的一项具体能力,属于 Tools 概念的一种落地方式,
它的过程很直白 :你在请求里把工具定义成一堆 JSON 函数声明 (名字、参数、描述),模型如果觉得需要调用工具,不会直接执行,而是返回一个"function_call"对象,里面写着想调哪个函数、传什么参数。
你拿到后自己在代码里执行,把结果再喂给模型。
这就好比:模型是老板,你在旁边当秘书,
老板说"查一下北京的天气 ",但老板本人不会开电脑,他只能说"你帮我去调用 get_weather,参数 city=北京"。
老板能张嘴提要求,就是 Function Calling 在工作。
MCP(Model Context Protocol)
这玩意跟上面两个完全不在一个维度上。
它不是你调用模型时加个参数就能用的东西,而是一套工具连接的"标准协议",
在 MCP 之前,你想给一个 AI 助手接上** Gmail、接上数据库、接上文件系统**,基本是各家写各家的胶水代码。
换一个大模型客户端,又得重写一遍,
MCP 干的事就是规定一种 C/S 架构:有 MCP Server 专门暴露工具(比如查天气、读文件),有 MCP Client(比如 Claude Desktop、你的聊天应用)去连接这些 Server。
模型不用关心工具怎么实现的,只要能通过 Client 发标准请求就行。

打个比方:
- Tools 是"家用电器"------微波炉、空调、电灯。
- Function Calling 是"语音遥控"------你喊一声"开空调 26 度",音箱识别出意图,返回一个操作指令,但还是得有人去按开关。
- MCP 是"统一的智能家居插座协议"------有了它,无论哪家造的空调、谁开发的语音助手,只要都遵守 MCP 这个插头标准,插上就能用,不用每次都重新布线。

那日常开发里怎么区分它们,避免说混?
- 你跟同事说"咱们给助手加几个 tools ",指的是定义可调用的能力。
- 你翻 OpenAI 文档时说的"我用了 function calling ",指的是模型吐出调用请求这个动作。
- 你在搭建 AI 应用基座时讨论"这个组件接 MCP 吧 ",指的是想让工具对接标准化,未来换模型或换客户端不费力。
完整调用流程

请求 (带 tools 定义)
Bash
POST /v1/chat/completions
{
"model": "gpt-4",
"messages": [...],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {...}
}
}
]
}
响应 (Function Calling)
JSON
{
"choices": [{
"message": {
"content": null,
"tool_calls": [{
"id": "call_xxx",
"type": "function",
"function": {
"name": "get_weather",
"arguments": '{"city":"北京"}'
}
}]
}
}]
}
简单总结一句话:Tools 是你要用的能力,Function Calling 是模型说要怎么用,MCP 是让这些能力按统一方式接进来的管网。