什么是资源?
资源是一种标准化方式,用于让 MCP 服务器向客户端暴露只读数据。它们提供上下文信息,帮助 AI 模型理解你的应用,例如文件、数据库模式、配置,或任何可通过 URI 访问的数据。
为新的 MCP 资源生成脚手架
关键概念:不同于由 AI 直接调用以执行操作的 工具,资源是应用驱动的。主机应用(而不是 AI)决定何时以及如何获取资源内容并将其包含到对话中。
每个资源都通过一个 URI 唯一标识(例如 file:///project/README.md 或 api://users/123)。
资源 vs 工具
理解资源和工具之间的区别至关重要:
| 方面 | 资源 | 工具 |
|---|---|---|
| 目的 | 提供上下文和数据 | 执行操作 |
| 调用方式 | 应用驱动(由用户或应用选择) | AI 驱动(由模型决定是否调用) |
| 性质 | 只读数据访问 | 可以读取并修改状态 |
| 控制 | 由用户/应用控制包含哪些内容 | 由 AI 决定何时使用 |
| 示例 | 文件、配置、数据库模式、日志 | 发送邮件、创建文件、查询 API |
何时使用资源:
- 暴露项目文件或文档
- 共享数据库模式或配置
- 将日志或系统信息作为上下文提供
何时使用工具:
- 执行会修改状态的操作
- 运行应由 AI 决定触发的操作
- 与外部 API 或服务交互
资源如何使用
资源遵循应用驱动模型。典型流程如下:
- 发现——主机应用调用
resources/list来发现可用资源。 - 选择——主机在 UI(树状视图、搜索、列表)中展示资源,用户(或应用逻辑)选择要包含的资源。
- 读取——主机通过
resources/read获取所选 URI。 - 上下文注入——主机将内容作为上下文注入到 AI 对话中。
AI 模型永远不会直接请求资源。始终是应用根据用户选择、启发式规则或自动上下文检测来决定包含哪些资源。
进一步了解
如果你是 Nuxt 中 MCP 的新手,请从 工具 开始——资源与工具相辅相成,但遵循不同的发现模型。