提示词
模式与高级用法
真实世界示例、组织方式、类型安全、最佳实践和条件注册。
使用场景
Prompt 特别适用于:
1. 初始化与上手
帮助新开发者或 AI 助手理解如何使用你的代码库:
server/mcp/prompts/setup-guide.ts
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
description: '为此项目提供完整的初始化说明',
handler: async () => `你正在为这个 Nuxt 项目进行初始化。以下是你需要了解的内容:
1. 安装依赖:\`pnpm install\`
2. 启动开发服务器:\`pnpm dev\`
3. 项目结构遵循 Nuxt 约定
4. MCP 工具可在 server/mcp/ 中使用
告诉我你想构建什么!`,
})
2. 代码审查标准
确保代码审查标准一致:
server/mcp/prompts/review-standards.ts
import { z } from 'zod'
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
description: '应用团队代码审查标准',
inputSchema: {
focus: z.enum(['security', 'performance', 'maintainability', 'all']).default('all'),
},
handler: async ({ focus }) => `你是一名遵循我们团队标准的代码审查员。重点关注:${focus}。
审查我提供的代码,检查最佳实践和潜在问题。`,
})
3. 文档生成
标准化文档格式:
server/mcp/prompts/generate-docs.ts
import { z } from 'zod'
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
description: '按团队格式生成文档',
inputSchema: {
type: z.enum(['api', 'component', 'function']).describe('要记录的内容'),
},
handler: async ({ type }) => {
const templates = {
api: '按以下内容记录此 API 端点:端点、方法、参数、响应格式和示例。',
component: '按以下内容记录此 Vue 组件:props、emits、slots 和使用示例。',
function: '按以下内容记录此函数:参数、返回值和使用示例。',
}
return templates[type]
},
})
4. 排障工作流
为常见问题提供调试指导:
server/mcp/prompts/debug-helper.ts
import { z } from 'zod'
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
description: '帮助调试常见问题',
inputSchema: {
area: z.enum(['api', 'auth', 'database', 'frontend']).describe('问题所在领域'),
},
handler: async ({ area }) => `你正在调试一个 ${area} 问题。请提出澄清性问题并建议诊断步骤。`,
})
分组与标签
使用 group 和 tags 来组织你的 prompts 以便分类。这些字段的工作方式与 tools 相同。
server/mcp/prompts/onboarding/setup-guide.ts
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
tags: ['getting-started'],
description: '帮助新开发者设置项目',
handler: async () => '你正在设置这个项目...',
})
将文件放在 prompts/onboarding/ 中会自动推断出 group: 'onboarding'。
文件组织
将你的 prompts 组织在 server/mcp/prompts/ 目录中。支持平铺和嵌套两种布局:
server/
└── mcp/
└── prompts/
├── greeting.ts
├── summarize.ts
├── onboarding/
│ └── setup-guide.ts
└── debugging/
└── troubleshoot.ts
每个文件都应导出一个默认的 prompt 定义。子目录会自动设置 group。
类型安全
该模块提供完整的 TypeScript 类型推断:
// 参数类型会根据 inputSchema 推断
handler: async ({ text, maxLength }) => {
// text 的类型是 string
// maxLength 的类型是 string | undefined
}
最佳实践
1. 为 AI 理解而设计
编写能为 AI 提供清晰上下文和期望的 prompts:
// Good:清晰的上下文和说明
handler: async ({ code }) =>
`你是一名资深开发者,正在审查 Nuxt 应用的代码。
请根据 Vue 3 最佳实践审查这段代码:\n\n${code}`
// Less effective:说明模糊
handler: async ({ code }) => code
2. 使用描述性参数
始终在 Zod 字段上使用 .describe(),帮助用户和 AI 理解预期内容:
inputSchema: {
// Good:清晰的描述
language: z.enum(['typescript', 'javascript']).describe('代码的编程语言'),
strict: z.boolean().default(true).describe('是否强制执行严格的 TypeScript 规则'),
// Less helpful:没有描述
lang: z.string(),
s: z.boolean(),
}
3. 使用对话流程
使用用户和助手消息来引导 AI:
// Effective:用户提供上下文,助手确认
messages: [
{ role: 'user', content: { type: 'text', text: '你是一位无障碍访问专家。请审查这段 HTML 是否存在 a11y 问题。' } },
{ role: 'assistant', content: { type: 'text', text: '我会分析这段 HTML 的可访问性问题。' } },
]
4. 保持 Prompt 聚焦
每个 prompt 都应有单一、明确的目的。创建多个 prompts,而不是一个复杂的 prompt:
// Good:分离的聚焦 prompts
// server/mcp/prompts/review-security.ts
// server/mcp/prompts/review-performance.ts
// server/mcp/prompts/review-style.ts
// Less maintainable:试图包揽一切的复杂 prompt
5. 提供默认值
对可选参数使用 .default() 以提升易用性:
inputSchema: {
format: z.enum(['brief', 'detailed']).default('detailed').describe('输出格式'),
language: z.string().default('en').describe('响应语言'),
}
6. 在复杂 Prompt 中包含示例
对于需要特定输出格式的 prompts,加入示例:
handler: async () => `按照以下格式生成提交信息:
type(scope): description
示例:
feat(auth): add OAuth2 login support
类型:feat、fix、docs、style、refactor、test、chore`
条件注册
你可以使用 enabled 守卫来控制 prompt 是否对客户端可见:
server/mcp/prompts/admin-prompt.ts
export default defineMcpPrompt({
name: 'admin-prompt',
description: '仅管理员可用的 prompt',
enabled: event => event.context.user?.role === 'admin',
handler: async () => '管理员说明...',
})
有关基于认证过滤的详细文档,请参阅 Dynamic Definitions 指南。
下一步
- Prompt Examples - 查看高级 prompt 示例
- Tools - 创建工具来执行操作
- Resources - 创建资源以公开数据
- Handlers - 创建自定义 MCP 端点
- Dynamic Definitions - 条件性注册定义