建構我們的 MCP 客戶端的最後一步是實作提示功能。這讓我們能夠列出伺服器上所有可用的提示,並取得特定提示,同時將變數插入其中。
實作列出提示
list_prompts 方法很直接。我們呼叫 session 的列出提示方法並回傳這些提示:
python
async def list_prompts(self) -> list[types.Prompt]:
result = await self.session().list_prompts()
return result.prompts取得個別提示
get_prompt 方法更有趣,因為它處理引數插值。當我們請求特定提示時,我們會傳遞引數,這些引數會被注入到提示函式中。例如,如果我們的伺服器有一個預期 doc_id 參數的「format」提示,我們會在引數字典中提供該值:
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 的對話。
提示引數如何運作
當您在 MCP 伺服器中定義提示函式時,任何參數都會成為可用的插值變數。您傳遞給 get_prompt 的引數字典會為這些參數提供值。伺服器接著會產生完整的提示,並將您的值替換到適當的位置。

測試實作
實作完成後,您可以透過 CLI 測試提示。當您輸入斜線時,可用的提示會以命令的形式出現。選擇像「format」這樣的提示會提示您為任何必要的引數選擇值(例如選擇要格式化的文件)。系統接著會:
- 取得已插入您的引數的提示
- 將完整的提示傳送給 Claude
- Claude 執行任何必要的工具呼叫以完成請求
- 回傳格式化後的結果

實務中的提示
提示定義了客戶端可以呼叫的可重複使用的使用者與助手訊息集合。它們應該是高品質、經過充分測試,並與您的 MCP 伺服器的目的相關。將它們視為預先建構的工作流程,結合您伺服器的工具與資源來完成特定任務。
提示系統在提示邏輯(定義於伺服器上)與執行(由客戶端與 Claude 處理)之間建立了清晰的分離。這使得建立複雜的多步驟工作流程變得容易,使用者可以透過簡單的命令來觸發這些工作流程。