參考
在 Claude Code 新增 MCP 伺服器
遠端伺服器用 `claude mcp add --transport http <名稱> <網址>`;本機程序用 `claude mcp add <名稱> -- <指令>`,`--` 後面的內容會原封不動傳給伺服器。實務上真正容易出錯的不是指令格式,而是範圍:`local`(預設、只有自己)、`project`(寫進儲存庫的 `.mcp.json`、團隊共用)、`user`(所有專案、只有自己)。想讓整個團隊拿到同一台伺服器,只有 `--scope project` 這一個選項。
三種傳輸方式的寫法
# HTTP(遠端,官方建議)
claude mcp add --transport http notion https://mcp.notion.com/mcp
# HTTP + Bearer token
claude mcp add --transport http <名稱> <網址> \
--header "Authorization: Bearer your-token"
# stdio(本機程序,-- 之後原封不動傳給伺服器)
claude mcp add --env API_KEY=your-key --transport stdio myserver \
-- python server.py --port 8080
# SSE(官方文件已標示為淘汰)
claude mcp add --transport sse asana https://mcp.asana.com/sse 範圍:這台伺服器誰看得到
| 範圍 | 生效於 | 是否共用 | 存放位置 |
|---|---|---|---|
| local(預設) | 目前這個專案 | 否 | ~/.claude.json |
| project | 目前這個專案 | 是(透過 .mcp.json) | 專案根目錄的 .mcp.json |
| user | 自己的所有專案 | 否 | ~/.claude.json |
# 團隊共用(會被 commit 進儲存庫)
claude mcp add --transport http shared-server --scope project https://example.com/mcp
# 所有專案,但只有自己
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic 最常見的搞混
`local` 和 `project` 的「生效範圍」是一樣的,都只限目前這個專案。差別在存放位置:`local` 寫進 `~/.claude.json`(你自己的電腦),`project` 寫進儲存庫裡的 `.mcp.json`。「以為發給團隊了、結果只有自己有」的意外,幾乎都是這裡搞混。
.mcp.json 長什麼樣
{
"mcpServers": {
"shared-server": {
"type": "http",
"url": "https://example.com/mcp"
}
}
} 四種認證方式
- OAuth 2.0:新增伺服器後,在工作階段內用 `/mcp` 面板完成授權。命令列上則是 `claude mcp login <名稱>` 與 `claude mcp logout <名稱>`。
- 預先設定的 OAuth 憑證:用 `--client-id`、`--client-secret`、`--callback-port` 指定;CI 環境可改用 `MCP_CLIENT_SECRET` 環境變數。
- 靜態標頭:把 API 金鑰或 token 用 `--header "Authorization: Bearer ..."` 或 `--header "X-API-Key: ..."` 傳入。
- 動態標頭:在 `.mcp.json` 的 `headersHelper` 欄位指定一支腳本,由它產生標頭。適合接公司內部的認證系統。
管理指令
claude mcp list # 列出已登記的伺服器
claude mcp get notion # 查看單一伺服器詳情
claude mcp remove notion # 移除
# 工作階段內
/mcp # 查看連線狀態、完成 OAuth 最後給一個維運上的建議:一開始不要同時接很多台。代理程式可用的工具越多,選錯工具的空間也越大。先接一台,用 `/mcp` 確認它真的有被用到,再接下一台——這樣反而更快穩定下來。
常見問題
- claude mcp add 的範圍該選哪一個?
- 要讓團隊所有人都拿到同一台伺服器,就用 `--scope project`,只有這個範圍會寫進儲存庫的 .mcp.json 並透過版本控制共用。想在自己所有專案都用的個人伺服器選 `--scope user`;只在這個專案的自己的環境用,就是預設的 local。
- stdio 要怎麼傳參數給伺服器?
- 用 `claude mcp add <名稱> -- <指令> [參數...]` 的格式,`--` 後面的內容會原封不動傳給伺服器。環境變數用 `--env KEY=VALUE` 放在 `--` 之前。例如:claude mcp add --env API_KEY=your-key --transport stdio myserver -- python server.py --port 8080。
- SSE 還能用嗎?
- 還能用,但官方文件已把 SSE 傳輸標示為淘汰(deprecated),並建議遠端伺服器改用 HTTP。既有的 SSE 設定會繼續運作,新增伺服器時請改用 --transport http。
- API 金鑰放哪裡比較安全?
- 靜態金鑰用 `--header` 以標頭傳入是基本作法。但要注意,用 project 範圍時金鑰若明文寫進 .mcp.json 就會留在儲存庫裡;公司內部若有認證系統,建議改用 .mcp.json 的 headersHelper 指定腳本,在執行時才產生標頭。
資料來源
- Claude Code 官方文件 — MCP — 最後查證日: 2026-09-05
- Model Context Protocol 官方文件(入門) — 最後查證日: 2026-09-05