比较LLM的function calling,Agent 和MCP
比较
| 对比维度 | MCP(Model Context Protocol) | Function Calling | Agent(智能体) |
|---|---|---|---|
| 定义 | 由 Anthropic 推出的开放协议,标准化 LLM 与外部数据源、工具的通信接口
。 |
LLM 调用外部函数的机制,通过 JSON 参数规范模型与外部系统的交互
。 |
自主运行的智能系统,通过分析、决策和执行实现目标,可调用工具和规划任务
。 |
| 核心功能 | - 提供标准化工具调用接口 - 动态上下文管理 - 跨平台/多数据源集成 。 |
- 单次函数调用 - 参数解析与执行 - 轻量化任务扩展 。 |
- 多步骤任务规划 - 自主决策与反思 - 多工具协作 。 |
| 技术特点 | - 客户端-服务器架构(Host/Client/Server) - 支持 REST/gRPC 通信 - 工具描述与权限控制 。 |
- 基于 JSON Schema 定义函数参数 - 依赖 LLM 生成调用指令 - 需手动实现执行逻辑 。 |
- 结合 RAG、ReAct 等框架 - 长期记忆与状态管理 - 多模态交互能力 。 |
| 典型应用场景 | - 跨平台工具集成(如同时访问本地文件 + Jira API) - 敏感数据隔离(医疗/金融场景) 。 |
- 简单功能扩展(如天气查询、计算器) - 封闭环境应用(内部知识库) 。 |
- 复杂任务自动化(代码生成、数据分析) - 拟人化交互(客服、教育辅导) 。 |
| 优点 | - 标准化协议,降低集成成本 - 支持动态上下文切换 - 多厂商 LLM 兼容 。 |
- 开发简单快速 - 轻量级交互 - 深度绑定特定 LLM(如 GPT-4) 。 |
- 高度自主性 - 复杂任务处理能力 - 可扩展性强 。 |
| 局限性 | - 架构复杂,部署成本高 - 依赖协议生态成熟度 。 |
- 功能单一 - 缺乏动态上下文管理 - 跨平台适配性差 。 |
- 资源消耗大 - 多步推理可能出错 - 工具调用依赖外部系统稳定性 。 |
补充说明:
MCP 与 Function Calling 的关系
MCP 可视为 Function Calling 的扩展协议,通过标准化接口解耦工具调用与具体 LLM,解决跨平台和动态上下文问题实现逻辑
- MCP:采用客户端-服务器架构,通过MCP Server统一管理工具调用和数据访问,LLM只需遵循协议发送请求,无需关注底层实现细节
。 - Function Calling:要求开发者预先定义函数签名,LLM直接生成调用指令,应用负责执行。这种方式与特定模型强绑定,扩展性受限
- MCP:采用客户端-服务器架构,通过MCP Server统一管理工具调用和数据访问,LLM只需遵循协议发送请求,无需关注底层实现细节
技术关系
- 互补性:MCP协议可以封装Function Calling作为其底层执行方式之一,但并非必须依赖
。
示例:MCP Server通过Python脚本调用OpenAI的Function Calling接口,但其他工具可能直接操作本地资源。 - 独立性:实验表明,即使LLM不支持Function Calling(如DeepSeek Re),也能通过MCP实现工具调用
,说明二者在技术实现上解耦。
4. 选择建议
- 优先MCP:需集成多数据源、跨平台协作或长期维护的场景(如企业级Agent开发)
。 - 优先Function Calling:轻量级、单任务且对延迟敏感的场景(如实时翻译)
- 互补性:MCP协议可以封装Function Calling作为其底层执行方式之一,但并非必须依赖
functioncalling的执行过程

MCP 的执行过程

MCP
关键设计特性
动态工具发现
MCP Client在每次会话前自动获取最新工具列表,无需预先硬编码函数签名(对比传统Function Calling)权限隔离机制
- 敏感工具调用需用户二次确认(如文件删除操作)
- 本地资源访问限制在沙箱环境(如仅允许
/data/sales目录)
- 敏感工具调用需用户二次确认(如文件删除操作)
比较LLM的function calling,Agent 和MCP的更多相关文章
- function calling convention
这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=31 February 19, 2013 function calling c ...
- PatentTips – Java native function calling
BACKGROUND OF INVENTION This invention relates to a system and method for providing a native functio ...
- [转]ARM64 Function Calling Conventions
from apple In general, iOS adheres to the generic ABI specified by ARM for the ARM64 architecture. H ...
- Meet Python: little notes 3 - function
Source: http://www.liaoxuefeng.com/ ♥ Function In python, name of a function could be assigned to a ...
- [转] iOS ABI Function Call Guide
source: apple ARMv6 Function Calling Conventions When functions (routines) call other functions (sub ...
- 什么是内联函数(inline function)
In C, we have used Macro function an optimized technique used by compiler to reduce the execution ti ...
- boost function bind ref
boost::function to encapsulate function pointers. 1. function #include <boost/function.hpp> #i ...
- NodeJs学习笔记(五)---单元测试补充
今天早上继续研究Mocha,忽然发现一个问题,我的大部分程序都是需要登录验证的,所以需要预先登录之后才能进行下一步测试,就开始在网上找答案,发现没有这种资料,很疑惑,最后发现其实是自己太笨了,因为这个 ...
- 用PHP实现浏览器点击下载各种格式文档的方法详解【txt apk等等】
[[注:其他文件想设置成下载文件,和下面介绍的方法一致]] 由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点 ...
- 编写自定义Yeoman生成器
转载自JSCON-简时空:<自定义Yeoman生成器> 1.Getting Started 1.1.设置Node模块 Yeoman提供了generator-generator方便快速编写自 ...
随机推荐
- Netty-快速入门
---------------------------------------------------- netty是什么? Netty is an asynchronous event-driven ...
- DynamoDB-键值存储
什么是DynamoDB? DynamoDB 是一个你什么也不用管的 NoSql 数据库.记得给 AWS付账单就可以. 在2004年的时候, Amazon 发现 Oracle 数据库都不够用了.为了还能 ...
- CPU 性能优化总结
在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...
- 学Shiro完结版-3
第八章 拦截器机制--<跟我学Shiro> 8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3 ...
- Kali 修改root密码
Kali 修改root密码 进入 Kali 系统,切换 root 用户 sudo su 输入当前用户密码 成功切换到 root 用户后,进行修改密码 passwd root
- linux安装Phoenix
1.下载对应hbase的版本 http://www.apache.org/dyn/closer.lua/phoenix/ 解压后找到phoenix-4.14.2-HBase-1.4-server.ja ...
- Json序列化对象后,使用Lombok后属性xAxis大写变成小写xaxis解决方法
一.问题描述 最近在开发后端接口时,发现返回结构中,一个字段大小写转化有问题. lombok版本:1.18.14 VO对象如下,字段为echarts趋势图组件.预期返回xAxis,实际返回xaxis ...
- Javascript 方法有多个参数有默认值,但是只想为其中某个参数赋值
例子: function log(a, b = 2, c = 3, d = 4) { console.log(a, b, c, d) } log(1); // output: 1 2 3 4 log( ...
- 《uTools:提升效率的神奇工具》
utools5.0 一.引言 在如今快节奏的工作和生活中,我们都在寻找能够帮助我们节省时间.提高效率的工具.uTools 就是这样一款令人惊艳的工具,它为我的日常带来了极大的便利. 相关链接:uToo ...
- 八米云-Hyper-V虚拟机安装教程
疑难解答加微信机器人,给它发:进群,会拉你进入八米交流群 机器人微信号:bamibot 简洁版教程访问:https://bbs.8miyun.cn 准备阶段: 八米云启动U盘(制作方法可参看<制 ...