載入中

建構我們的 MCP 客戶端的最後一步是實作提示功能。這讓我們能夠列出伺服器上所有可用的提示,並取得填入變數後的特定提示。

實作列出提示

list_prompts 方法很直接。它呼叫 session 的列出提示函式並回傳這些提示:

python
async def list_prompts(self) -> list[types.Prompt]:
    result = await self.session().list_prompts()
    return result.prompts

取得個別提示

get_prompt 方法更有趣,因為它處理變數插值。當您請求一個提示時,您提供的引數會以關鍵字引數的形式傳遞給提示函式:

python
async def get_prompt(self, prompt_name, args: dict[str, str]):
    result = await self.session().get_prompt(prompt_name, args)
    return result.messages

舉例來說,如果您的伺服器有一個 format_document 提示,它預期一個 doc_id 參數,那麼引數字典會包含 {"doc_id": "plan.md"}。這個值會被插入到提示範本中。

實際測試提示

實作完成後,您可以透過 CLI 測試提示。當您輸入斜線(/)時,可用的提示會以指令的形式出現。選擇像「format」這樣的提示,會提示您從可用的文件中選擇。

輸入「/format plan.md」後的 CLI,顯示可用文件的下拉選單——deposition.md、report.pdf、financials.docx、outlook.pdf、plan.md 和 spec.txt——其中 plan.md 被高亮顯示

選擇文件後,系統會將完整的提示傳送給 Claude。AI 會同時收到格式化指示和文件 ID,然後使用可用的工具來擷取並處理內容。

提示如何運作

解釋提示的投影片:它們定義了一組客戶端可以使用的使用者和助手訊息,應該是高品質、經過充分測試,並與 MCP 的目的相關——旁邊是一個 MCP 伺服器程式碼片段,使用 @mcp.prompt 裝飾器定義了一個「format」提示

提示定義了一組客戶端可以使用的使用者和助手訊息。它們應該是高品質、經過充分測試,並與您的 MCP 伺服器的目的相關。工作流程如下:

  • 撰寫並評估與您伺服器功能相關的提示
  • 使用 @mcp.prompt 裝飾器在您的 MCP 伺服器中定義提示
  • 客戶端可以隨時請求該提示
  • 客戶端提供的引數會成為您提示函式中的關鍵字引數
  • 該函式會回傳格式化好的訊息,準備供 AI 模型使用

這個系統建立了可重複使用、參數化的提示,在允許透過變數進行自訂的同時維持一致性。這對於複雜的工作流程特別有用,在這些工作流程中,您希望確保 AI 每次都能收到結構正確的指示。