這個單元解決什麼問題
~/.claude.json 是 Claude Code 的全域狀態檔,存 MCP server 註冊、各專案的信任與工具核准紀錄、以及一堆 onboarding 與帳號後設資料。它不是給你手寫的策略檔,主要由工具自己寫入。但認得它存了什麼,能讓你在 MCP 連不上、權限對話反覆跳出、信任狀態錯亂時,直接打開檔案定位根因,而不是盲目重裝工具。這個單元給你欄位導覽、可查證的 MCP scope 模型,以及一條「何時能手改、何時別碰」的判準。學習目標
- 能說出
~/.claude.json大致儲存哪幾類資訊,並指出排查時用得到的段落。 - 能分清
claude.json(狀態與註冊)與settings.json(行為策略)的職責邊界,不混用。 - 能說明 MCP 的三種 scope(local / project / user)各存在哪,以及
.mcp.json的專案信任如何運作。 - 能用
claude.json的內容定位 MCP 不載入或信任對話重複跳出的根因。
1. claude.json 是什麼:狀態檔,不是策略檔
~/.claude.json 是使用者層級的狀態檔,位在你的 home 目錄(Windows 是 C:\Users\<你的帳號>\.claude.json)。它由 Claude Code 工具本身寫入為主,初次啟動時若不存在會自動建立。
它和 02-3 的 settings.json 有一條根本分界:
| 檔案 | 回答的問題 | 誰寫 | 你該手動編輯嗎 |
|---|---|---|---|
~/.claude.json | 「Claude Code 記住了什麼」(MCP 在哪、這專案信任嗎、哪些工具核准過) | 工具自動寫入 | 否(少數排查情境例外,見第 5 節) |
settings.json | 「Claude Code 應該怎麼行動」(allow / deny 策略、hooks、env) | 你 | 是 |
settings.json 描述「應該怎麼行為」:權限策略、hooks、env,是你編輯的策略檔。claude.json 記錄「已經發生了什麼」:哪些 MCP server 註冊過、哪個專案你信任過、哪些工具你按了「永遠允許」。這是工具維護的狀態,不是給你手寫的。
記住這條分界,就能避開最常見的誤用:把「想永遠允許某工具」的意圖手寫進 claude.json,而不是寫 settings.json 的 permissions.allow。前者是狀態(工具寫的),後者是策略(你寫的),混用會在工具下次更新狀態時被覆蓋。
2. 它存了什麼:欄位導覽
~/.claude.json 最重要的段落是 projects:一個以專案絕對路徑為 key 的物件,每個專案底下記著它專屬的狀態,包括該專案 local scope 的 MCP server。官方文件給的結構長這樣(你從 /path/to/your/project 加一個 local server 後)[1]:
projects,這個檔案還存一批工具自管的後設資料:onboarding 是否完成、主題、啟動次數、登入帳號資訊等。
排查時你會用到的,主要就是 projects.<你的專案路徑> 底下的 mcpServers(MCP 連不上時第一個看這裡),以及該專案的信任與工具核准狀態(信任對話反覆跳出時看這裡)。
3. 與 settings.json 的分工:記憶 vs 策略
實務上的兩條規則:策略寫settings.json,別把策略塞進 claude.json;狀態由工具維護,別繞過工具去手改 claude.json 裡的信任紀錄。
4. MCP 的三種 scope 與 .mcp.json 信任
這是認識claude.json 最需要釐清的一塊,因為 MCP 設定散在不同地方,存錯位置就會「我明明加了卻在別的專案看不到」。Claude Code 的 MCP server 有三種 scope(截至 2026-05)[1]:
| Scope | 載入範圍 | 與團隊共享 | 存在哪 |
|---|---|---|---|
| local(預設) | 僅當前專案 | 否 | ~/.claude.json(該專案路徑下) |
| project | 僅當前專案 | 是(經版控) | .mcp.json(專案根) |
| user | 你所有專案 | 否 | ~/.claude.json |
claude mcp add 加時用 --scope 指定(options 要放在 server 名稱前面,-- 後接命令)[1]:
.mcp.json 的專案信任:官方明說,基於安全考量,使用來自 .mcp.json 的 project-scoped server 前,Claude Code 會先要求你核准 [1]。等待核准的 server 在 claude mcp list 顯示 ⏸ Pending approval,被拒的顯示 ✗ Rejected。要重設這些核准選擇,用 claude mcp reset-project-choices。
5. 安全邊界與排查:何時能動、何時別碰
claude.json 多數時候別手改,但有兩類情境手改是合理的,另兩類則會弄壞狀態。
可以手改:移除過期的 MCP server 項目(從 mcpServers 刪一個 key);清掉指向已搬移專案的錯誤路徑信任紀錄。
不要手改:繞過工具直接改信任或核准紀錄,會讓檔案狀態與工具認知不一致;改了 MCP server 命令卻沒同步更新它的 env 變數,server 會啟動失敗,而 Claude Code 仍嘗試連線。
MCP 連不上的排查順序:
查 claude.json / .mcp.json
看
~/.claude.json 的 projects.<當前專案路徑>.mcpServers(或 .mcp.json)裡該 server 的命令路徑、URL 是否正確。projects 裡沒有對應路徑、或路徑不符。Windows 特別注意:路徑大小寫、反斜線與正斜線、trailing slash 不一致都會被當成不同專案,於是每次都重新要求信任。
工具對照
「工具自維護的狀態檔」與「MCP scope 分層」這兩個概念,各家成熟度差異大(截至 2026-05,精確路徑與鍵以各官方文件為準):| 概念 | Anthropic Claude(主範本) | OpenAI (Codex) | Google (Gemini CLI) | Cursor |
|---|---|---|---|---|
| 工具自維護的狀態檔 | ~/.claude.json(MCP 註冊、信任、工具核准)[1] | 需確認原始出處 | 需確認原始出處 | 需確認原始出處 |
| MCP server 設定位置 | local / user 存 ~/.claude.json;project 存 .mcp.json [1] | config.toml 內 MCP 區段(精確鍵需確認原始出處) | settings.json 的 mcpServers 區段 | .cursor/mcp.json(需確認原始出處) |
| MCP scope 分層 | local / project / user 三層 [1] | 需確認原始出處 | 需確認原始出處 | 需確認原始出處 |
| 專案級 MCP 需信任核准 | 是,.mcp.json 預設要核准 [1] | 需確認原始出處 | 需確認原始出處 | 需確認原始出處 |
MCP 是跨工具標準,scope 模型各異MCP 本身是開放標準,多數 agent 工具都支援連接 MCP server;差別在「設定存哪、有沒有 scope 分層、專案級 server 要不要強制核准」。Claude Code 的 local / project / user 三層加
.mcp.json 強制核准目前最完整 [1];其他工具多半只有單一設定位置,scope 與信任模型較弱或未明確文件化,不確定處標「需確認原始出處」,以各官方文件為準。動手做
讀出 ~/.claude.json,辨認三個關鍵段落
打開檔案,找到
projects.<你的某個專案路徑>,辨認它底下的 mcpServers(local scope 的 server)。對照 claude mcp list 的輸出,確認檔案內容與工具認知一致。常見誤區
自我檢核
通過本單元的標準
- 你能不能用一句話分清
claude.json(狀態,工具寫)與settings.json(策略,你寫)?要批量允許一個工具,你改哪個檔? - 你想讓某個 MCP server 只對特定專案可見且不分享給團隊,該用哪個 scope、存在哪個檔?要團隊共享呢?
- MCP 的 local scope 存在
~/.claude.json,那.claude/settings.local.json又是什麼?兩者差在哪? - 信任對話在同一個專案反覆跳出,你會先檢查
claude.json的哪個段落?Windows 上最可能的成因是什麼? - clone 一個帶
.mcp.json的外部 repo,預設情況下它的 server 會直接執行嗎?什麼設定會讓它被自動核准?
來源與延伸閱讀
事實主張依官方文件,快變動項標註截至 2026-05。-
[1] Anthropic, “Connect Claude Code to tools via MCP,” Claude Code Docs. (MCP 三種 scope local / project / user 與儲存位置;
~/.claude.json的projects.<path>.mcpServers結構;.mcp.jsonproject-scoped server 需核准、claude mcp reset-project-choices、⏸ Pending approval;claude mcp add --scope;MCP local scope 不同於 settings.local.json;scope 優先序) https://code.claude.com/docs/en/mcp (截至 2026-05) -
[2] Anthropic, “Claude Code settings,” Claude Code Docs. (
enableAllProjectMcpServers自動核准專案 MCP;enabledMcpjsonServers/disabledMcpjsonServers;managed 層allowedMcpServers/deniedMcpServers) https://code.claude.com/docs/en/settings (截至 2026-05)