---
title: "MCP resources"
description: "Gemini CLI MCP resources 的用途：讓外部系統提供可讀資源、上下文和工具後設資料，並和普通工具呼叫區分。"
verifiedAt: "2026-05-09"
---

MCP 不只提供工具，也可以提供 resources。resources 更像“外部系統暴露出來的上下文材料”，工具更像“可以執行的動作”。

> [!NOTE]
> Resources 是 MCP 的低風險入口。能先用只讀 resource 解釋清楚外部系統狀態，就不要一上來開放寫工具。

Gemini CLI 有兩個相關工具：`list_mcp_resources` 負責發現已連線 MCP server 暴露了哪些資源；`read_mcp_resource` 負責按 URI 讀取某個資源內容。它們都是隻讀能力，不需要確認。

官方引數很簡單：`list_mcp_resources` 可以用 `serverName` 過濾某個 server，`read_mcp_resource` 需要傳入具體 `uri`。列表結果通常會整理成 URI 和描述；讀取結果會按文本或二進位制處理，二進位制內容可能只返回型別佔位。

## resources 適合什麼

- 文件片段。
- 資料庫 schema。
- 專案狀態。
- 服務元資訊。
- 只讀上下文。

## 和工具的區別

| 型別 | 重點 |
| --- | --- |
| Resource | 讀上下文 |
| Tool | 執行動作 |

Resources 的價值在於“先理解，再行動”。例如資料庫 MCP server 可以先暴露 schema resource，讓 Gemini CLI 讀取表結構；只有當你確認理解正確後，再開放寫查詢或遷移工具。

| Resource 內容 | 推薦格式 | 價值 |
| --- | --- | --- |
| 資料庫 schema | JSON / Markdown | 先理解表結構再寫查詢 |
| API 文件 | Markdown | 降低模型憑記憶猜引數 |
| 專案執行狀態 | JSON | 讓 agent 讀真實狀態 |
| Runbook | Markdown | 把運維步驟變成可讀上下文 |
| 許可權說明 | JSON / Markdown | 解釋哪些工具可用、哪些停用 |

## 使用流程

1. 用 `list_mcp_resources` 看有哪些 server 和 URI。
2. 選擇一個 resource URI，用 `read_mcp_resource` 讀取內容。
3. 讓 Gemini CLI 基於 resource 解釋外部系統狀態。
4. 如果需要執行動作，再單獨決定是否允許 MCP tool。

對於二進位制資源，Gemini CLI 可能只返回資料型別佔位，不一定能直接理解內容。高價值上下文最好提供 text 或結構化 JSON。

## 設計邊界

Resource 應該回答“現在系統是什麼狀態”，Tool 才回答“要不要執行動作”。如果一個 MCP server 只暴露寫工具，沒有隻讀資源，agent 會更容易在理解不足時直接呼叫動作。

商業專案建議給每個高風險工具配一個只讀 resource。例如部署工具旁邊放 `status://deploy/current`，資料庫寫工具旁邊放 `schema://db/main`，工單寫工具旁邊放 `docs://ticketing/workflow`。這樣 agent 可以先讀上下文，再提出動作計劃。

## 使用建議

能用 resource 提供上下文時，不要一上來給寫工具。先讓 Gemini CLI 讀懂外部系統，再決定是否需要執行能力。

團隊 MCP 設計時，優先把風險低、複用高的資料做成 resources，例如 API schema、執行手冊、當前環境元資訊、只讀報表。寫操作工具要單獨分層、單獨授權。

## URI 設計建議

Resource URI 要穩定、可讀、可列舉。不要把短期 token、使用者私有路徑或一次性查詢引數塞進 URI。更好的設計是用清晰命名錶達資源型別：

```text
schema://main-db/public
runbook://deploy/frontend
status://service/api-prod
docs://internal/auth-flow
```

URI 穩定後，教程和 custom command 才能可靠引用它。否則每次資源名變化，agent 需要重新發現，自動化也會變脆。

不要把資源 URI 設計成含 token、時間戳或本機絕對路徑的字串。憑據應該走 MCP server 的環境變數或認證層，資源 URI 只表達資源身份。這樣教程、指令碼和審計日誌都更容易複核。

## 驗收方式

連線 MCP 後，不要直接讓 agent 執行工具。先列 resources，讀取一個已知資源，確認返回內容、URI、server 名稱和描述都正確。這樣能先驗證上下文鏈路，再驗證動作鏈路。

## 接下來去哪

<Cards>
  <Card title="Extensions" description="需要把 MCP、commands、themes、skills 打包分發時，繼續看 extensions。" href="/zh-Hant/docs/gemini-cli/official/03-tools-mcp/38-extensions" />
  <Card title="MCP server" description="回看 server transport、OAuth、工具發現和憑據傳遞。" href="/zh-Hant/docs/gemini-cli/official/03-tools-mcp/36-mcp-server" />
  <Card title="檔案系統工具" description="對比內建只讀檔案工具和 MCP resources 的職責邊界。" href="/zh-Hant/docs/gemini-cli/official/03-tools-mcp/31-file-system-tool" />
</Cards>

## 官方來源

- [Google Developers Gemini CLI](https://developers.google.com/gemini-code-assist/docs/gemini-cli?hl=zh-cn)
- [Gemini CLI GitHub](https://github.com/google-gemini/gemini-cli)
