10 - MCP 與外部工具
← 09-Hooks自動化 | 00-Index | 下一篇 → 11-非互動模式與腳本化
MCP 是什麼
Model Context Protocol (MCP) 是一個開放標準,用來把 AI 工具接到外部資料來源。
有了 MCP,Claude Code 可以:讀 Google Drive 的設計文件、更新 Jira 的 ticket、抓 Slack 資料、或用你自己寫的工具。
🔑 對你來說最重要的一個:PubMed MCP。它是 vault
CLAUDE.md§4 指定的「文獻搜尋第一優先」,也是 Codex 分工線 上「醫學查證不可外包」的技術原因——Codex 沒有這個 MCP。
管理 MCP server
在 session 裡
/mcp # 管理 MCP server 連線與 OAuth
/mcp reconnect
/mcp enable / disable
從 CLI
claude mcp # 設定 MCP server
claude mcp login <name> # 跑某個 server 的 OAuth 流程(不用開 /mcp 面板)
claude mcp login <name> --no-browser # SSH 環境:印出授權 URL,貼回 redirect URL
claude mcp logout <name> # 清掉存起來的 OAuth 憑證claude mcp login 對 HTTP、SSE、和 claude.ai connector server 都有效。
用設定檔載入
claude --mcp-config ./mcp.json # 載入 MCP server(可空白分隔多個)
claude --strict-mcp-config --mcp-config ./mcp.json # 只用這裡的,忽略其他所有 MCP 設定--strict-mcp-config 在 CI 很有用——確保每台機器的 MCP 環境一致。
專案層級的 MCP 設定
.mcp.json 放在 repo 根目錄,團隊共享。
⚠️
.mcp.json和.claude.json都是 protected paths——寫入永遠不會被自動核准(除了bypassPermissions)。這是刻意的:MCP 設定決定 Claude 能接觸哪些外部系統,不該被隨手改掉。
檢查 MCP 有沒有正常載入
互動式
/mcp
腳本 / CI
system/init 事件(--output-format stream-json 時)有這兩個欄位:
| 欄位 | 說明 |
|---|---|
mcp_servers | session 裡的 MCP server,每個含 name 和 status |
mcp_server_errors | 被設定驗證跳過的 --mcp-config 項目,含 name、type、message。沒有錯誤時這個 key 不存在,所以 CI gate 可以在陣列非空時失敗 |
type 是跳過的分類:unknown_type、url_missing_type、invalid_config、reserved_name 等;沒見過的值當成一般跳過處理。
⚠️ 手動在終端機跑時,Claude Code 會印警告到 stderr(
Warning: 1 MCP server skipped due to invalid config:)。但你把 stderr 導向、或 CI runner 捕捉它時就不會印——只能靠mcp_server_errors欄位。
權限相關的兩個特殊行為
MCP 工具有兩個會繞過一般權限邏輯的機制,值得知道:
- 組織把某個 connector 工具設成
ask→ 即使你有 allow 規則,它還是會直接問你。連 auto mode 的 classifier 都會跳過、直接問。 - MCP 工具標了
_meta["anthropic/requiresUserInteraction"]→ 同樣一定會問。
而在 dontAsk 模式下,這兩類工具會被拒絕(因為那個模式從不收集使用者回應)。
給 subagent 指定 MCP server
subagent frontmatter 的 mcpServers 欄位:
---
name: lit-search
description: 用 PubMed 查證文獻與 PMID
mcpServers:
- pubmed
tools: Read, Grep
---每一項可以是「已設定好的 server 名稱」(如 "pubmed"),或直接內嵌完整設定。
💡 這對你很有用:做一個專門的
lit-searchsubagent,只給它 PubMed MCP 和唯讀工具,讓它在自己的 context 裡把一批 PMID 查完再回傳結論——主對話不會被幾十筆 abstract 淹沒。
⚠️ 注意:plugin subagent 會忽略 mcpServers 欄位。
其他外部整合(不是 MCP)
Claude Code 還有幾條非 MCP 的整合路線:
| 想做什麼 | 用什麼 |
|---|---|
| 從手機 / 別的裝置控制本機 session | Remote Control |
| 把 Telegram、Discord、iMessage、自訂 webhook 的事件推進 session | Channels |
| 本機開始、手機接續 | claude --cloud + 手機 app |
| 定期排程 | Routines(跑在 Anthropic 機器上,電腦關機也會跑)/ 桌面排程任務 / /loop |
| 自動 PR review 與 issue 分類 | GitHub Actions / GitLab CI/CD |
| 每個 PR 自動 code review | GitHub Code Review |
| 從 Slack 把 bug 報告變成 PR | Slack |
| 除錯活的網頁應用 | Chrome 整合(claude --chrome) |
| 自建 agent | Agent SDK |
💡 Routines 對你可能有用:例如「每週一早上盤點 vault 裡哪些筆記的 guideline 引用超過兩年」。因為跑在 Anthropic 的機器上,電腦關著也會跑。 ⚠️ 但雲端 session 讀不到你機器上的
~/.claude/skills/——要用的 skill 必須 commit 進 repo 的.claude/skills/(你的 vault 剛好已經是這樣了)。
🔗 相關筆記
- 09-Hooks自動化 — 上一步
- 11-非互動模式與腳本化 — 下一步
- 05-權限模式與安全 — protected paths 包含
.mcp.json - 08-Subagents與平行工作 — 給 subagent 指定 MCP
- Herdr 10 — 為什麼「有沒有 PubMed MCP」是分工的分界線
最後更新:2026-08-04
