MCP 和 Extensions
理解 Gemini CLI 如何透過 MCP 和 extensions 連線外部工具、資料來源和團隊工作流。
📖 本篇術語速查表
| 英文 / 縮寫 | 中文 | 一句話解釋 |
|---|---|---|
| MCP | 模型上下文協議 | 接外部系統的標準介面。 |
| Extensions | 擴充套件 | Gemini CLI 的擴充套件機制。 |
| 接入邊界 | scope | 擴充套件能訪問什麼。 |
不想讀完?把下面這段提示詞丟給 AI 幫你跑完——幫你判斷 Gemini CLI 該接哪些 MCP / Extensions、怎麼安全用。
你是 Gemini CLI 擴充套件接入顧問。
【角色】
Gemini CLI 擴充套件接入顧問,按最小夠用、安全優先的原則給可落地方案。
【輸入】
- 任務需要什麼外部能力:___
- 資料在本地還是遠端:___
- 是否涉及聯網 / 寫 / 金鑰:___
- 是否反覆用:___
【工作流程】
1. 判斷最低需要哪種擴充套件
2. 說明 MCP / Extensions 怎麼接
3. 按最小限許可權
4. 給安全清單和驗證
【輸出規範】
▌一、最低需要哪種
▌二、接入方式
▌三、許可權最小化
▌四、安全 + 驗證
【硬約束】
- 能用內建就不接外部
- 金鑰走安全方式
- 擴充套件返回視為不可信
- 不要替我臆測情況或編造不存在的能力,資訊不全先問清
- 不確定的設定或介面一律以官方文件為準,禁止照搬過時寫法
- 給的每條結論都要落到具體可照做的步驟或示例,不停留在「建議」「考慮一下」這類沒法直接執行的空泛表述MCP(Model Context Protocol,模型上下文協議)和 Extensions 解決的是同一個方向的問題:讓 Gemini CLI 不只看本地檔案,而是能接入外部工具和能力。
MCP 解決“連外部系統”,Extension 解決“打包本地能力”。不要因為兩者都叫擴充套件,就把職責混在一起。
MCP 是什麼
MCP 可以理解為 AI agent 和外部系統之間的標準工具協議。一個 MCP server 可以暴露工具、資源或 prompt,讓 Gemini CLI 呼叫。
典型場景:
- 查資料庫。
- 讀內部知識庫。
- 調 GitHub、Slack、Notion、Linear。
- 調瀏覽器自動化。
- 接公司自研服務。
Extensions 是什麼
Extensions 更像 Gemini CLI 的能力包,可以帶來設定、命令、工具、hooks 或文件。它適合把一組長期複用的能力打包分發。
可以這樣區分:
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、記錄、許可權隔離和人工確認策略。
接入前的三問
- 這個 MCP server 暴露的是隻讀能力還是寫入能力。
- 憑據放在哪裡,記錄會不會列印 token 或內部資料。
- 呼叫失敗時,Gemini CLI 是重試、降級、還是交給人工處理。
如果這三問沒有答案,就先不要把它接到真實專案。
最小接入思路
先接只讀 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
- Extensions:docs/extensions/index.md
- MCP 協議規範:modelcontextprotocol.io
- Settings(mcpServers 設定):docs/cli/settings.md