載入中

MCP 伺服器中的提示讓您能夠定義預先建置、高品質的指示,客戶端可以使用這些指示,而不必從頭開始撰寫自己的提示。可以將它們視為精心製作的範本,比使用者自己想出來的結果更好。

MCP 客戶端連接到兩個 MCP 伺服器的示意圖,每個伺服器都公開了工具、資源和提示——其中提示被突顯顯示——位於外部服務之前

為什麼要使用提示?

這裡有個關鍵的洞察:使用者已經可以直接要求 Claude 執行大多數任務。例如,使用者可以輸入「將 report.pdf 重新格式化為 markdown」並得到還不錯的結果。但如果您提供一個經過徹底測試、能處理邊緣情況並遵循最佳實踐的專門提示,他們會得到更好的結果。

身為 MCP 伺服器作者,您可以花時間精心製作、測試和評估能在不同情境下持續有效運作的提示。使用者可以從這些專業知識中受益,而不必自己成為提示工程專家。

使用者會撰寫的簡短提示——「將 report.pdf 轉換為 markdown」——與 MCP 伺服器作者可以提供的經過徹底評估、長得多的提示之並排比較

建置格式化指令

讓我們實作一個實際的範例:一個將文件轉換為 markdown 的格式化指令。使用者將輸入 /format doc_id,並取回其文件的專業格式化 markdown 版本。

工作流程如下:

  • 使用者輸入 / 以查看可用的指令
  • 他們選擇 format 並指定文件 ID
  • Claude 使用您預先建置的提示來讀取並重新格式化文件
  • 結果是具有適當標題、清單和格式的乾淨 markdown

定義提示

提示使用與工具和資源類似的裝飾器模式:

python
from mcp.server.fastmcp.prompts 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"""
Your goal is to reformat a document to be written with markdown syntax.

The id of the document you need to reformat is:
<document_id>
{doc_id}
</document_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)
    ]

該函式會回傳一個直接傳送給 Claude 的訊息清單。您可以包含多個使用者和助理訊息,以建立更複雜的對話流程。

測試您的提示

在部署提示之前,使用 MCP Inspector 來測試它們:

選取了 format 提示的 MCP Inspector,顯示 doc_id 參數以及將傳送給 Claude 的內插訊息

檢查器會準確顯示將傳送給 Claude 的訊息,包括變數如何內插到您的提示範本中。這讓您能在使用者開始依賴它之前,驗證提示是否正確。

主要優點

  • 一致性 - 使用者每次都能獲得可靠的結果
  • 專業知識 - 您可以將領域知識編碼到提示中
  • 可重複使用性 - 多個客戶端應用程式可以使用相同的提示
  • 維護性 - 在一個地方更新提示即可改善所有客戶端

當提示針對您的 MCP 伺服器的領域進行專門化時,效果最好。文件管理伺服器可能有用於格式化、摘要或分析文件的提示。資料分析伺服器可能有用於產生報告或視覺化的提示。

目標是提供精心製作且經過測試的提示,讓使用者更喜歡使用它們,而不是從頭開始撰寫自己的指示。