从22个工具到一次可靠调用:Function Calling、内置工具与 MCP 完整解析

0 评论 233 浏览 0 收藏 10 分钟

当Agent需要查询数据、生成文件或发送邮件时,大模型并不能直接执行操作,而是依赖应用、Function Calling与工具服务的协同。本文通过统一案例,对比内置工具与MCP两种实现方式,深入解析MCP在工具复用、接口适配与维护成本上的核心优势,并指出其适用边界。

当用户要求 Agent 查询数据、生成文件或发送邮件时,大模型并不会亲自访问数据库或执行 API。真正完成任务,需要应用、大模型、Function Calling 和工具服务共同协作。

它们的职责可以概括为:

  • 应用:管理工具目录、筛选候选工具、校验权限并组织执行。
  • 大模型:判断是否需要工具、选择哪个工具、填写什么参数,以及后续还要调用什么。
  • Function Calling:把模型的决定转换成结构化调用请求,例如“调用查询订单,参数为最近30天”。它是一种模型能力和输出规范,不是独立执行者。
  • 工具或 API:真正查询订单、分析数据、生成文件或发送邮件。

因此,核心关系是:应用决定模型可以从哪些工具中选;大模型决定本次是否调用以及调用哪个;Function Calling 负责规范表达;应用或 MCP Server 负责真实执行。

一、统一案例:5类服务、22个工具

假设一个运营 Agent 需要使用以下能力:

用户提出任务:查询最近30天的售后订单,生成分析报告,保存为文件并发送给运营负责人。

完成这个任务,需要依次使用订单、数据分析、文件和邮件服务。下面用相同任务比较两种实现方式。

二、内置工具:应用自己维护完整工具体系

内置模式下,应用开发者需要先把22个工具接入应用。工具名单可能保存在代码、配置文件、数据库或自建注册中心,但核心工作仍由应用团队完成,包括:

  1. 为22个工具编写名称、用途和参数结构。
  2. 注册工具,形成应用内部工具目录。
  3. 建立工具名称到执行函数的路由。
  4. 为5类服务编写 API 适配代码。
  5. 处理鉴权、参数校验、超时、错误转换和返回格式。
  6. 工具发生变化后,同步修改说明、调用代码与测试。

用户提问后,应用不会必然把22个工具全部交给模型,而是先按照以下规则筛选:

  • 用户是否有权使用;
  • 工具是否与当前问题相关;
  • 服务当前是否可用;
  • 操作风险是否可接受;
  • 是否符合企业和业务配置。

本例可能筛出6个候选工具:查询售后订单、统计指标、生成报告、保存文件、获取联系人和发送邮件。应用把用户问题和这6个工具的说明共同提交给模型。

例如模型先生成“查询售后订单”的调用请求。应用解析后,通过自建路由找到对应函数,完成权限和参数校验,再访问订单 API。结果返回模型后,模型继续调用统计、生成报告、保存文件和发送邮件,直到任务结束。

这个流程能够正常工作,但工具说明、注册、路由和服务适配都与应用紧密绑定。

三、MCP:用统一方式发现和调用工具

MCP 模式下,应用通常只集成一套 MCP Client 管理能力,再与5个 MCP Server 建立独立连接。一个 Client 可以管理多个 Server,不需要开发5套不同的 Client。

这5个 Server 可以由服务商、企业内部团队或第三方提供。连接前,开发者、管理员或用户仍需配置 Server 地址并完成授权。MCP 不会自动搜索互联网上所有 Server,它只能发现“已经连接的 Server 提供哪些工具”。

连接后:

  1. 订单 Server 声明自己的5个工具。
  2. 文件 Server 声明4个工具。
  3. 其他 Server 分别声明邮件、日历和分析工具。
  4. MCP Client 读取各 Server 的工具列表。
  5. 应用合并为22个工具的统一目录,并记录每个工具属于哪个 Server。
  6. 如果出现同名工具,应用可以使用命名空间区分,例如 order.query 和 file.search。

用户提出同一个任务时,应用仍然按照权限、相关性、可用状态和风险筛选出相同的6个候选工具。MCP 不代替候选筛选,也不代替模型决策。

模型第一次选择“查询售后订单”后,应用通过 MCP Client 将请求路由给订单 Server;订单结果返回后,模型再选择数据分析工具,Client 将请求转给数据分析 Server。文件和邮件调用也使用同一种方式完成。

四、MCP 的优势具体体现在哪里

从用户提出问题到Agent应用通过大模型以及工具的调用来完成复杂任务的实现这一过程,其中工具的调用通过内置工具或MCP方式完成,可以通过下面的流程图清晰比较出MCP方式的具体优势。

1.工具说明不再由每个应用重复维护

内置模式下,应用团队要维护22份工具说明;如果客服、运营和售后三个 Agent 都需要订单工具,可能出现三套重复定义。

MCP 模式下,订单 Server 集中维护5个订单工具,三个 Agent 都可以通过 Client 获取并复用。

2. 减少逐工具路由与接口适配

内置模式需要为22个工具维护注册、调用路由和参数处理,并为5类服务维护接口适配。

MCP 模式下,应用主要维护一套 Client、Server 连接、候选筛选和安全策略;具体工具定义与真实 API 适配集中在各 Server 中。

3. 工具修改时影响范围更小

假设订单查询参数从 order_id 改为 order_no。

内置模式中,每个接入该工具的应用都可能需要修改:

  • 工具参数说明;
  • 参数校验逻辑;
  • API 适配代码;
  • 自动化测试;
  • 应用版本并重新发布。

MCP 模式下,订单 Server 可以集中修改工具说明和接口适配,Client 重新获取工具定义,各应用主要完成兼容性验证。如果存在不兼容变更,仍需进行版本控制;MCP只能缩小修改范围,不能自动消除升级风险。

4. 新服务接入更容易复用

如果增加第6个客户服务,内置模式需要在每个应用中增加工具说明、调用路由和接口适配。MCP 模式主要增加 Server 连接、授权及筛选策略,真实接口适配由客户 MCP Server 统一承担。

五、MCP 不是工具越多越好

MCP 增加了 Server 运维、连接管理、鉴权、超时和服务不可用等新问题。如果 Server 需要企业自己开发,工作量并没有消失,而是从多个应用中抽离,集中到可复用的 Server。

因此:

  • 工具较少、来源单一且长期稳定时,直接内置通常更简单。
  • 工具较多、来源分散、变化频繁或需要跨应用复用时,MCP更有价值。

小结

Function Calling 解决“模型如何表达工具调用”;MCP解决“应用如何标准化连接、发现和调用不同来源的工具”。MCP的真正优势不是让模型更聪明,而是减少重复接入,让工具能力能够集中维护并被多个 Agent 复用。

本文由 @Grace 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!