比较

对比维度 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)

 

- 高度自主性
- 复杂任务处理能力
- 可扩展性强

 

局限性 - 架构复杂,部署成本高
- 依赖协议生态成熟度

 

- 功能单一
- 缺乏动态上下文管理
- 跨平台适配性差

 

- 资源消耗大
- 多步推理可能出错
- 工具调用依赖外部系统稳定性

 

补充说明:

  1. MCP 与 Function Calling 的关系
    MCP 可视为 Function Calling 的扩展协议,通过标准化接口解耦工具调用与具体 LLM,解决跨平台和动态上下文问题

  2. 实现逻辑

    • ​MCP:采用客户端-服务器架构,通过MCP Server统一管理工具调用和数据访问,LLM只需遵循协议发送请求,无需关注底层实现细节
    • ​Function Calling:要求开发者预先定义函数签名,LLM直接生成调用指令,应用负责执行。这种方式与特定模型强绑定,扩展性受限
  3. 技术关系

    1. ​互补性:MCP协议可以封装Function Calling作为其底层执行方式之一,但并非必须依赖

      示例:MCP Server通过Python脚本调用OpenAI的Function Calling接口,但其他工具可能直接操作本地资源。
    2. ​独立性:实验表明,即使LLM不支持Function Calling(如DeepSeek Re),也能通过MCP实现工具调用

      ,说明二者在技术实现上解耦。

    4. 选择建议

    • ​优先MCP:需集成多数据源、跨平台协作或长期维护的场景(如企业级Agent开发)

    • ​优先Function Calling:轻量级、单任务且对延迟敏感的场景(如实时翻译)

functioncalling的执行过程

MCP 的执行过程

MCP

关键设计特性

    1. ​动态工具发现
      MCP Client在每次会话前自动获取最新工具列表,无需预先硬编码函数签名(对比传统Function Calling)

    2. ​权限隔离机制

      • 敏感工具调用需用户二次确认(如文件删除操作)

         
      • 本地资源访问限制在沙箱环境(如仅允许/data/sales目录)

比较LLM的function calling,Agent 和MCP的更多相关文章

  1. function calling convention

    这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=31 February 19, 2013 function calling c ...

  2. PatentTips – Java native function calling

    BACKGROUND OF INVENTION This invention relates to a system and method for providing a native functio ...

  3. [转]ARM64 Function Calling Conventions

    from apple In general, iOS adheres to the generic ABI specified by ARM for the ARM64 architecture. H ...

  4. Meet Python: little notes 3 - function

    Source: http://www.liaoxuefeng.com/ ♥ Function In python, name of a function could be assigned to a ...

  5. [转] iOS ABI Function Call Guide

    source: apple ARMv6 Function Calling Conventions When functions (routines) call other functions (sub ...

  6. 什么是内联函数(inline function)

    In C, we have used Macro function an optimized technique used by compiler to reduce the execution ti ...

  7. boost function bind ref

    boost::function to encapsulate function pointers. 1. function #include <boost/function.hpp> #i ...

  8. NodeJs学习笔记(五)---单元测试补充

    今天早上继续研究Mocha,忽然发现一个问题,我的大部分程序都是需要登录验证的,所以需要预先登录之后才能进行下一步测试,就开始在网上找答案,发现没有这种资料,很疑惑,最后发现其实是自己太笨了,因为这个 ...

  9. 用PHP实现浏览器点击下载各种格式文档的方法详解【txt apk等等】

    [[注:其他文件想设置成下载文件,和下面介绍的方法一致]] 由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点 ...

  10. 编写自定义Yeoman生成器

    转载自JSCON-简时空:<自定义Yeoman生成器> 1.Getting Started 1.1.设置Node模块 Yeoman提供了generator-generator方便快速编写自 ...

随机推荐

  1. Netty-快速入门

    ---------------------------------------------------- netty是什么? Netty is an asynchronous event-driven ...

  2. DynamoDB-键值存储

    什么是DynamoDB? DynamoDB 是一个你什么也不用管的 NoSql 数据库.记得给 AWS付账单就可以. 在2004年的时候, Amazon 发现 Oracle 数据库都不够用了.为了还能 ...

  3. CPU 性能优化总结

    在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...

  4. 学Shiro完结版-3

    第八章 拦截器机制--<跟我学Shiro> 8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3 ...

  5. Kali 修改root密码

    Kali 修改root密码 进入 Kali 系统,切换 root 用户 sudo su 输入当前用户密码 成功切换到 root 用户后,进行修改密码 passwd root

  6. linux安装Phoenix

    1.下载对应hbase的版本 http://www.apache.org/dyn/closer.lua/phoenix/ 解压后找到phoenix-4.14.2-HBase-1.4-server.ja ...

  7. Json序列化对象后,使用Lombok后属性xAxis大写变成小写xaxis解决方法

    一.问题描述 最近在开发后端接口时,发现返回结构中,一个字段大小写转化有问题. lombok版本:1.18.14 VO对象如下,字段为echarts趋势图组件.预期返回xAxis,实际返回xaxis ...

  8. Javascript 方法有多个参数有默认值,但是只想为其中某个参数赋值

    例子: function log(a, b = 2, c = 3, d = 4) { console.log(a, b, c, d) } log(1); // output: 1 2 3 4 log( ...

  9. 《uTools:提升效率的神奇工具》

    utools5.0 一.引言 在如今快节奏的工作和生活中,我们都在寻找能够帮助我们节省时间.提高效率的工具.uTools 就是这样一款令人惊艳的工具,它为我的日常带来了极大的便利. 相关链接:uToo ...

  10. 八米云-Hyper-V虚拟机安装教程

    疑难解答加微信机器人,给它发:进群,会拉你进入八米交流群 机器人微信号:bamibot 简洁版教程访问:https://bbs.8miyun.cn 准备阶段: 八米云启动U盘(制作方法可参看<制 ...