加载中

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

为什么要使用提示?

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

用户的一行提示旁边是一个经过测试的提示,该提示设定了文档转换角色、格式规则和分析标签。

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

提示的工作原理

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

一个包含名为"format"的提示的 MCP 服务器,其 format_document 函数返回如下所示的消息列表。

基本结构如下所示:

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

构建一个 Format 命令

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

python
from mcp.server.fastmcp.prompts import base

然后定义您的提示函数:

python
@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"""
Your goal is to reformat a document to be written with markdown syntax.

The id of the document you need to reformat is:

{doc_id}


Add in headers, bullet points, tables, etc as necessary. Feel free to add in extra formatting.
Use the 'edit_document' tool to edit the document. After the document has been reformatted...
"""
    
    return [
        base.UserMessage(prompt)
    ]

测试您的提示

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

MCP Inspector 显示带有 doc_id outlook.pdf 的"format"提示以及 Get Prompt 结果,其中一条消息的角色为"user"。

这让您能够在实际应用中使用之前,验证您的提示是否正确地插入了变量,并生成了预期的消息结构。

最佳实践

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

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

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