加载中

客户端中的提示

第 56 课9 分钟

MCP 中的提示定义了一组可供客户端使用的用户和助手消息。这些提示应该是高质量的、经过充分测试的,并且与 MCP 服务器的整体用途相关。

实现列出提示功能

第一步是在您的 MCP 客户端中实现 list_prompts 方法。此方法从服务器检索所有可用的提示:

python
async def list_prompts(self) -> list[types.Prompt]:
    result = await self.session().list_prompts()
    return result.prompts

这个简单的实现调用会话的 list_prompts 方法,并返回结果中的提示数组。

获取单个提示

get_prompt 方法检索一个特定的提示,并将参数插入其中。当您请求一个提示时,您提供的参数会作为关键字参数传递给提示函数:

python
async def get_prompt(self, prompt_name, args: dict[str, str]):
    result = await self.session().get_prompt(prompt_name, args)
    return result.messages

该方法返回结果中的消息,这些消息构成了一段可以直接输入给 Claude 的对话。

提示参数的工作原理

当您在服务器端定义一个提示函数时,它可以接受参数。例如,一个文档格式化提示可能期望一个 doc_id 参数:

python
def format_document(doc_id: str):
    # doc_id 会被插入到提示中

当客户端调用 get_prompt 时,参数字典应包含预期的键。MCP 服务器会将这些作为关键字参数传递给提示函数,从而允许将动态内容插入到提示模板中。

在 CLI 中测试提示

实现完成后,您可以通过命令行界面测试提示。当您输入斜杠时,可用的提示会以命令的形式出现。选择一个提示可能会提示您从可用选项中进行选择(例如文档 ID),然后完整的提示会被发送给 Claude。

工作流程如下:

  1. 用户选择一个提示(例如"format")
  2. 系统提示输入所需的参数(例如要格式化哪个文档)
  3. 提示会连同插入的值一起发送给 Claude
  4. Claude 随后可以使用工具获取额外数据并完成任务

提示最佳实践

在为您的 MCP 服务器创建提示时:

  • 使其与您服务器的用途相关
  • 在部署前对其进行充分测试
  • 使用清晰、具体的指令
  • 设计它们以与您可用的工具良好配合
  • 考虑用户需要提供哪些参数

提示弥合了预定义功能与动态用户需求之间的差距,为 Claude 提供了处理复杂任务的结构化起点,同时通过参数化保持了灵活性。