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_serverssession 裡的 MCP server,每個含 namestatus
mcp_server_errors被設定驗證跳過的 --mcp-config 項目,含 nametypemessage沒有錯誤時這個 key 不存在,所以 CI gate 可以在陣列非空時失敗

type 是跳過的分類:unknown_typeurl_missing_typeinvalid_configreserved_name 等;沒見過的值當成一般跳過處理。

⚠️ 手動在終端機跑時,Claude Code 會印警告到 stderr(Warning: 1 MCP server skipped due to invalid config:)。但你把 stderr 導向、或 CI runner 捕捉它時就不會印——只能靠 mcp_server_errors 欄位。


權限相關的兩個特殊行為

MCP 工具有兩個會繞過一般權限邏輯的機制,值得知道:

  1. 組織把某個 connector 工具設成 ask → 即使你有 allow 規則,它還是會直接問你。連 auto mode 的 classifier 都會跳過、直接問。
  2. 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-search subagent,只給它 PubMed MCP 和唯讀工具,讓它在自己的 context 裡把一批 PMID 查完再回傳結論——主對話不會被幾十筆 abstract 淹沒。

⚠️ 注意:plugin subagent 會忽略 mcpServers 欄位


其他外部整合(不是 MCP)

Claude Code 還有幾條非 MCP 的整合路線:

想做什麼用什麼
從手機 / 別的裝置控制本機 sessionRemote Control
把 Telegram、Discord、iMessage、自訂 webhook 的事件推進 sessionChannels
本機開始、手機接續claude --cloud + 手機 app
定期排程Routines(跑在 Anthropic 機器上,電腦關機也會跑)/ 桌面排程任務 / /loop
自動 PR review 與 issue 分類GitHub Actions / GitLab CI/CD
每個 PR 自動 code reviewGitHub Code Review
從 Slack 把 bug 報告變成 PRSlack
除錯活的網頁應用Chrome 整合(claude --chrome
自建 agentAgent SDK

💡 Routines 對你可能有用:例如「每週一早上盤點 vault 裡哪些筆記的 guideline 引用超過兩年」。因為跑在 Anthropic 的機器上,電腦關著也會跑。 ⚠️ 但雲端 session 讀不到你機器上的 ~/.claude/skills/——要用的 skill 必須 commit 進 repo 的 .claude/skills/(你的 vault 剛好已經是這樣了)。


🔗 相關筆記


最後更新:2026-08-04