---
title: "MCP 和 Extensions"
description: "理解 Gemini CLI 如何透過 MCP 和 extensions 連線外部工具、資料來源和團隊工作流。"
verifiedAt: "2026-05-09"
---

MCP（Model Context Protocol，模型上下文協議）和 Extensions 解決的是同一個方向的問題：**讓 Gemini CLI 不只看本地檔案，而是能接入外部工具和能力**。

> [!NOTE]
> MCP 解決“連外部系統”，Extension 解決“打包本地能力”。不要因為兩者都叫擴充套件，就把職責混在一起。

## MCP 是什麼

MCP 可以理解為 AI agent 和外部系統之間的標準工具協議。一個 MCP server 可以暴露工具、資源或 prompt，讓 Gemini CLI 呼叫。

典型場景：

- 查資料庫。
- 讀內部知識庫。
- 調 GitHub、Slack、Notion、Linear。
- 調瀏覽器自動化。
- 接公司自研服務。

## Extensions 是什麼

Extensions 更像 Gemini CLI 的能力包，可以帶來配置、命令、工具、hooks 或文件。它適合把一組長期複用的能力打包分發。

可以這樣區分：

```text
MCP          连接外部运行服务
Extension    打包 Gemini CLI 的本地能力和配置
Skill        让 agent 针对特定任务加载专门工作流
```

| 能力 | 主要解決 | 典型形態 |
| --- | --- | --- |
| MCP | 即時連線外部系統 | GitHub、資料庫、瀏覽器、內部 API |
| Extension | 分發 Gemini CLI 配置和能力 | commands、hooks、MCP 配置、文件 |
| Skill | 讓 agent 載入任務流程 | 審查、釋出、遷移、資料整理 |

## 什麼時候用 MCP

當任務需要即時訪問外部系統時，用 MCP 更自然：

- 需要讀 GitHub issue。
- 需要查詢資料庫。
- 需要呼叫瀏覽器。
- 需要訪問內部 API。
- 需要把結果寫回第三方平臺。

如果只是固定規則或固定流程，先考慮 `GEMINI.md` 或 Skill，不要為了顯得高階強行上 MCP。

## 安全邊界

MCP server 的風險取決於它暴露什麼能力：

- 只讀資源風險低。
- 寫入工具風險中。
- 能刪資料、發訊息、釋出、付款的工具風險高。

生產環境裡，MCP 工具應該有明確 allowlist、日誌、許可權隔離和人工確認策略。

## 接入前的三問

1. 這個 MCP server 暴露的是隻讀能力還是寫入能力。
2. 憑據放在哪裡，日誌會不會列印 token 或內部資料。
3. 呼叫失敗時，Gemini CLI 是重試、降級、還是交給人工處理。

如果這三問沒有答案，就先不要把它接到真實專案。

## 最小接入思路

```text
先接只读 MCP -> 跑低风险查询 -> 确认返回格式 -> 加写入工具 -> 加审计和人工确认
```

不要第一天就把所有系統都接進去。

## 什麼時候不用 MCP

這些情況通常先不用 MCP：

- 只是固定專案規則，用 `GEMINI.md`。
- 只是固定工作流，用 Skill 或 custom command。
- 只是本地命令，用 shell tool 或 script。
- 只是靜態資料，用文件或資原始檔。

MCP 應該服務於即時系統連線，不應該變成所有流程的萬能入口。

## 上線前驗收

MCP 接入前先驗收只讀 resource，再驗收低風險 tool，最後才開放寫操作。Extension 安裝前先看 manifest、commands、MCP 配置、hooks 和指令碼。兩者都不能繞過憑據管理和日誌審計。

如果只是教程內容，不需要即時系統，優先使用官方連結、靜態文件和可複核來源，不要為了“更自動”額外接 MCP。

## 配置落地提示

MCP server 通常放在 `settings.json` 的 `mcpServers` 中，可能使用 command、url 或 httpUrl 這類 transport。憑據應該透過環境變數或系統憑據管理傳入，不要寫進教程或儲存庫。

Extension 則至少要看 `gemini-extension.json`、commands、context file、MCP 配置和 excludeTools。安裝前先讀這些檔案，確認它沒有偷偷擴大工具許可權。

兩者都要有停用路徑。不能關閉的外部能力，不適合放進團隊預設配置。

## 資料型任務的替代方案

教程寫作、官方資料核驗、版本對比這類任務，不一定需要 MCP。用 Firecrawl 或官方網頁抓取事實，再把來源寫進文件，往往比接一個長期 MCP server 更簡單、更可審計。

MCP 適合需要頻繁讀寫外部系統的長期工作流，不適合一次性資料採集。

一次性官方資料採集還要保留抓取時間、來源 URL 和引用頁面。這樣後續內容過期時，只需要回到同一批來源複核，不必先排查某個長期 MCP server 是否還線上。

## 官方資料

- MCP servers：[docs/tools/mcp-server.md](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md)
- Extensions：[docs/extensions/index.md](https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/index.md)
- MCP 協議規範：[modelcontextprotocol.io](https://modelcontextprotocol.io)
- Settings（mcpServers 配置）：[docs/cli/settings.md](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/settings.md)

## 下一篇

<Cards>
  <Card title="Skills、Subagents、Hooks" description="理解 MCP 之後，繼續看能力包、分工和生命週期攔截。" href="/zh-Hant/docs/gemini-cli/understanding/07-skills-subagents-hooks" />
  <Card title="MCP setup" description="需要實際配置 MCP server 時，回到官方 setup 頁面。" href="/zh-Hant/docs/gemini-cli/official/03-tools-mcp/35-mcp-setup" />
  <Card title="Extensions" description="需要打包和分發能力時，回到 Extensions 頁面。" href="/zh-Hant/docs/gemini-cli/official/03-tools-mcp/38-extensions" />
</Cards>
