MCP 中的資源允許您的伺服器公開可直接包含在提示中的數據,而不需要透過工具呼叫來存取資訊。這創造了一種更有效率的方式,為像 Claude 這樣的 AI 模型提供上下文。
理解資源流程

當使用者想要存取資源內容時,流程如下:
- 使用者請求有關資源的資訊(例如「@report.pdf」)
- 您的程式碼需要一份文件名稱清單以供自動完成
- MCP 客戶端向 MCP 伺服器發送 ReadResourceRequest
- 伺服器以包含資源數據的 ReadResourceResult 回應
- 您的程式碼接著可以將此數據直接放入提示中
實作資源讀取
要從您的 MCP 客戶端讀取資源,您需要實作一個 read_resource 函式。首先,加入必要的匯入:
python
import json
from pydantic import AnyUrl核心函式會向您的 MCP 會話發出請求並處理回應:
python
async def read_resource(self, uri: str) -> Any:
result = await self.session().read_resource(AnyUrl(uri))
resource = result.contents[0]處理不同的資源類型
資源可以回傳不同類型的內容,因此您需要檢查 MIME 類型並相應地解析:
python
if isinstance(resource, types.TextResourceContents):
if resource.mimeType == "application/json":
return json.loads(resource.text)
return resource.text這種方法處理兩種主要情境:
- 需要解析的 JSON 資源
- 可以原樣回傳的純文字資源
測試資源存取

您可以透過在應用程式中測試來驗證您的資源實作是否正常運作。當您輸入「@」後接資源名稱時,您應該會看到可用資源的自動完成清單。選擇其中一個將會把其內容直接包含在您的提示中。
這種方法的主要優勢在於效率——Claude 能立即收到文件內容,而不需要進行額外的工具呼叫來存取資訊。
資源與工具的使用比較
資源在以下情況特別有用:
- 您有經常被參考的靜態或半靜態內容
- 您想要減少 API 呼叫的次數
- 內容應該立即在提示上下文中可用
這與工具不同,工具更適合用於動態操作,或是當您需要 AI 根據對話上下文來決定是否存取某些資訊時。