iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
AI Engineering

30 天探索 MCP:從基礎概念到實作系列 第 23 篇

MCP Resources 實戰:讓 Agent 直接讀取資料

  • 分享至 

  • xImage
  •  

前面我們已經做了不少 MCP Tool,讓 Agent 可以透過 Tool 執行各種操作,不過 MCP 不只有 Tool,如果今天我們只是想讓 Agent 取得某些資料,而不是執行一個動作,其實可以使用 MCP 的 Resource。

所以今天就來實際做一個 Resource,讓 Agent 可以讀取 MCP Server 提供的資料。


建立 Resource

首先建立 day23 資料夾:

day23/
├── server.py
├── client.py
└── data/
    └── company_info.txt

先準備一份簡單的公司資料:

https://ithelp.ithome.com.tw/upload/images/20261007/20178769q5MQrPCsNH.png

接著在 MCP Server 中建立 Resource:

@mcp.resource("company://info")
def get_company_info() -> str:
    return DATA_FILE.read_text(encoding="utf-8")

這裡使用 @mcp.resource() 宣告 Resource。

當 Client 讀取company://info Server 就會回傳對應的公司資料。


使用 Client 讀取 Resource

接著在 Client 中使用:

result = await session.read_resource(
    "company://info"
)

print(result.contents[0].text)

執行後,就可以看到 MCP Server 提供的公司資訊,這裡和之前呼叫 Tool 不太一樣,我們不是讓 Server 執行一個動作,而是讀取一份資料。


Resource Template

如果 Resource 的資料不是固定的,而是會根據不同參數改變,就可以使用 Resource Template,例如我們可以建立員工資料:

https://ithelp.ithome.com.tw/upload/images/20261007/20178769k2UmIau2iK.png

這裡的 {name} 就是一個參數,使用 company://employee/Alice 就會取得 Alice 的資料,Client 只要讀取就能取得對應內容。


流程與實測

前面已經確認 Client 可以正常取得 Resource,接下來就實際把資料交給 Gemini,這次我們讓 Client 讀company://employee/Alice取得的資料是 Alice:Software Engineer

接著會把這份資料提供給 Gemini,並輸入 Alice 是做什麼工作的?

Gemini 最後回答:Alice 的工作是 Software Engineer(軟體工程師)

https://ithelp.ithome.com.tw/upload/images/20261007/201787695nNDFsdkc5.png

這次的流程就變成:

company://employee/Alice
        ↓
MCP Resource
        ↓
MCP Client
        ↓
取得 Alice 的資料
        ↓
Gemini
        ↓
回答問題

這裡要注意,今天並不是讓 Gemini 自己去選擇 Resource,而是由 Client 先讀取 Resource,再把取得的資料交給 Gemini。


Tool 和 Resource 有什麼差別?

到這裡可以簡單比較一下:

Tool Resource
用途 執行操作 取得資料
例子 計算、查詢、寫檔案 公司資訊、員工資料
核心概念 「叫它做事情」 「取得一份資料」

Tool 是讓 AI 做事情,Resource 是讓 AI 取得資料。


Resource 和 RAG 一樣嗎?

兩者都是讓 Agent 取得資料,但方式不同,Resource 是直接讀取 MCP Server 提供的資料,而 RAG 則是先搜尋知識庫,再找出相關內容。

Resource 是直接取得指定資料,RAG 是搜尋相關資料。

今天的 Resource 不需要使用 Embedding 或 Vector Database,直接透過 MCP Client 讀取即可。


總結

今天我們第一次實際使用 MCP Resource,除了 Tool 之外,MCP Server 也可以提供資料給 Client 讀取,而且還可以透過 Resource Template,根據不同參數取得不同資料。

這樣我們的 Agent 就不只是能使用 Tool,也能取得 MCP Server 提供的資料。


上一篇
Agent 的限制:認識 Token、Context 與執行次數限制
系列文
30 天探索 MCP:從基礎概念到實作 共 23 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言