提示词
编写与结构
名称、角色、参数以及提示词定义的形态。
自动生成的名称和标题
你可以省略 name 和 title——它们将根据文件名自动生成:
server/mcp/prompts/greeting.ts
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
// name 和 title 会根据文件名自动生成:
// name: 'greeting'
// title: 'Greeting'
description: '生成个性化的问候消息',
handler: async () => {
// ...
},
})
文件名 greeting.ts 会自动变为:
name:greeting(kebab-case)title:Greeting(标题格式)
你仍然可以显式提供 name 或 title 来覆盖自动生成的值。
简单提示词(无参数)
创建一个不带参数的提示词。处理函数可以返回一个简单字符串——它会被自动包装为单个用户消息:
server/mcp/prompts/greeting.ts
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
name: 'greeting',
title: 'Greeting',
description: '生成个性化的问候消息',
handler: async () => {
const hour = new Date().getHours()
const timeOfDay = hour < 12 ? 'morning' : hour < 18 ? 'afternoon' : 'evening'
return `Good ${timeOfDay}! How can I help you today?`
},
})
默认角色
当处理函数返回字符串时,默认会使用 user 角色进行包装。使用 role 选项可以更改这一点:
server/mcp/prompts/code-reviewer.ts
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
role: 'assistant',
description: '代码审查助手人格',
handler: async () => 'I am a code review assistant. Share your code and I will review it for best practices.',
})
role 选项只影响字符串返回值。当返回完整的 GetPromptResult 时,请直接在 messages 数组中定义角色。带参数的提示词
创建一个接受参数的提示词:
server/mcp/prompts/summarize.ts
import { z } from 'zod'
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
name: 'summarize',
title: '文本摘要器',
description: '总结任何文本内容',
inputSchema: {
text: z.string().describe('要总结的文本'),
maxLength: z.string().optional().describe('摘要的最大字数'),
},
handler: async ({ text, maxLength }) => {
const words = text.split(/\s+/)
const maxWords = maxLength ? Number.parseInt(maxLength) : Math.ceil(words.length * 0.3)
const summary = words.slice(0, maxWords).join(' ')
return `摘要(${maxWords} 个词):${summary}${words.length > maxWords ? '...' : ''}`
},
})
提示词结构
一个提示词定义由以下部分组成:
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
name: 'prompt-name', // 唯一标识符
handler: async () => 'Your prompt text here',
})
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
name: 'prompt-name',
role: 'assistant', // 字符串返回值的角色(默认:'user')
handler: async () => 'I am an assistant persona.',
})
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'
export default defineMcpPrompt({
name: 'prompt-name',
title: '提示词标题', // 人类可读的标题
description: '描述', // 提示词的作用
inputSchema: { ... }, // 参数的 Zod 模式
handler: async (args) => { // 带参数的处理函数
return `使用 ${args.param} 的提示词文本`
},
})