加载中

MCP 服务器可以定义提示——预先编写的高质量指令,客户端可以使用这些指令,而不必从头编写自己的提示。可以将提示视为精心制作的模板,它们比用户自己可能编写的内容能带来更好的结果。

为什么要使用提示?

假设您想让 Claude 将文档重新格式化为 markdown。您可以直接问"将 report.pdf 转换为 markdown",这样也能正常工作。但如果使用一个经过充分测试、涵盖边缘情况并给出具体格式化指令的详细提示,您通常会获得更好的结果。

这个想法很简单:作为 MCP 服务器开发者,我们可以花时间精心制作和测试真正优秀的提示,然后将它们提供给使用我们服务器的任何人。用户无需自己成为提示工程专家,就能获得更好的结果。

定义提示

提示使用与工具和资源类似的装饰器模式。以下是基本结构:

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]:
    # 返回消息列表

该函数返回一个消息列表,可以直接发送给 Claude。如果需要,这让您能够构建包含多个用户和助手消息的复杂提示。

构建格式化提示

对于我们的文档服务器,我们将创建一个将文档重新格式化为 markdown 的提示。该提示需要:

  • 接受文档 ID 作为输入
  • 使用 read_doc_contents 工具获取文档
  • 使用正确的 markdown 语法重新格式化
  • 将更改保存回文档

以下是实现方式:

python
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 structure.
Use the 'edit_document' tool to edit the document. After the document has been reformatted...
"""
    
    return [
        base.UserMessage(prompt)
    ]

测试提示

定义好提示后,您可以使用 MCP Inspector 对其进行测试。导航到 Prompts 标签页,选择您的提示,并提供所需的参数。

检查器将向您展示将发送给 Claude 的生成消息。您可以验证参数插值是否正确工作,以及您的提示是否包含所有必要的指令。

主要优势

  • 质量控制 - 服务器作者可以在用户看到提示之前对其进行测试和完善
  • 一致性 - 每个人都能获得相同的高质量提示,而不是临时拼凑
  • 专业化 - 提示可以针对您服务器的特定领域和能力进行定制
  • 可复用性 - 多个客户端应用程序可以使用相同的精心制作的提示

请记得导入消息类型所需的基础模块:

python
from mcp.server.fastmcp.prompts import base

当您的 MCP 服务器具有特定的专注领域时——比如文档管理、数据分析或代码生成——提示尤其有价值。您可以为用户提供经过实战检验的提示,有效利用您服务器的工具。