进阶主题

钩子

使用 Nuxt 钩子来扩展和自定义 MCP 模块。

可用钩子

Nuxt MCP 模块提供了用于扩展和自定义行为的钩子。

mcp:definitions:paths

此钩子允许你添加额外的目录以扫描 MCP 定义。

钩子签名

nuxt.hook('mcp:definitions:paths', (paths: {
  tools: string[]
  resources: string[]
  prompts: string[]
  handlers: string[]
}) => {
  // 修改路径
})

在 nuxt.config.ts 中使用

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxtjs/mcp-toolkit'],
  hooks: {
    'mcp:definitions:paths'(paths) {
      // 添加额外的工具目录
      paths.tools.push('shared/tools')
      paths.tools.push('legacy/tools')

      // 添加额外的资源目录
      paths.resources.push('shared/resources')

      // 添加额外的提示词目录
      paths.prompts.push('shared/prompts')

      // 添加额外的处理器目录
      paths.handlers.push('custom/handlers')
    },
  },
})

在自定义模块中使用

my-module.ts
export default defineNuxtModule({
  setup(options, nuxt) {
    nuxt.hook('mcp:definitions:paths', (paths) => {
      // 添加来自此模块的路径
      paths.tools.push('my-module/tools')
      paths.resources.push('my-module/resources')
      paths.prompts.push('my-module/prompts')
    })
  },
})

路径结构

paths 对象包含目录路径数组:

{
  tools: string[]      // 扫描工具的目录
  resources: string[]  // 扫描资源的目录
  prompts: string[]    // 扫描提示词的目录
  handlers: string[]  // 扫描处理器的目录
}

所有路径均相对于每个 Nuxt 层的 server/ 目录。

路径解析

路径按以下顺序解析:

  1. 相对于 server/:如 'tools' 的路径将解析为 server/tools/
  2. 绝对路径:以 / 开头的路径将从项目根目录解析
  3. 特定于层:每个 Nuxt 层相对于其自身的 server/ 目录解析路径

后续步骤