建構我們的 MCP 客戶端的最後一步是實作提示功能。這讓我們能夠列出伺服器上所有可用的提示,並取得特定提示,同時將變數插入其中。
實作列出提示
list_prompts 方法很直接。我們呼叫 session 的列出提示方法並回傳這些提示:
python
async def list_prompts(self) -> list[types.Prompt]:
result = await self.session().list_prompts()
return result.prompts取得個別提示
get_prompt 方法更有趣,因為它處理引數插入。當我們請求特定提示時,我們會傳遞引數,這些引數會被注入到提示函式中。例如,如果我們的伺服器有一個「format」提示,它預期一個 doc_id 參數,該值會被傳遞並插入到實際的提示文字中。
python
async def get_prompt(self, prompt_name, args: dict[str, str]):
result = await self.session().get_prompt(prompt_name, args)
return result.messages此方法會回傳訊息,這些訊息構成一段可直接餵給 Claude 的對話。
實際測試提示
當您執行客戶端並輸入斜線時,您會看到可用的提示以指令形式顯示。選擇像「format」這樣的提示會提示您從可用文件中選擇。系統接著會:
- 取得已插入文件 ID 的提示
- 將其直接作為使用者訊息餵給 Claude
- Claude 同時收到指示和文件 ID
- Claude 使用可用的工具來擷取文件內容
- Claude 以重新格式化的結果回應

提示如何運作
提示定義了一組可供客戶端使用的使用者與助手訊息。這些提示應該是高品質、經過充分測試,並與您的 MCP 伺服器的整體目的相關。

工作流程如下:
- 撰寫並評估與您的 MCP 伺服器目的相關的提示
- 使用
@mcp.prompt裝飾器在您的 MCP 伺服器內定義該提示 - 您的客戶端可以隨時請求該提示
- 請求提示時,提供會作為關鍵字引數傳遞給提示函式的引數
- 該函式使用這些引數來自訂提示內容
此系統建立了可重複使用、可參數化的提示,這些提示可以在不同的客戶端和使用案例之間共享,使您的 MCP 伺服器更加多功能且強大。