资源
将只读数据源作为 MCP 资源暴露,为 AI 模型提供上下文。

什么是资源?

资源是一种标准化方式,用于让 MCP 服务器向客户端暴露只读数据。它们提供上下文信息,帮助 AI 模型理解你的应用,例如文件、数据库模式、配置,或任何可通过 URI 访问的数据。

为新的 MCP 资源生成脚手架

关键概念:不同于由 AI 直接调用以执行操作的 工具,资源是应用驱动的。主机应用(而不是 AI)决定何时以及如何获取资源内容并将其包含到对话中。

每个资源都通过一个 URI 唯一标识(例如 file:///project/README.mdapi://users/123)。

资源 vs 工具

理解资源和工具之间的区别至关重要:

方面资源工具
目的提供上下文和数据执行操作
调用方式应用驱动(由用户或应用选择)AI 驱动(由模型决定是否调用)
性质只读数据访问可以读取并修改状态
控制由用户/应用控制包含哪些内容由 AI 决定何时使用
示例文件、配置、数据库模式、日志发送邮件、创建文件、查询 API

何时使用资源:

  • 暴露项目文件或文档
  • 共享数据库模式或配置
  • 将日志或系统信息作为上下文提供

何时使用工具:

  • 执行会修改状态的操作
  • 运行应由 AI 决定触发的操作
  • 与外部 API 或服务交互

资源如何使用

资源遵循应用驱动模型。典型流程如下:

  1. 发现——主机应用调用 resources/list 来发现可用资源。
  2. 选择——主机在 UI(树状视图、搜索、列表)中展示资源,用户(或应用逻辑)选择要包含的资源。
  3. 读取——主机通过 resources/read 获取所选 URI。
  4. 上下文注入——主机将内容作为上下文注入到 AI 对话中。
AI 模型永远不会直接请求资源。始终是应用根据用户选择、启发式规则或自动上下文检测来决定包含哪些资源。

进一步了解

文件操作示例

以优雅的错误处理将本地文件作为 MCP 资源读取。

工具

将资源与操作结合起来——工具由 AI 驱动,资源由应用驱动。

动态定义

使用 enabled 守卫对匿名客户端隐藏资源。

列表定义

从你自己的服务器路由中读取已发现的目录。

如果你是 Nuxt 中 MCP 的新手,请从 工具 开始——资源与工具相辅相成,但遵循不同的发现模型。