资源
分组与组织
分组和标签、磁盘布局、URI 方案以及条件注册。
分组和标签
使用 group 和 tags 对资源进行分类整理。这些字段的作用方式与 工具 相同。
server/mcp/resources/config/app-settings.ts
import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpResource({
group: 'config',
tags: ['readonly', 'settings'],
description: '应用设置',
file: 'config/app.json',
})
你也可以将资源文件放在子目录中,以自动推断分组:
server/mcp/resources/
├── config/
│ └── app-settings.ts → group: 'config'
├── docs/
│ └── readme.ts → group: 'docs'
└── schema.ts → 无分组
文件组织
将你的资源组织在 server/mcp/resources/ 目录中。支持扁平和嵌套两种布局:
server/
└── mcp/
└── resources/
├── readme.ts
├── file.ts
└── config/
└── app-settings.ts
每个文件都应导出一个默认的资源定义。子目录会自动设置 group。
URI 方案
你可以根据自己的使用场景使用任何合适的 URI 方案:
file://- 文件系统资源api://- API 端点http:///https://- Web 资源custom://- 自定义方案
条件注册
你可以使用 enabled 守卫来控制资源是否对客户端可见:
server/mcp/resources/internal-data.ts
export default defineMcpResource({
name: 'internal-data',
uri: 'app://internal',
enabled: event => event.context.user?.role === 'admin',
handler: async (uri) => ({
contents: [{ uri: uri.toString(), text: '内部数据...' }],
}),
})
有关基于认证的过滤的详细文档,请参阅 动态定义 指南。