构建我们的 MCP 客户端的最后一步是实现提示功能。这使我们能够列出服务器上所有可用的提示,并检索将变量插入其中的特定提示。
实现列出提示功能
list_prompts 方法很简单。我们调用会话的列出提示方法并返回这些提示:
python
async def list_prompts(self) -> list[types.Prompt]:
result = await self.session().list_prompts()
return result.prompts获取单个提示
get_prompt 方法更有趣,因为它处理参数插值。当我们请求特定提示时,我们传递的参数会被注入到提示函数中。例如,如果我们的服务器有一个期望 doc_id 参数的"format"提示,该值会被传递并插入到实际的提示文本中。
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 的对话。
实际测试提示
当您运行客户端并输入斜杠时,您会看到可用的提示作为命令显示出来。选择像"format"这样的提示会提示您从可用文档中进行选择。然后系统会:
- 获取插入了文档 ID 的提示
- 将其作为用户消息直接提供给 Claude
- Claude 接收指令和文档 ID
- Claude 使用可用工具获取文档内容
- Claude 返回重新格式化后的结果

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

工作流程如下:
- 编写并评估与您的 MCP 服务器目的相关的提示
- 使用
@mcp.prompt装饰器在您的 MCP 服务器内定义该提示 - 您的客户端可以随时请求该提示
- 请求提示时,提供作为关键字参数传递给提示函数的参数
- 该函数使用这些参数来定制提示内容
这个系统创建了可重用的、参数化的提示,可以在不同的客户端和使用场景之间共享,使您的 MCP 服务器更加通用和强大。