第 78 页 / 共 100 页 / 飞书修订版 5

9.Defining prompts

此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)

邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org

==================================================

MCP 服务器中的提示词让您能够定义预构建的高质量指令,客户端可以直接使用这些指令,而无需从零开始编写自己的提示词。可以将它们视为精心制作的模板,能够提供比用户自己想出的更好的结果。

为什么要使用提示词?

假设您希望 Claude 将文档重新格式化为 markdown。用户可以直接输入"将 report.pdf 转换为 markdown",这样做也能正常工作。但是,如果使用经过充分测试的提示词,其中包含关于格式、结构和输出要求的具体说明,他们可能会获得更好的结果。

image1.jpeg

关键洞察是,虽然用户可以自己完成这些任务,但当使用由 MCP 服务器作者精心开发和测试的提示词时,他们会获得更一致和更高质量的结果。

How Prompts Work

提示词定义了一组用户和助手消息,客户端可以直接使用。当客户端请求提示词时,您的服务器会返回一个消息列表,这些消息可以直接发送给 Claude。

image2.jpeg

基本结构如下所示:

  • 使用 @mcp.prompt() 装饰器定义提示词
  • 为每个提示词添加名称和描述
  • 返回构成完整提示词的消息列表
  • 这些提示词应该是高质量的、经过充分测试的,并且与您的 MCP 服务器的用途相关

构建格式化命令

以下是如何实现文档格式化提示的方法。首先,你需要导入基础消息类型:

from mcp.server.fastmcp import base

然后定义你的提示函数:

@mcp.prompt(

name="format",

description="Rewrites the contents of the document in Markdown format."

)

def format_document(

doc_id: str = Field(description="Id of the document to format")

) -> list[base.Message]:

prompt = f"""

你的目标是将文档重新格式化为使用 markdown 语法编写。

你需要重新格式化的文档 ID 是:

{doc_id}

根据需要添加标题、项目符号、表格等。可以随意添加额外的格式化。

使用 'edit_document' 工具来编辑文档。文档重新格式化完成后...

"""

return [

base.UserMessage(prompt)

]

测试你的 Prompt

您可以使用MCP Inspector测试提示词。导航到Prompts部分,选择您的提示词,并提供任何必需的参数。Inspector将显示将要发送给Claude的生成消息。

image3.jpeg

这让您可以在真实应用中使用之前,验证您的提示词是否正确插入变量并产生预期的消息结构。

Best Practices

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

  • 专注于对您服务器目标至关重要的任务
  • 编写详细、具体的指令,而不是模糊的请求
  • 使用不同的输入彻底测试您的提示词
  • 包含清晰的描述,让用户了解每个提示词的作用
  • 考虑提示词如何与您服务器的工具和资源配合使用

请记住,提示词的目的是提供用户自己难以轻易获得的价值——它们应该代表您在MCP服务器所涵盖领域的专业知识。

==================================================



此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org