AI Agent 常提的MCP、Function Calling 有什么区别与联系?
本文对比分析了AI领域三个关键概念:Function Calling、MCP和AI Agent的区别与联系。Function Calling是让大模型输出结构化指令调用外部工具的协议;MCP是标准化工具接入与调用的协议,支持多步骤任务规划;AI Agent则是整合两者的完整智能系统,具备记忆和自省能力。文章指出,简单任务用Function Calling足够,复杂任务需结合MCP进行多步规划,最终
我最近也是和不少朋友讨论到两个热词:MCP 和 function calling,大家也常把它们和 AI agent 放在一起谈,可能聊的多,但是概念上多少有点傻傻的分不清。
所以,正好趁着这个回答,我试着用工程师的视角,把三者的定位和关系大致给大家梳理一下。
✍️ 先说 function calling
他本质上是一种模型输出结构化指令的协议。
我们给大模型定义好一份函数列表和 JSON-Schema,模型在对话中识别到需要用工具时,就返回一个标准化的 JSON,对应哪个函数、填什么参数。后端解析后真正去调用数据库、Python 脚本或者第三方 API,然后把结果再送给模型继续对话。你可以把它看成是大模型变成了一个智能的路由器,把非语言任务派发给外部函数来执行。
✍️ 再看 MCP
它常常被译成Model-Composed Program或者 Multi-Call Prompting。和function call不一样,MCP 的重点不在于怎么调函数,而在于让模型自己写一个可执行的多步骤计划。
典型的玩法是,你给模型一个高层目标,它先产出一段 JSON 或自然语言清单,里面列好步骤 1、2、3,以及每一步对应要调用的工具或要生成的中间数据。执行器再按这份计划书去跑,把结果迭代回模型。
如果说 function calling 是一步之内把函数签名和参数都填好,MCP 更像是先让模型写作业提纲,然后再逐条展开。它解决的是复杂多步场景下的分解——调度——收敛问题。
✍️ 那 AI agent又是什么?
Agent 通常指的是一个带记忆、带长期目标、具备自我反思和行动循环的整体系统。它可以用 MCP 做高层规划,用 function calling 做具体行动,并且再循环里根据外部环境和历史对话不断更新策略。
简单来说,我打一个比方:
agent 是一个组织,MCP 就是它的项目经理,负责列 roadmap;function calling 更像是执行层的小工具人,接到指令就去干活。
从开发者的角度来看,如果你现在想要快速给现有的应用添加一个「搜索知识库」之类的单点功能,function calling 就足够了。
但是当你想要做一个从读文件——分析数据——写报告——最后发邮件的复杂链路,就要先让模型通过 MCP 自己拆步骤,再配合 function calling 保证每一步可执行,整个循环跑起来才是真正的 agent 行为。
总结起来就是:
-
function calling 解决的是调用外部能力的最后一公里;
-
MCP 解决多步任务的规划与编排;
-
而 AI agent 则把两者粘在一起,加上记忆和自省,形成一个可以持续工作的智能体。
所以希望大家能够在做产品或者做科研的时候能选对武器,不要把螺丝刀当榔头,也别拿总施工图去拧一颗螺丝。
3 个月前我跟某外企大厂技术团队培训时,也说 MCP 就是 Agent 界的 Type-C 接口协议。现在,我想这样来比喻:
-
Function Call 是 10 年前打电话给你常去的那家店点餐;
-
MCP 使得现在在美团上可以点任意一家店的菜;
-
Agent 就是那个帮你点外卖的人。
关注这个话题的朋友,大多是开发者。此文假设你是了解大模型应用开发的。我尽量用简单地解释,不搞大而全的罗列,有什么疑问可留言,或者直接 AI 搜索。
✍️ 背景:为什么要有 Function Call 和 MCP?
大模型的知识一旦训练好,就会逐渐过时。要获取最新信息,就得调用外部工具——通常就是 API。
2023 年 6 月,OpenAI 推出了支持 Function Call 的 GPT-3.5 Turbo API。我当时还写过一篇文章介绍Function Call《 API 调API:GPT 开发能力进一步扩展。》
本质上就是在和模型对话时,通过 chat completion 接口,附带一份「工具说明书」(JSON格式的 API 说明),让大模型决定是否需要调用这些工具,获取外部数据后再返回给你。
✍️ Function Call 的工作流程
用 Function Call 的对话流程,其实是在原有的模型一问一答之间,插入了三步(见下图),多了一次 chat completion 和一次外部函数调用。
比如你问「巴黎的天气怎样?」,整个流程如下:
-
向大模型发送用户问题,并在请求体里附上 get_weather的function 定义(JSON 格式)。
-
大模型分析后,决定调用 get_weather 方法,返回内容中 completion.choices[0].message.tool_calls 不为空。
-
本地根据 tool_calls 的内容,实际调用 get_weather ,获得巴黎的天气信息。
-
把用户原始问题和刚查到的天气信息,再发给大模型。
-
大模型基于完整对话和新获取的信息,自然地回复巴黎的天气情况。
想看 API 细节,可以参考 OpenAI 官方文档(platform.openai.com/docs/guides/function-calling)。
比如查天气时,发送给 chat completion 接口的 body 里有一个 tools 字段,里面可以定义多个 function,包括名字、说明、参数等。
Function 定义示例
✍️ 各家厂商的 Function Call 实现不一
Function Call 很好地解决了大模型调用外部工具的问题——只要附上工具说明,工具实现由开发者负责。
不过,不同厂商 API 的支持格式不一样,比如 Claude API 把 OpenAI 的 parameters 字段换成了 input_schema。每家大模型的函数调用方式都有些差异,所以每个 Function 都得单独适配。
不同 API 的差异
所以,如果只用Function Call,就是下图左边的样子。每多一个工具,都要在代码里增加适配,开发和维护都很繁琐。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
✍️ MCP 出现后的变化
有没有办法能让大模型调用所有工具都更简单?大家约定一个标准协议,大模型和工具端都只需适配一次,不用重复开发。MCP(Model Context Protocol)就是为此而生,让右边的流程变得清爽。
实际开发中,Function Call 的 tools 字段一多,维护起来确实很麻烦。MCP 的出现,极大简化了开发和使用流程。
✍️ MCP 的三层角色
MCP 模式下,有三种角色:
-
Host(宿主应用):执行LLM的主程序,如Cursor、桌面版Claude、VSCode插件等。
-
Client(客户端连接器):集成在宿主应用中,负责和Server通信、能力协商、消息路由等。
-
Server(MCP服务端):对接外部数据源或工具,并以统一格式暴露能力(如文件读取、数据库查询等)。
简单理解:
客户端( Host + Client )维护工具列表,把大模型的调用请求发给对应的 MCP Server;Server 收到请求后返回数据,通信基于 MCP 协议( 类似 JSON-RPC )。Server 可以是常驻进程,也可以是临时运行的本地函数或命令。
作为开发者,可以单独开发 MCP Server,比如 Notion、Postgres、GitHub 等操作,或者自己私有的数据查询。只要开发好一套 Server,别人就可以直接接入。
对比 Function Call 示例,get_weather 可以是一个 Server,也可以是 Server 下的一个 tool。
✍️ MCP Server 示例
比如,写个简单的 MCP Server,提供加法和问候功能:
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo")
@mcp.tool()
defadd(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
@mcp.resource("greeting://{name}")
defget_greeting(name: str) -> str:
"""Get a personalized greeting"""
returnf"Hello, {name}!"
如果你有现成的FastAPI服务,也可以用 fastapi_mcp 包快速转成 MCP Server。
✍️ 如何作为用户配置MCP
如果你只想用 MCP,不想自己开发,可以直接用现有的 MCP Server。比如在 Cursor 里添加一个作图的 MCP Server:
-
访问 smithery.ai,搜索 image,我选了 Flux ImageGen Server。
-
右侧点击 Cursor 客户端,会跳转到 Cursor的 MCP 配置界面,点 install。
也可以复制对应的 Json 串,添加到 mcp.json 文件里(多 Server时注意合并配置)。前提是本地要装好 NodeJS。
mcp.json 配置
配置好后,看到绿点就表示可用了。
这个 Server 有3 个 tools:生成带链接的图片、生成图片 base64 代码、列出图像模型名。
可用工具示例
✍️ 实际体验:MCP+Agent
比如在 Agent 模式下对话:「为我写一篇图文并茂的短文,讲解『自相矛盾』的成语故事,配图不存本地。」Cursor 会自动调用上面配置好的生图工具,插入到文章里。
Nice!
Agent 调用 MCP 工具示例
✍️ MCP 的现状与挑战
上面只是简单介绍了 MCP 调用工具的关键部分。其实 MCP 还支持 prompt、resources 等多种调用方式,支持本地(Stdio)和远程(HTTP SSE)部署。未来,远程托管应该会成为主流。
MCP 正在形成统一标准,生态也在不断扩大。但也有一些问题,比如安全性、鉴权和权限管理还不完善;生态刚起步,GitHub 上随便一个 MCP Server Repo 就能提交到市场,质量参差不齐。经常会遇到不好用、不稳定的 Server,就像智能体商店里一堆 Agent,真正好用的却不多。
所以,建议优先选择官方、安装量大、成功率高的 MCP Server。
MCP Server 市场
另外,MCP 开发门槛相对较高,概念和细节不太容易理解。用 MCP 的话,消耗 tokens 会明显增加,响应也会慢一点(毕竟多一步工具调用),但这些问题都会被逐步解决。
关键是越来越多厂商支持,大家都认可 MCP 协议,未来很可能成为 Agent 的基础通信协议,就像 HTTP 之于互联网。
✍️ Agent 与 MCP、Function Call 的关系总结
-
Function Call:单个「螺丝刀」,让大模型能用外部工具,但适配繁琐。
-
MCP:统一「工具箱协议」,标准化工具接入与调用,极大简化开发和维护。
-
Agent:真正能解决实际问题的 AI 应用。不同 MCP 工具、Prompt 经验、能力,造就不同岗位的 Agent。
可以简单理解为:LLM + MCP => Agent。
@朱哲清Bill
Pokee AI 创始人丨前 Meta 应用 RL 负责人
6 月 19 日发布于知乎专栏「应用强化学习」
已经有很多博主回答了 MCP 和 Function Calling 间的联系。我想从 AI Agent 整体架构的层面上来讲讲 Function Calling 和 MCP 的意义在哪里。
然后最后讲讲作为 AI Agent 从业者现在看到的最大的瓶颈时什么。
首先这三者互相之间的关系是什么样的。
✍️ Function Calling 解决什么
-
可预测输出:模型被「约束」只能返回 JSON,解析稳定。
-
参数校验:类型、必填字段在 schema 中就能校验,少踩坑。
-
但:调用逻辑 还是写在你自己的服务里,耦合度高。
✍️ MCP 再向前一步
-
工具目录/ tools / list → 自动发现 外部服务。
-
远程执行/ tools / call → 由 Runtime 代你请求目标 API,并把流式结果塞回模型。
-
托管&复用:一个 MCP Server 可被多个应用/模型共享,无需重复集成。
在一个大的范畴内,AI Agent 本质上是将目前的模型从「原始人时期」只能表达想法,感知,创造,进化到可以使用工具的「人」,所以 Function Calling,本质上就是在 API 或者在软件包层面,为 AI Agent 创造了可以使用软件工具的机会和条件。
目前的一般理解下,LLM 对于软件层面的工具调用基本是 sequential 的,也就是说,在运行的过程中,LLM 的 reasoning 的能力会在恰当的时间去寻找对应的 function 来调用,或者直接通过 MCP 来执行调用任务并得到流回复。
LLM-based AI Agent 的一个基本架构 (图片来自网络)
✍️ 那 LLM + MCP 是不是能够完成一个完整的 AI Agent 呢
有几大瓶颈:
-
MCP 本身的可靠性:目前市面上真正可用的 MCP 服务器非常有限。Pokee AI 在开发我们的 AI Agent 的过程中仔细看了市面上多达 15,000 个 MCP,但是发现只有 200 个左右 MCP 是真的在正常工作的,而这其中可以被 LLM 没有错误轻松调用的就只有 50 个不到。现在 Anthropic 自己都把很多 MCP 服务器给 archive 了,意味着整个生态链目前确实不完整,不足以做到商用。
-
API 和服务生态和 LLM 的匹配度:我们在开发我们的 AI Agent 的过程中需要接触大量的各种 API,软件包,和 AI 工具。而除了 AI 工具以外,剩下的生态和 LLM 的兼容度非常有限。比如输入的 param 中有大量的 ID,输出也是 ID,导致上下文无法衔接。
-
LLM 本身能力的局限:即便市面上有足够多的好的 MCP,LLM 本身对于 function calling 的能力和使用 MCP 的能力也会局限目前的 LLM-based AI Agent 的长期能力。比如下图中展示 LLM 的工具调用 scaling 的能力,我们会发现其实目前的 LLM 很难变成真正的通用 Agent。值得注意的是,目前任何一个平台比如 Google Docs,都会有上百个工具可以被使用,更别说横跨整个互联网的 Agent 了。
Pokee AI 的模型和别的 LLM 对于工具调用的拓展能力对比
✍️ AI Agent的未来方向
在 MCP 的问题之上,还有别的麻烦问题,比如 Memory,长上下文,非线性的信息库(Context with Graph Structure),等等等等。
AI Agent 要达到真正变成通用,需要在 Retrieval,Decision Making (RL),Multi-modal Representation 等多方面有比较大的进展。估计 2025-2026 年会是 AI Agent 长足发展的两年。
AI大模型学习路线
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案
大模型全套视频教程
200本大模型PDF书籍
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集
大模型产品经理资源合集
大模型项目实战合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐
所有评论(0)