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