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

上圖展示了資源的運作方式:當使用者輸入類似「What's in the @...」的內容時,我們的程式碼會將其識別為資源請求,向 MCP 伺服器發送 ReadResourceRequest,並取得包含實際內容的 ReadResourceResult。
實作資源讀取
要在您的 MCP 客戶端中啟用資源存取,您需要實作一個 read_resource 函式。首先,加入必要的匯入:
python
import json
from pydantic import AnyUrl核心函式會向 MCP 伺服器發出請求,並根據其 MIME 類型處理回應:
python
async def read_resource(self, uri: str) -> Any:
result = await self.session().read_resource(AnyUrl(uri))
resource = result.contents[0]
if isinstance(resource, types.TextResourceContents):
if resource.mimeType == "application/json":
return json.loads(resource.text)
return resource.text了解回應結構
當您請求一個資源時,伺服器會回傳一個包含 contents 清單的結果。我們存取第一個元素,因為我們通常一次只需要一個資源。回應包括:
- 實際內容(文字或資料)
- 告訴我們如何解析內容的 MIME 類型
- 關於該資源的其他元資料
內容類型處理
該函式會檢查 MIME 類型以決定如何處理內容:
- 如果是
application/json,則將文字解析為 JSON 並回傳解析後的物件 - 否則,回傳原始文字內容
這種方法能無縫處理結構化資料(如 JSON)和純文字文件。
測試資源存取
實作完成後,您可以透過您的 CLI 應用程式測試資源功能。當您輸入「@」後接資源名稱時,系統將會:
- 在自動完成清單中顯示可用的資源
- 讓您使用方向鍵和空格鍵選擇資源
- 將資源內容直接包含在您的提示中
- 將所有內容傳送給 AI 模型,而不需要額外的工具呼叫
與讓 AI 模型進行單獨的工具呼叫來存取文件內容相比,這創造了更流暢的使用者體驗。資源內容成為初始上下文的一部分,從而能夠立即對資料做出回應。