Skip to main content
提示使服务器能够定义可重用的提示模板和工作流程,客户端可以轻松地向用户和 LLM 显示这些提示。它们提供了一种标准化和共享常见 LLM 交互的强大方式。
提示旨在是用户控制的,这意味着它们是从服务器暴露给客户端的,目的是让用户能够明确选择它们进行使用。

概述

MCP 中的提示是预定义的模板,可以:
  • 接受动态参数
  • 包含来自资源的上下文
  • 链接多个交互
  • 指导特定的工作流程
  • 作为 UI 元素(如斜杠命令)显示

提示结构

每个提示都定义为:

发现提示

客户端可以通过 prompts/list 端点发现可用的提示:

使用提示

要使用提示,客户端发出 prompts/get 请求:

动态提示

提示可以是动态的,并包括:

嵌入的资源上下文

处理 prompts/get 请求时:

多步骤工作流程

示例实现

以下是实现 MCP 服务器中提示的完整示例:

最佳实践

实现提示时:
  1. 使用清晰、描述性的提示名称
  2. 提供详细的提示和参数描述
  3. 验证所有必需的参数
  4. 优雅地处理缺失的参数
  5. 考虑提示模板的版本控制
  6. 在适当时缓存动态内容
  7. 实现错误处理
  8. 记录预期的参数格式
  9. 考虑提示的可组合性
  10. 使用各种输入测试提示

UI 集成

提示可以在客户端 UI 中显示为:
  • 斜杠命令
  • 快速操作
  • 上下文菜单项
  • 命令面板条目
  • 引导工作流程
  • 交互式表单

更新和更改

服务器可以通知客户端提示更改:
  1. 服务器功能:prompts.listChanged
  2. 通知:notifications/prompts/list_changed
  3. 客户端重新获取提示列表

安全考虑

实现提示时:
  • 验证所有参数
  • 清理用户输入
  • 考虑速率限制
  • 实现访问控制
  • 审计提示使用情况
  • 适当处理敏感数据
  • 验证生成的内容
  • 实现超时
  • 考虑提示注入风险
  • 记录安全要求