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. 客户端重新获取提示列表

安全考虑

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