比较

对比维度 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. WPF中webview2鼠标移动窗体

    WPF里webview2会一直处于其他控件最上层,是个历史遗留问题. 为了能在webview2里鼠标移动让窗体跟着移动位置代码如下: async Task InitializeAsync() { Ap ...

  2. 金山毒霸提示这是高危入侵行为taskeng.exe

    如果安装了金山毒霸之后经常会弹窗提示:这是高位入侵行为.行为发起taskeng.exe.可疑进程regsvr32.EXE,可疑路径antivirus.php,如下入所示: 可以直接点击"阻止 ...

  3. Linux 虚拟机中不重启的情况下加新硬盘及扩展根分区容量

    我这个系统是Redhat7.7的系统.磁盘占用比较高,需要扩充空用空间,同时又不能关停服务器,或者服务.所以就需要在虚拟机中不重启的情况下加新硬盘及扩展根分区容量. 首先,看一下我这个虚拟机分区占用情 ...

  4. SSL 和 TLS

    转载:链接1   链接2 TLS和SSL SSL(Secure Sockets Layer)安全套接层协议 TLS(Transport Layer Security)传输层安全性协议 最新版本的TLS ...

  5. 认识soui4js(第1篇)

    源代码:https://github.com/soui4js/soui4js soui4js是soui4+quickjs的结合体. soui4是一套c++ directui客户端开发框架,soui4j ...

  6. maven项目中解决 .git文件太大问题

    一.git项目上传后项目文件太大,git filter-branch手动清理 最近发现一个项目git目录已经达到200MB,严重影响了clone代码.操作之前请全量备份代码,操作失误可恢复 二.测试项 ...

  7. nginx 简单实践:正向代理、反向代理【nginx 实践系列之二】

    〇.前言 本文为 nginx 简单实践系列文章之二,主要简单实践了两个内容:正向代理.反向代理,仅供参考. 关于 Nginx 基础,以及安装和配置详解,可以参考博主过往文章: https://www. ...

  8. 上海站 | 2025 Seeed x LeRobot 具身智能黑客松报名开启!

    欢迎来到 Physical AI 的最前沿!Seeed x LeRobot 具身智能黑客松现邀请所有对在机器人领域训练模仿学习策略,并实时进行推理部署感兴趣的人,共同创造具有影响力的创新解决方案.在这 ...

  9. 浅说 c++20 cppcoro (三)

    浅说 c++20 cppcoro (三),https://www.cnblogs.com/bbqzsl/p/18679860 接着上一篇浅说 c++20 coroutine (二) ,继续没说完的事. ...

  10. kubesphere应用系列(二)部署有状态服务redis

    前言 在 Kubernetes 中,服务(Service)可以被分为有状态服务和无状态服务,个人认为的区别: 无状态服务是指不依赖于任何持久化状态的服务.它们通常是将请求处理为独立.无关的事务,并且在 ...