2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

一文讲透 MCP 与 Function calling,你想看的都在这里

发布日期:2025-04-27 17:47:05 浏览次数: 2481
作者:雨飞AI笔记

微信搜一搜,关注“雨飞AI笔记”

推荐语

深入解析MCP和Function calling的区别与联系,带你全面了解大模型工具调用机制。

核心内容:
1. MCP与Function calling的定义及其区别
2. Function calling的实现方式和代码示例
3. MCP协议的组成部分及其工作原理

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


昨天,给大家直播分享了一次 MCP 的基本概念,其中有几个人私聊我问到关于 MCP 和 Function calling 的区别,今天和大家分享下这方面的知识,内容非常多,建议收藏后仔细阅读。市面上有很多分析 MCP 和 Function calling 的文章,但是说的并不对,如果只能用一句话来总结这两者的区别。那么相对比较准确的说法应该是 MCP 是封装了提示词、上下文资源和工具调用为一起的协议,功能更强,更具有规范性。其中工具调用可以用 Function calling 实现,也可以单纯依赖提示词。

首先,Function calling 是 OpenAI 在很早之前就提出来的一种方式,主要用于让大模型可以识别外部工具,然后让我们的程序可以和外部的 API 进行交互,从而实现更多复杂的功能,比如发送邮件、查看今天的天气,进行知识库搜索等等在 OpenAI 后期的文档中,这个接口的入参名字改为了 tools,为此我们一般统称为工具调用,至于更细节的历史,大家不必追究,记住这几个都指的是一个东西就好了。

下面这个示例,就是 OpenAI 官方提供的,如何使用 Python 代码去调用我们定义的一个获取天气的函数。在这个 tools 变量里面,我们定义了当前函数的名字、功能描述,所需要的参数


最终结果。GPT 返回了一个类型为 function_call 的对话信息,里面包括调用的函数名字,然后要传递给当前函数的参数。注意,这个地方类型并不是 Function calling,OpenAI 在概念和术语上并没有对齐,会导致很多新手、小白弄不清楚相关概念。


在这之后,我们就需要自己编写代码,去根据 AI 返回的函数名去调用这个函数,然后将入参传递过去,得到函数的结果。到这一步之后,我们才真正获得了天气的信息,这样就可以继续和 GPT 进行对话,让 GPT 根据获取到的信息,总结和归纳最终的答案。

整个过程可以用下面这个图进行描述,可以看到整体会分为 5 个步骤。其中,第一步、第三步、第四步这些环节都需要我们自己编写代码去完成,整个流程相对比较麻烦。另外,各个工具或者函数都需要我们自己实现或是调用第三方的服务,这也会导致各家实现的风格、方式各不相同,适配起来非常吃力。


很重要的一点,大模型需要具有识别和调用工具的能力才能正常给我们返回类似步骤 2的信息。因为这种能力需要依赖数据进行训练和微调,因此有很多大模型或者 API 是不支持工具调用的

再来说下 MCP,

MCP 就是实现了一套服务端、客户端以及他们之间的协议,更详细一点,MCP 的服务端定义了自己对外提供的工具类型和描述信息,客户端通过 LLM 根据用户的指令,判断当前的指令需要调用哪个 MCP 服务器,并生成固定格式的请求参数去请求服务器,获得结果

而 MCP 协议就是规定了客户端和服务端如何进行通信,并提供了三大原语,包括提示词、资源以及工具。提示词就是用户控制的,如何和服务器交互的提示词,如果你去看一些 MCP Client 的实现代码,他们会内置自己优化好的提示词,以便取得更好的结果。资源就是包括每次交互的上下文数据,响应信息等,也都会存储到服务器中。工具就是服务端可以提供的函数,让 LLM 去执行。


上图就是 MCP 官方的项目文档,在这里面其实我们就能看到, MCP 原语里面就包括了工具调用,也就是 Function calling 这个功能。只不过 MCP 的优势就是把之前复杂的步骤给封装好了,我们就不需要自己去实现上面复杂的代码,只需要简单调用 MCP 的 SDK 就能完成任务。


在官方的示例代码中,我们也只需要执行 call_tool 这个方法,就可以调用 MCP Server 所提供的工具并得到结果,非常方便。这个地方,同样需要 LLM 的参与,我们需要 LLM 去判断用户的输入究竟调用哪一个工具,也就是 OpenAI Function calling 中的第一步。然后后面的步骤,MCP 全给我们搞定了,就不需要我们自己再写代码。

到这里,暂停下,我们做个小结。

Function calling 功能单一,不具备上下文管理能力,一次只执行一个任务,一般是同步进行调用。没有特定的标准,需要厂商或者我们自己去开发实现。生态相对封闭,没有多少开源项目,定制化比较多。

MCP 功能复杂,可以支持多轮对话,一次能调用多个任务,也可以异步执行。有统一的标准,只要是适配了 MCP 的 Server 都可以用统一的代码去调用。而且 MCP 本身的社区生态更繁荣,现在已经 2000+ 以上的 MCP Servers 供大家使用。

Function calling 需要大模型具有工具调用的能力,能识别出来当前用户请求是需要调用哪个工具去完成任务。而且并不是所有的大模型都会支持工具调用。比如在 Coze 中提供的 DeepSeek 模型,就有很多不支持工具调用(Coze 叫做 funcionCall 是一回事)。


MCP 则更加灵活,可以借用 Function calling 的方式去进行工具调用,也可以使用自然语言描述的提示词去告诉 LLM,提供了哪些工具供他使用,应该以何种格式返回结果这种就更依赖大模型的语言理解能力,比如 Claude 就要更好用。最简单的例子,你告诉大模型要求返回 JSON 格式的信息,它给你返回的并不是JSON结构,那就导致 MCP 会解析失败,直接完蛋。

这种提示词的描述带来的潜在问题就是传输给大模型的上下文会非常长,假如我们现在有几个 MCP,一次调用可能消耗几十万的 token。更离谱的,你去看下 Cline 的源码中,他们直接把 MCP 相关的内容全扔进提示词里面,导致使用 Cline 消耗的 token 会非常多。


最后,太长看不懂的朋友们可以看下面这张图。Function calling 就是各自为战,直接和大模型进行对接。而 MCP 则更为复杂,Client 和 Server 直接使用标准化的协议进行链接,Server 并不会直接和大模型进行交互,而是通过 Client 链接到后面的大模型。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅