我最近也是和不少朋友讨论到两个热词: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 和一次外部函数调用。

比如你问「巴黎的天气怎样?」,整个流程如下:

  1. 向大模型发送用户问题,并在请求体里附上 get_weather的function 定义(JSON 格式)。

  2. 大模型分析后,决定调用 get_weather 方法,返回内容中 completion.choices[0].message.tool_calls 不为空。

  3. 本地根据 tool_calls 的内容,实际调用 get_weather ,获得巴黎的天气信息。

  4. 把用户原始问题和刚查到的天气信息,再发给大模型。

  5. 大模型基于完整对话和新获取的信息,自然地回复巴黎的天气情况。

想看 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 模式下,有三种角色:

  1. Host(宿主应用):执行LLM的主程序,如Cursor、桌面版Claude、VSCode插件等。

  2. Client(客户端连接器):集成在宿主应用中,负责和Server通信、能力协商、消息路由等。

  3. 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.pyfrom 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:

  1. 访问 smithery.ai,搜索 image,我选了 Flux ImageGen Server。

  2. 右侧点击 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%免费】🆓

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐