开发MCP服务,何时使用工具?何时使用资源?

虽然 AI 模型本身并不将 tool:// 或 resource:// 解析为协议,但是采用这样的命名约定可以增强可读性和结构。一致的 URI 模式 (如 tool://crm/add-client 或 resource://clients/{ id}) 使生态系统可预测,并且在一些工具框架中能够得到支持。

当我们朝着构建能够推理、计划和自主行动的智能系统前进时,模型上下文协议 (MCP) 在构建 AI 模型如何与外部工具和数据交互方面扮演着关键角色。在采用 MCP 时,一个容易混淆的常见问题是——什么时候使用资源,什么时候使用工具。

在这里,老码农尝试对这些概念进行区分,提供一些实际的示例,并总结要点,以便有效地应用它们。

1. 示例场景

假设我们正在开发一个自动化业务工作流的数字助手。例如,当一个新客户签订合同时,助手应该:

  • 将客户添加到 CRM 系统。
  • 发一封欢迎电子邮件。
  • 通过 Slack 通知销售团队。
  • 指定一名专门的客户经理。

我们希望 AI 以最少的人工干预来处理这个端到端的过程。

2.MCP中的工具

MCP 中的工具是模型可以调用的操作ーー执行任务的操作。

例如:

复制

@mcp.tool()
def send_email(to: str, subject: str, body: str) -> str:

“””发送电子邮件到一个给定的地址s”””
...

MCP工具的主要特点:

  • 模型控制: 人工智能模型决定何时调用它们。
  • 自动列出: 它们出现在 /tools 端点中。
  • 自主调用: 模型可以确定使用哪种工具,并在必要时请求缺少的参数。

在我们的业务工作流示例中,像add_client_to_crmsend_email 和 notify_sales_team 这样的操作应该作为工具实现,因为它们需要执行操作,而且模型必须自主决定调用它们。

3. MCP 资源

一般地,资源是由后端公开的只读数据。可以把它们想象成:

  • 现有数据清单。
  • 静态的参考资料或动态数据集。
  • 具有结构化标识符 (uri) 的数据项。

例如:

复制

@mcp.resource(“clients://{client_id}”)

def get_client(client_id: str) -> dict:

“““指定ID,返回客户端的详细资料”””

...

    MCP资源的主要特点:

    • 客户端控制: AI 模型不会自动调用资源, 客户端应用程序必须对访问进行管理。
    • 结构化数据: 它们提供结构化信息,可用于为模型的决策提供信息。
    • 上下文管理: 它们通过仅提供相关数据来帮助管理上下文窗口。

    在我们的工作流中,使用list_clientsget_client_details和 list_account_managers这样的资源是合适的。

    4.为什么不是全部使用MCP工具?

    假设公开了 5000 个操作作为MCP工具 (例如,不同的 CRM 系统,api 等等) ,如果这些都是工具:

    • 它们在 /tools 中作为 JSON 返回。
    • 人工智能模型试图解析所有 5000 个数据,以决定该做什么。
    • 这会使上下文窗口膨胀,降低推理速度,甚至可能失败。

    相反,可以将  list_crm_systems,list_available_actions或者 list_departments公开为资源。这有助于客户端根据用户输入或身份验证获取相关的上下文片段,从而优化性能和可伸缩性。

    5. 何时使用MCP工具?又何时使用资源?

    MCP工具和MCP资源的选择依据:

    • 是否触发操作?
    • 返回结构化数据是否可选
    • AI 模型是否 可以自主调用还是客户端必须控制访问
    • 是否应用于规划和链接行动,还是只支持上下文抓取
    • 是否需要实时的上下文范围

    资源有助于管理身份验证和授权:

    • 特定于用户的资源列表: 用户请求资源列表时,服务器只能过滤并返回用户可以访问的资源。
    • 工具访问控制: 在列出工具时,确保只返回授权用户使用的工具。

    此策略确保用户只能看到他们拥有权限的资源和工具,并且可以与它们进行交互,从而增强安全性和用户体验。

    如果希望 AI 模型自主地识别有缺失的输入并请求它们,那么必须使用工具。工具是模型控制的,允许模型:

    • 读取工具的描述说明。
    • 根据提示词选择适当的工具。
    • 检测遗漏的输入。
    • 自动提示用户输入所需信息。

    资源将不会触发此行为,除非客户端应用程序添加了相关逻辑。将数据拉入并将其注入上下文。

    虽然 AI 模型本身并不将 tool:// 或 resource:// 解析为协议,但是采用这样的命名约定可以增强可读性和结构。一致的 URI 模式 (如 tool://crm/add-client 或 resource://clients/{ id}) 使生态系统可预测,并且在一些工具框架中能够得到支持。

    6.小结

    当构建自动化工作流程的智能助手时,在 MCP 工具和资源之间进行选择至关重要:

    • 当模型需要自主行动或推理时,使用工具。
    • 利用资源提供有范围的、结构化的数据,并减少上下文过载。

    对于动态且自动化的Agentic系统,工具是动力,对于管理广泛的参考数据,资源可以帮助我们安全地扩展。

    AI大模型学习福利

    作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

    一、全套AGI大模型学习路线

    AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

    二、640套AI大模型报告合集

    这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    三、AI大模型经典PDF籍

    随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    四、AI大模型商业化落地方案

    因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

    作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值