概念
提示词(Prompts)
创建可重用的提示词模板和工作流
提示词(Prompts)使服务器能够定义可重用的提示词模板和工作流,客户端可以轻松地将其呈现给用户和LLM。它们提供了一种强大的方式来标准化和共享常见的LLM交互。
提示词设计为用户可控的,这意味着它们从服务器暴露给客户端时,目的是让用户能够明确地选择使用它们。
概述
MCP中的提示词是预定义的模板,具有以下功能:
- 接受动态参数
- 包含来自资源的上下文
- 链接多个交互
- 引导特定工作流
- 作为UI元素呈现(如斜杠命令)
提示词结构
每个提示词的定义包含:
发现提示词
客户端可以通过prompts/list
端点发现可用的提示词:
使用提示词
要使用提示词,客户端需要发送prompts/get
请求:
动态提示词
提示词可以是动态的,包括:
嵌入资源上下文
处理prompts/get
请求时:
多步骤工作流
示例实现
以下是在MCP服务器中实现提示词的完整示例:
最佳实践
在实现提示词时:
- 使用清晰、描述性的提示词名称
- 为提示词和参数提供详细描述
- 验证所有必需参数
- 优雅地处理缺失参数
- 考虑提示词模板的版本控制
- 适当缓存动态内容
- 实现错误处理
- 记录预期的参数格式
- 考虑提示词的可组合性
- 使用各种输入测试提示词
UI集成
提示词可以在客户端UI中以以下形式呈现:
- 斜杠命令
- 快速操作
- 上下文菜单项
- 命令面板条目
- 引导式工作流
- 交互式表单
更新和变更
服务器可以通知客户端提示词的变更:
- 服务器能力:
prompts.listChanged
- 通知:
notifications/prompts/list_changed
- 客户端重新获取提示词列表
安全注意事项
在实现提示词时:
- 验证所有参数
- 净化用户输入
- 考虑速率限制
- 实现访问控制
- 审计提示词使用情况
- 适当处理敏感数据
- 验证生成的内容
- 实现超时机制
- 考虑提示词注入风险
- 记录安全要求