65</Steps>65</Steps>
66 66
67<h2 id="installing-mcp-servers">67<h2 id="installing-mcp-servers">
68 安裝 MCP servers68 安裝 MCP 伺服器
69</h2>69</h2>
70 70
71MCP servers 可以根據您的需求以多種方式進行配置:71MCP 伺服器可以根據您的需求以多種方式進行設定:
72 72
73<h3 id="option-1-add-a-remote-http-server">73<h3 id="option-1-add-a-remote-http-server">
74 選項 1:新增遠端 HTTP server74 選項 1:新增遠端 HTTP 伺服器
75</h3>75</h3>
76 76
77HTTP servers 是連接到遠端 MCP servers 的推薦選項。這是雲端服務最廣泛支援的傳輸方式。77HTTP 伺服器是連接到遠端 MCP 伺服器的建議選項。這是雲端服務最廣泛支援的傳輸方式。
78 78
79```bash theme={null}79```bash theme={null}
80# 基本語法80# 基本語法
88 --header "Authorization: Bearer your-token"88 --header "Authorization: Bearer your-token"
89```89```
90 90
91當透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 配置 MCP servers 時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸,因此從 server 文件複製的配置無需修改即可運作。91在透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。
92 92
93沒有 `type` 但有 `url` 的 JSON 項目是配置錯誤,因為 Claude Code 將沒有 `type` 的項目讀取為 stdio server。Claude Code 會跳過該 server 並報告 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。在 v2.1.202 之前,Claude Code 將此配置錯誤報告為 `command: expected string, received undefined`。93具有 `url` 但沒有 `type` 的 JSON 項目是設定錯誤,因為 Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器。Claude Code 會跳過該伺服器並報告 `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`。在 v2.1.202 之前,Claude Code 將此誤設定報告為 `command: expected string, received undefined`。
94 94
95只有 SDK 主機應用程式(例如 [Agent SDK](/docs/zh-TW/agent-sdk/mcp) 應用程式或 [桌面應用程式](/docs/zh-TW/desktop))可以註冊進程內 `"type": "sdk"` server。Claude Code 會跳過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並報告 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。95只有 SDK 主機應用程式(例如 [Agent SDK](/docs/zh-TW/agent-sdk/mcp) 應用程式或 [桌面應用程式](/docs/zh-TW/desktop))可以註冊進程內 `"type": "sdk"` 伺服器。Claude Code 會跳過 `.mcp.json`、`~/.claude.json` 或設定中的 `"type": "sdk"` 項目,並報告 `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`。
96 96
97在 `--output-format stream-json` 執行中,Claude Code 也會在 `system/init` 事件的 [`mcp_server_errors` 欄位](/docs/zh-TW/headless#stream-responses)中報告跳過的 `--mcp-config` 項目,因此指令碼可以偵測到 server 從未載入。這需要 Claude Code v2.1.219 或更新版本。97在 `--output-format stream-json` 執行中,Claude Code 也會在 `system/init` 事件的 [`mcp_server_errors` 欄位](/docs/zh-TW/headless#stream-responses)中報告跳過的 `--mcp-config` 項目,以便指令碼可以偵測伺服器從未載入。這需要 Claude Code v2.1.219 或更新版本。
98 98
99<h3 id="option-2-add-a-remote-sse-server">99<h3 id="option-2-add-a-remote-sse-server">
100 選項 2:新增遠端 SSE server100 選項 2:新增遠端 SSE 伺服器
101</h3>101</h3>
102 102
103<Warning>103<Warning>
104 SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP servers(如果可用)。104 SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP 伺服器(如果可用)。
105</Warning>105</Warning>
106 106
107某些服務仍然只公開 SSE 端點。使用與 [HTTP server](#option-1-add-a-remote-http-server) 相同的 `claude mcp add --transport http <name> <url>` 命令新增這些。Claude Code 首先嘗試 HTTP 傳輸,當 server 不接受時切換到 SSE。自動切換需要 Claude Code v2.1.265 或更新版本。107某些服務仍然只公開 SSE 端點。使用與 [HTTP 伺服器](#option-1-add-a-remote-http-server)相同的 `claude mcp add --transport http <name> <url>` 命令新增這些。Claude Code 首先嘗試 HTTP 傳輸,當伺服器不接受時切換到 SSE。自動切換需要 Claude Code v2.1.265 或更新版本。
108 108
109在較早的版本上,或直接透過 SSE 連接,請改為傳遞 `--transport sse`:109在較早版本上,或直接透過 SSE 連接,請改為傳遞 `--transport sse`:
110 110
111```bash theme={null}111```bash theme={null}
112# 基本語法112# 基本語法
121```121```
122 122
123<h3 id="option-3-add-a-local-stdio-server">123<h3 id="option-3-add-a-local-stdio-server">
124 選項 3:新增本機 stdio server124 選項 3:新增本機 stdio 伺服器
125</h3>125</h3>
126 126
127Stdio servers 在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。127Stdio 伺服器在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。
128 128
129Claude Code 在生成的 server 環境中設定 `CLAUDE_PROJECT_DIR` 為專案根目錄,因此您的 server 可以解析專案相對路徑,而無需依賴工作目錄。這與 hooks 在其 `CLAUDE_PROJECT_DIR` 變數中接收的目錄相同。從您的 server 程序內部讀取它,例如 Node 中的 `process.env.CLAUDE_PROJECT_DIR` 或 Python 中的 `os.environ["CLAUDE_PROJECT_DIR"]`。129Claude Code 在生成的伺服器環境中設定 `CLAUDE_PROJECT_DIR` 為專案根目錄,因此您的伺服器可以解析專案相對路徑,而無需依賴工作目錄。這是 hooks 在其 `CLAUDE_PROJECT_DIR` 變數中接收的相同目錄。從伺服器程序內部讀取它,例如 Node 中的 `process.env.CLAUDE_PROJECT_DIR` 或 Python 中的 `os.environ["CLAUDE_PROJECT_DIR"]`。
130 130
131`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在 session 中途新增或移除工作目錄時不會變更。限制自身檔案系統存取到一組允許目錄的 server 應該改為實作 MCP `roots/list` 請求。Claude Code 使用 session 的啟動目錄加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個[額外工作目錄](/docs/zh-TW/permissions#working-directories)來回答 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。在 v2.1.203 之前,`roots/list` 只傳回啟動目錄,Claude Code 不會傳送 `notifications/roots/list_changed`。131`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在您於工作階段中途新增或移除工作目錄時不會變更。限制自身檔案系統存取到一組允許目錄的伺服器應改為實作 MCP `roots/list` 請求。Claude Code 使用工作階段的啟動目錄加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個 [額外工作目錄](/docs/zh-TW/permissions#working-directories)來回答 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。在 v2.1.203 之前,`roots/list` 只傳回啟動目錄,Claude Code 不會傳送 `notifications/roots/list_changed`。
132 132
133此變數在 server 的環境中設定,而不是在 Claude Code 自己的環境中,因此在專案範圍的 `.mcp.json` 項目或本機或使用者範圍的 server 項目中透過 `${VAR}` 擴展參考它需要預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。Plugin 提供的 MCP 配置直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。133此變數設定在伺服器的環境中,而不是在 Claude Code 自身的環境中,因此在專案範圍的 `.mcp.json` 項目或 `~/.claude.json` 中的本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 擴展參考它需要預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。
134 134
135```bash theme={null}135```bash theme={null}
136# 基本語法136# 基本語法
137claude mcp add [options] <name> -- <command> [args...]137claude mcp add [options] <name> -- <command> [args...]
138 138
139# 實際範例:新增 Airtable server139# 實際範例:新增 Airtable 伺服器
140claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \140claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
141 -- npx -y airtable-mcp-server141 -- npx -y airtable-mcp-server
142```142```
143 143
144<Note>144<Note>
145 **重要:使用 `--` 分隔 server 引數**145 **重要:使用 `--` 分隔伺服器引數**
146 146
147 對於 stdio servers,`--` (雙破折號) 將 Claude 自己的選項(例如 `--transport`、`--env` 和 `--scope`)與執行 server 的命令和引數分開。`--` 之後的所有內容都會原封不動地傳遞給 server。147 對於 stdio 伺服器,`--`(雙破折號)分隔 Claude 自身的選項(例如 `--transport`、`--env` 和 `--scope`)與執行伺服器的命令和引數。`--` 之後的所有內容都會原封不動地傳遞給伺服器。
148 148
149 例如:149 例如:
150 150
151 * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`151 * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`
152 * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`152 * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`
153 153
154 沒有 `--`,Claude Code 會嘗試解析 server 的旗標(例如上面的 `--port`)作為自己的選項。154 沒有 `--`,Claude Code 會嘗試將伺服器的旗標(例如上面的 `--port`)解析為自身的選項。
155 155
156 `--env` 接受多個 `KEY=value` 對。如果 server 名稱直接跟在 `--env` 之後,CLI 會將該名稱讀取為另一對並拒絕它,因此請在 `--env` 和 server 名稱之間放置至少一個其他選項,例如 `--transport stdio`。156 `--env` 接受多個 `KEY=value` 對。如果伺服器名稱直接跟在 `--env` 之後,CLI 會將名稱讀取為另一對並拒絕它,因此請在 `--env` 和伺服器名稱之間放置至少一個其他選項,例如 `--transport stdio`。
157</Note>157</Note>
158 158
159<h3 id="option-4-add-a-remote-websocket-server">159<h3 id="option-4-add-a-remote-websocket-server">
160 選項 4:新增遠端 WebSocket server160 選項 4:新增遠端 WebSocket 伺服器
161</h3>161</h3>
162 162
163WebSocket servers 保持持久的雙向連接,適合遠端 MCP servers 主動向 Claude 推送事件。當您的 server 只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。163WebSocket 伺服器保持持久雙向連接,適合遠端 MCP 伺服器主動向 Claude 推送事件。當您的伺服器只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。
164 164
165在 `.mcp.json` 中或使用 `claude mcp add-json` 配置 WebSocket servers:165在 `.mcp.json` 中或使用 `claude mcp add-json` 設定 WebSocket 伺服器:
166 166
167```bash theme={null}167```bash theme={null}
168claude mcp add-json events-server \168claude mcp add-json events-server \
169 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'169 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'
170```170```
171 171
172`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。驗證僅限標頭,因此在 `headers` 中傳遞靜態 token,或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 生成一個。`claude mcp add --transport` 旗標不接受 `ws`。172`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。驗證僅限標頭,因此在 `headers` 中傳遞靜態令牌或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 產生令牌。`claude mcp add --transport` 旗標不接受 `ws`。
173 173
174<h3 id="add-a-server-from-setup-instructions-written-for-another-client">174<h3 id="add-a-server-from-setup-instructions-written-for-another-client">
175 從為另一個用戶端編寫的設定指示新增 server175 從為另一個用戶端編寫的設定指示新增伺服器
176</h3>176</h3>
177 177
178MCP servers 不是 Claude Code 特有的,因此 server 的設定指示可能是為 Claude Desktop、Cursor 或另一個 MCP 用戶端編寫的,並且不提供 `claude mcp add` 命令。若要新增 server,請在這些指示中尋找 URL、啟動命令或 JSON 區塊:178MCP 伺服器不是 Claude Code 特有的,因此伺服器的設定指示可能是為 Claude Desktop、Cursor 或另一個 MCP 用戶端編寫的,並且不提供 `claude mcp add` 命令。若要新增伺服器,請在這些指示中尋找 URL、啟動命令或 JSON 區塊:
179 179
180* **URL**,例如 `https://mcp.example.com/mcp`:server 是遠端的。180* **URL**(例如 `https://mcp.example.com/mcp`):伺服器是遠端的。
181* **啟動命令**,例如 `npx -y @example/mcp-server`:server 在您的機器上執行。181* **啟動命令**(例如 `npx -y @example/mcp-server`):伺服器在您的機器上執行。
182* **`mcpServers` JSON 區塊**:為另一個用戶端的設定檔案編寫的配置。182* **`mcpServers` JSON 區塊**:為另一個用戶端的設定檔編寫的設定。
183 183
184每一個都是 [安裝 MCP servers](#installing-mcp-servers) 中四個選項之一所採用的輸入。在下面找到您擁有的形狀,以將其轉換為 Claude Code 接受的命令。除非您新增 `--scope project` 或 `--scope user`,否則每個命令都會寫入[本機範圍](#local-scope)。184每一個都是 [安裝 MCP 伺服器](#installing-mcp-servers)中四個選項之一接受的輸入。在下面找到您擁有的形狀,將其轉換為 Claude Code 接受的命令。除非您新增 `--scope project` 或 `--scope user`,否則每個命令都會寫入 [本機範圍](#local-scope)。
185 185
186<h4 id="from-a-url">186<h4 id="from-a-url">
187 從 URL187 從 URL
188</h4>188</h4>
189 189
190URL 表示 server 是遠端的。對於 `https://` 端點,使用 `--transport http` 新增它,或當指示說端點使用 SSE 時遵循[選項 2](#option-2-add-a-remote-sse-server)。對於 `wss://` 端點,改為使用[選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:190URL 表示伺服器是遠端的。對於 `https://` 端點,使用 `--transport http` 新增它,或在指示說端點使用 SSE 時遵循 [選項 2](#option-2-add-a-remote-sse-server)。對於 `wss://` 端點,改為使用 [選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:
191 191
192```bash theme={null}192```bash theme={null}
193claude mcp add --transport http example https://mcp.example.com/mcp193claude mcp add --transport http example https://mcp.example.com/mcp
194```194```
195 195
196如果指示也提供 API 金鑰或 token 標頭,請使用 `--header` 傳遞它,如[選項 1](#option-1-add-a-remote-http-server) 所示。196如果指示也提供 API 金鑰或令牌標頭,請使用 `--header` 傳遞它,如 [選項 1](#option-1-add-a-remote-http-server)所示。
197 197
198<h4 id="from-an-npx-uvx-or-binary-command">198<h4 id="from-an-npx-uvx-or-binary-command">
199 從 `npx`、`uvx` 或二進位命令199 從 `npx`、`uvx` 或二進位命令
200</h4>200</h4>
201 201
202啟動命令表示 server 作為本機 stdio 程序執行。將整個命令放在 `--` 之後,以便 Claude Code 將 `-y` 等旗標傳遞給啟動 server 的命令,而不是將它們讀取為自己的選項。使用 `--env` 傳遞指示要求的任何環境變數,在 server 名稱之後和 `--` 之前:202啟動命令表示伺服器作為本機 stdio 程序執行。將整個命令放在 `--` 之後,以便 Claude Code 將旗標(例如 `-y`)傳遞給啟動伺服器的命令,而不是將其讀取為自身的選項。使用 `--env` 傳遞指示要求的任何環境變數,在伺服器名稱之後和 `--` 之前:
203 203
204```bash theme={null}204```bash theme={null}
205claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server205claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server
206```206```
207 207
208[選項 3](#option-3-add-a-local-stdio-server) 完整涵蓋 `--` 分隔符。208[選項 3](#option-3-add-a-local-stdio-server)完整涵蓋 `--` 分隔符。
209 209
210<h4 id="from-an-mcpservers-json-block">210<h4 id="from-an-mcpservers-json-block">
211 從 `mcpServers` JSON 區塊211 從 `mcpServers` JSON 區塊
213 213
214為另一個 MCP 用戶端(例如 Claude Desktop)編寫的 `mcpServers` 區塊使用 Claude Code 讀取的包裝器金鑰和項目形狀。將 `mcpServers` 內的物件傳遞給 `claude mcp add-json`,而不是包裝器。兩個項目需要先修復:214為另一個 MCP 用戶端(例如 Claude Desktop)編寫的 `mcpServers` 區塊使用 Claude Code 讀取的包裝器金鑰和項目形狀。將 `mcpServers` 內的物件傳遞給 `claude mcp add-json`,而不是包裝器。兩個項目需要先修復:
215 215
216* **沒有 `type` 的 `url`**:新增 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"` 以符合端點。Claude Code 將沒有 `type` 的項目讀取為 stdio server,因此沒有 `type` 的 `url` 項目會失敗。216* **`url` 沒有 `type`**:新增 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"` 以符合端點。Claude Code 將沒有 `type` 的項目讀取為 stdio 伺服器,因此沒有 `type` 的 `url` 項目會失敗。
217* **具有字母、數字、連字號和底線以外字元的金鑰**:選擇僅使用這些字元的 server 名稱。否則金鑰是 server 名稱。217* **金鑰包含字母、數字、連字號和底線以外的字元**:選擇僅使用這些字元的伺服器名稱。否則金鑰是伺服器名稱。
218 218
219例如,此區塊:219例如,此區塊:
220 220
235claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'235claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'
236```236```
237 237
238[從 JSON 配置新增 MCP servers](#add-mcp-servers-from-json-configuration) 涵蓋 `add-json` 的 shell 逃逸和 `--scope` 旗標。若要改為與您的團隊共享 server,請新增 `--scope project`,或在您的專案根目錄的 `.mcp.json` 中的 `mcpServers` 下新增項目並提交它。[專案範圍](#project-scope)涵蓋 Claude Code 如何載入和批准該檔案。238[從 JSON 設定新增 MCP 伺服器](#add-mcp-servers-from-json-configuration)涵蓋 `add-json` 的 shell 逃逸和 `--scope` 旗標。若要與您的團隊共享伺服器,請改為新增 `--scope project`,或在您的專案根目錄的 `.mcp.json` 下的 `mcpServers` 下新增項目並提交它。[專案範圍](#project-scope)涵蓋 Claude Code 如何載入和核准該檔案。
239 239
240每個 `claude mcp add` 和 `claude mcp add-json` 命令都會列印一行 `Added ...`。若要檢查 Claude Code 是否已連接,請執行 `claude mcp get <name>`;[Server 狀態](#server-status)涵蓋它顯示的狀態和 `.mcp.json` servers 的批准步驟。240每個 `claude mcp add` 和 `claude mcp add-json` 命令在成功時列印 `Added ...` 行。若要檢查 Claude Code 是否已連接,請執行 `claude mcp get <name>`;[伺服器狀態](#server-status)涵蓋它顯示的狀態和 `.mcp.json` 伺服器的核准步驟。
241 241
242<h3 id="managing-your-servers">242<h3 id="managing-your-servers">
243 管理您的 servers243 管理您的伺服器
244</h3>244</h3>
245 245
246配置後,您可以使用這些命令管理您的 MCP servers:246設定後,您可以使用這些命令管理您的 MCP 伺服器:
247 247
248```bash theme={null}248```bash theme={null}
249# 列出所有已配置的 servers249# 列出所有已設定的伺服器
250claude mcp list250claude mcp list
251 251
252# 取得特定 server 的詳細資訊252# 取得特定伺服器的詳細資訊
253claude mcp get notion253claude mcp get notion
254 254
255# 移除 server255# 移除伺服器
256claude mcp remove notion256claude mcp remove notion
257 257
258# (在 Claude Code 中) 檢查 server 狀態258# (在 Claude Code 內)檢查伺服器狀態
259/mcp259/mcp
260```260```
261 261
262當您移除遠端 server 時,Claude Code 也會刪除為該 server 儲存的 OAuth tokens 和用戶端註冊。262移除遠端伺服器時,Claude Code 也會刪除為該伺服器儲存的 OAuth 令牌和用戶端註冊。
263 263
264<h4 id="server-status">264<h4 id="server-status">
265 Server 狀態265 伺服器狀態
266</h4>266</h4>
267 267
268`claude mcp add` 透過列印 `Added ...` 行確認成功新增,這表示配置已寫入。如果命令改為列印 `was not saved` 訊息,請參閱 [MCP server was not saved or removed](/docs/zh-TW/errors#mcp-server-was-not-saved-or-removed);對於 `may not have been saved` 訊息,請參閱 [MCP server may not have been saved or removed](/docs/zh-TW/errors#mcp-server-may-not-have-been-saved-or-removed)。268`claude mcp add` 透過列印 `Added ...` 行確認成功新增,這表示設定已寫入。如果命令改為列印 `was not saved` 訊息,請參閱 [MCP 伺服器未儲存或移除](/docs/zh-TW/errors#mcp-server-was-not-saved-or-removed);對於 `may not have been saved` 訊息,請參閱 [MCP 伺服器可能未儲存或移除](/docs/zh-TW/errors#mcp-server-may-not-have-been-saved-or-removed)。
269 269
270`claude mcp list` 然後在它列出的每個 server 旁邊顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連接到該 server,而不是列表命令失敗。270`claude mcp list` 在它列出的每個伺服器旁邊顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連接到該伺服器,而不是列表命令失敗。
271 271
272此列表中的狀態報告配置決定而不是連接嘗試,因此 Claude Code 在不連接到 server 的情況下列印它們:272此列表中的狀態報告設定決定而不是連接嘗試,因此 Claude Code 在不連接到伺服器的情況下列印它們:
273 273
274* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json` 的專案範圍 server,您尚未批准。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。執行 `claude` 互動式命令以檢查和批准它。274* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json` 的專案範圍伺服器,您尚未核准。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。執行 `claude` 互動式地檢查並核准它。
275* `✘ Rejected (see disabledMcpjsonServers in settings)`:由 [`disabledMcpjsonServers`](/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` server。Claude Code 只在 `claude mcp get <name>` 中顯示它。275* `✘ Rejected (see disabledMcpjsonServers in settings)`:由 [`disabledMcpjsonServers`](/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` 伺服器。Claude Code 只在 `claude mcp get <name>` 中顯示它。
276* `⊘ Disabled for this project (re-enable via /mcp)`:專案的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 列表命名的 server。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。從 `/mcp` 面板重新開啟 server。在 v2.1.238 之前,兩個命令都連接到已停用的 server 以進行健康檢查並報告連接結果。276* `⊘ Disabled for this project (re-enable via /mcp)`:專案的 [`disabledMcpServers`](#disable-a-server-without-removing-it) 列表命名的伺服器。Claude Code 在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。從 `/mcp` 面板重新開啟伺服器。
277 277
278WebSocket servers 不會出現在 `claude mcp list` 輸出中。使用 `claude mcp get <name>` 或 `/mcp` 面板檢查它們。278WebSocket 伺服器不會出現在 `claude mcp list` 輸出中。使用 `claude mcp get <name>` 或 `/mcp` 面板檢查它們。
279 279
280<h4 id="project-server-approvals-and-workspace-trust">280<h4 id="project-server-approvals-and-workspace-trust">
281 專案 server 批准和工作區信任281 專案伺服器核准和工作區信任
282</h4>282</h4>
283 283
284自 v2.1.196 起,`claude mcp list` 和 `claude mcp get` 只從未簽入儲存庫的設定檔案中讀取 `.mcp.json` 批准,直到您透過在其中執行 `claude` 並接受工作區信任對話框來信任工作區。複製的儲存庫無法批准自己的 servers:提交到專案 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在不受信任的資料夾中被忽略,server 保持在 `⏸ Pending approval` 而不是被連接和健康檢查。284從 v2.1.196 開始,`claude mcp list` 和 `claude mcp get` 只從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准,直到您透過執行 `claude` 並接受工作區信任對話來信任工作區。複製的儲存庫無法核准自身的伺服器:提交到專案的 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在不受信任的資料夾中被忽略,伺服器保持在 `⏸ Pending approval` 而不是被連接和健康檢查。
285 285
286這些來源的批准仍然適用於不受信任的資料夾:286這些來源的核准在不受信任的資料夾中仍然適用:
287 287
288* 您的使用者 `~/.claude/settings.json`288* 您的使用者 `~/.claude/settings.json`
289* 受管設定289* 受管設定
290* 使用 `--settings` 傳遞的設定290* 使用 `--settings` 傳遞的設定
291 291
292Claude Code 也會套用來自未追蹤 `.claude/settings.local.json` 的批准,但它執行 git 以檢查檔案是否被追蹤,並且它只在[受信任的資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任的資料夾中,Claude Code 會等待信任對話框,然後才能套用檔案的批准,除非該資料夾是您自己的配置主目錄:您的主目錄,或您已設定為 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars) 的 `.claude` 的目錄。在 v2.1.207 之前,Claude Code 在您從未信任的資料夾中套用了來自未追蹤 `.claude/settings.local.json` 的批准。292Claude Code 也應用來自未追蹤 `.claude/settings.local.json` 的核准,但它執行 git 來檢查檔案是否被追蹤,並且只在 [受信任的資料夾](/docs/zh-TW/permissions#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任的資料夾中,Claude Code 會等待信任對話,然後才應用檔案的核准,除非資料夾是您自己的設定主目錄:您的主目錄,或其 `.claude` 您已設定為 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars) 的目錄。在 v2.1.207 之前,Claude Code 即使在您從未信任的資料夾中也應用來自未追蹤 `.claude/settings.local.json` 的核准。
293 293
294任何設定檔案中的 `disabledMcpjsonServers` 項目仍然會拒絕 server。294任何設定檔中的 `disabledMcpjsonServers` 項目仍然拒絕伺服器。
295 295
296<h4 id="server-status-detail">296<h4 id="server-status-detail">
297 Server 狀態詳細資訊297 伺服器狀態詳細資訊
298</h4>298</h4>
299 299
300在 `/mcp` 中(包括 server 的選單)和 [`/plugin`](/docs/zh-TW/plugins/install) 管理器中,您之前使用過的遠端 HTTP 或 SSE server 可以顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 從發現快取(在上一個 session 中儲存)載入了 server 的工具列表,而不是在啟動時連接,Claude Code 在 Claude 首次呼叫 server 的其中一個工具時連接 server。工具從您的第一條訊息開始可用,因此您無需執行任何操作。發現快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。300在 `/mcp` 中(包括伺服器的選單)和 [`/plugin`](/docs/zh-TW/plugins/install) 管理員中,您之前使用過的遠端 HTTP 或 SSE 伺服器可以顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 從發現快取(在上一個工作階段中儲存)載入伺服器的工具列表,而不是在啟動時連接,Claude Code 在 Claude 首次呼叫伺服器的工具之一時連接伺服器。工具從您的第一條訊息開始可用,因此您無需執行任何操作。發現快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。
301 301
302發現快取預設為關閉,除非逐步推出已為您的帳戶啟用它。設定 [`MCP_DISCOVERY_CACHE=1`](/docs/zh-TW/env-vars) 以開啟它,或設定 `0` 以在推出啟用它時保持關閉。在 v2.1.238 之前,快取預設為開啟。302發現快取預設關閉,除非逐步推出已為您的帳戶啟用它。設定 [`MCP_DISCOVERY_CACHE=1`](/docs/zh-TW/env-vars) 以開啟它,或設定 `0` 以在推出啟用它時保持關閉。在 v2.1.238 之前,快取預設開啟。
303 303
304當您從 server 選單中選擇 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該 server 的快取項目。**Reconnect** 在已連接或失敗的 server 上也會捨棄它;在 `cached` server 上,**Reconnect** 現在連接 server 並保留項目。捨棄項目後,Claude Code 從 server 而不是從快取中擷取 server 的工具列表。304當您從 `/mcp` 中的伺服器選單選擇 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該伺服器的快取項目。**Reconnect** 在已連接或失敗的伺服器上也會捨棄它;在 `cached` 伺服器上,**Reconnect** 現在連接伺服器並保留項目。Claude Code 在捨棄項目後下次連接到伺服器時,它會從伺服器而不是從快取中擷取工具列表。
305 305
306當 server 的狀態為 `✘ Failed to connect` 時,`claude mcp list` 會將失敗詳細資訊附加到該狀態行,`claude mcp get <name>` 在 `Issue:` 行上顯示它:HTTP 狀態或錯誤代碼,加上 server 傳回的任何錯誤文字。server 在 `/mcp` 中的詳細檢視在其 `Issue:` 列中包含相同的 server 報告文字。Claude Code 從此詳細資訊中編輯類似認證的文字,並且永遠不會包含擴展的 server URL,它可能攜帶機密。Claude Code 不會將詳細資訊附加到 `✘ Connection error` 狀態,因為它會列印的例外文字可以嵌入該 URL。在 v2.1.219 之前,兩個命令都只顯示裸失敗狀態,沒有狀態代碼或 server 的錯誤文字。306當伺服器的狀態為 `✘ Failed to connect` 時,`claude mcp list` 將失敗詳細資訊附加到該狀態行,`claude mcp get <name>` 在 `Issue:` 行上顯示它:HTTP 狀態或錯誤代碼,加上伺服器傳回的任何錯誤文字。伺服器在 `/mcp` 中的詳細檢視在其 `Issue:` 列中包含相同的伺服器報告文字。Claude Code 從此詳細資訊中編輯類似認證的文字,並且永遠不包括擴展的伺服器 URL,它可能攜帶機密。Claude Code 不會將詳細資訊附加到 `✘ Connection error` 狀態,因為它會列印的異常文字可以嵌入該 URL。在 v2.1.219 之前,兩個命令都只顯示裸露的失敗狀態,沒有狀態代碼或伺服器的錯誤文字。
307 307
308當您從 `/mcp` 完成驗證且連接仍然因 HTTP 狀態或傳輸錯誤代碼而失敗時,Claude Code 會在嘗試後列印的訊息中新增該代碼和 server URL 的來源。來源是方案和主機,加上 URL 命名時的連接埠,例如 `https://mcp.example.com`。308當您從 `/mcp` 完成驗證且連接仍然因 HTTP 狀態或傳輸錯誤代碼而失敗時,Claude Code 會在嘗試後列印的訊息中新增該代碼和伺服器 URL 的來源。來源是方案和主機,加上 URL 命名的連接埠(例如 `https://mcp.example.com`)。
309 309
310* 路徑和查詢永遠不會出現在該訊息中。310* 路徑和查詢永遠不會出現在該訊息中。
311* 對於本機、專案或使用者[範圍](#mcp-installation-scopes)中的 server 或受管 MCP 配置中的 server,來源顯示在該配置中寫入的主機,因此主機中的 `${VAR}` 參考在訊息中不會展開。311* 對於本機、專案或使用者 [範圍](#mcp-installation-scopes)中的伺服器或受管 MCP 設定,來源顯示該設定中寫入的主機,因此主機中的 `${VAR}` 參考在訊息中不會展開。
312* 對於沒有狀態或錯誤代碼的失敗,Claude Code 顯示錯誤文字而不顯示來源。312* 對於沒有狀態或錯誤代碼的失敗,Claude Code 顯示錯誤文字而不顯示來源。
313 313
314配置為空 `url` 的遠端 server 在 `/mcp`、`claude mcp list` 和 [`/plugin`](/docs/zh-TW/plugins/install) 管理器中顯示為 `not configured`,Claude Code 不會嘗試連接到它。Plugin 可以包含一個佔位符項目,例如此項目,用於您稍後配置的連接器,因此 Claude Code 不會將其報告為錯誤或設定問題。server 在 `/mcp` 中的詳細檢視會讀取 `No URL configured for this server`;設定項目的 `url` 以連接它。在 v2.1.208 之前,Claude Code 將空 `url` 報告為配置問題,並提示重新連接。314設定為空 `url` 的遠端伺服器在 `/mcp`、`claude mcp list` 和 [`/plugin`](/docs/zh-TW/plugins/install) 管理員中顯示為 `not configured`,Claude Code 不會嘗試連接到它。外掛可以包含此類佔位符項目,用於您稍後設定的連接器,因此 Claude Code 不會將其報告為錯誤或設定問題。伺服器在 `/mcp` 中的詳細檢視讀取 `No URL configured for this server`;設定項目的 `url` 以連接它。在 v2.1.208 之前,Claude Code 將空 `url` 報告為設定問題,並提示重新連接。
315 315
316<h4 id="configuration-warnings">316<h4 id="configuration-warnings">
317 配置警告317 設定警告
318</h4>318</h4>
319 319
320Claude Code 警告下面的配置問題。每個項目說明 Claude Code 檢查的內容以及如何清除警告:320Claude Code 警告下面的設定問題。每個項目說明 Claude Code 檢查的內容以及如何清除警告:
321 321
322* **隱藏的空白**:當 MCP 配置值攜帶隱藏的前導或尾隨空白時,Claude Code 會發出警告,這通常來自貼上帶有尾隨換行符的 token。Claude Code 檢查 `command`、`url`、每個 `args` 項目以及 `env` 和 `headers` 下的值和金鑰名稱。Claude Code 在 `claude mcp list` 輸出和 `/mcp` 中顯示警告,命名受影響的欄位而不回顯其值,例如 `Leading or trailing whitespace in: headers.Authorization`。Claude Code 不會修剪空白,並完全按照寫入的方式使用值,因此編輯配置以移除它。322* **隱藏空白**:當 MCP 設定值攜帶隱藏的前導或尾隨空白時,Claude Code 會發出警告,這通常來自貼上帶有尾隨換行符的令牌。Claude Code 檢查 `command`、`url`、每個 `args` 項目以及 `env` 和 `headers` 下的值和金鑰名稱。Claude Code 在 `claude mcp list` 輸出和 `/mcp` 中顯示警告,命名受影響的欄位而不回顯其值,例如 `Leading or trailing whitespace in: headers.Authorization`。Claude Code 不會修剪空白並完全按照寫入的方式使用值,因此編輯設定以移除它。
323* **在多個範圍中具有相同名稱**:如果您在多個[範圍](#mcp-installation-scopes)中定義相同的 server 名稱,具有不同的端點,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告衝突。Claude Code 按端點儲存 OAuth 登入,因此當您驗證在一個專案中載入的定義時,您仍然需要在不同定義載入的專案中單獨登入。保留您想要的端點並使用 `claude mcp remove <name> --scope <scope>` 移除其他端點。在警告中,Claude Code 引用每個範圍的端點,如在您的配置中寫入的,具有[`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)未展開,因此它永遠不會顯示已解析的值,例如 API 金鑰。323* **在多個範圍中使用相同名稱**:如果您在多個 [範圍](#mcp-installation-scopes)中定義相同的伺服器名稱,但端點不同,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告衝突。Claude Code 按端點儲存 OAuth 登入,因此當您驗證在一個專案中載入的定義時,您仍然需要在不同定義載入的專案中單獨登入。保留您想要的端點並使用 `claude mcp remove <name> --scope <scope>` 移除其他端點。在警告中,Claude Code 引用每個範圍的端點,如您的設定中所寫,帶有 [`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)未展開,因此它永遠不會顯示已解析的值,例如 API 金鑰。
324* **保留名稱**:Claude Code 保留其內建 servers 的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。如果您的配置定義了具有保留名稱的 server,Claude Code 會在載入時跳過它,並顯示警告要求您重新命名它。`claude mcp add` 會以錯誤拒絕保留名稱。`Claude Preview` 和 `Claude Browser` 都命名了 [Claude Code 桌面應用程式的預覽窗格](/docs/zh-TW/desktop#preview-your-app)使用的內建 server。在 v2.1.205 之前,`Claude Browser` 未被保留,因此使用者配置的 server 可以在該名稱下註冊。324* **保留名稱**:Claude Code 保留其內建伺服器的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。如果您的設定定義具有保留名稱的伺服器,Claude Code 會在載入時跳過它並顯示警告,要求您重新命名它。`claude mcp add` 拒絕帶有錯誤的保留名稱。`Claude Preview` 和 `Claude Browser` 都命名 [Claude Code 桌面應用程式的預覽窗格](/docs/zh-TW/desktop#preview-your-app)使用的內建伺服器。
325* **遺漏的環境變數**:如果配置中的 [`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)命名未設定且沒有 `:-default` 的變數,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告,命名變數,並仍然使用 `${VAR}` 文字未展開載入 server。設定變數或新增 `${VAR:-default}` 後備。在遠端 server 的 `url` 和 `headers` 中,某些認證變數[讀取為空](#credential-variables-that-read-as-empty),沒有警告。325* **遺漏環境變數**:如果伺服器設定中的 [`${VAR}` 參考](#environment-variable-expansion-in-mcp-json)命名未設定且沒有 `:-default` 的變數,Claude Code 會在 `claude mcp list` 輸出和 `/mcp` 中警告,命名變數,並仍然載入伺服器,`${VAR}` 文字未展開。設定變數或新增 `${VAR:-default}` 後備。在遠端伺服器的 `url` 和 `headers` 中,某些認證變數 [讀取為空](#credential-variables-that-read-as-empty),沒有警告。
326 326
327<h4 id="tool-availability">327<h4 id="tool-availability">
328 工具可用性328 工具可用性
329</h4>329</h4>
330 330
331`/mcp` 面板在每個已連接的 server 旁邊顯示工具計數,並標記宣告工具功能但未公開任何工具的 servers。331`/mcp` 面板在每個已連接伺服器旁邊顯示工具計數,並標記宣傳工具功能但不公開工具的伺服器。
332 332
333如果您的請求需要來自仍在背景連接的 server 的工具,Claude 會在繼續之前等待該 server。等待如何發生取決於您的配置:333如果您的請求需要仍在背景連接的伺服器中的工具,Claude 會在繼續之前等待該伺服器。等待的方式取決於您的設定:
334 334
335* **使用[工具搜尋](#scale-with-mcp-tool-search)(預設)**:等待發生在 `ToolSearch` 呼叫內。335* **使用 [工具搜尋](#scale-with-mcp-tool-search)(預設)**:等待發生在 `ToolSearch` 呼叫內。
336* **沒有工具搜尋**:Claude 改為使用 `WaitForMcpServers` 工具。沒有工具搜尋的配置包括自訂 `ANTHROPIC_BASE_URL`、`ENABLE_TOOL_SEARCH=false` 和 Google Cloud 的 Agent Platform 上早於 Claude 4.5 世代的模型。336* **沒有工具搜尋**:Claude 改為使用 `WaitForMcpServers` 工具。沒有工具搜尋的設定包括自訂 `ANTHROPIC_BASE_URL`、`ENABLE_TOOL_SEARCH=false` 和 Google Cloud 的 Agent Platform 上早於 Claude 4.5 世代的模型。
337* **在 Microsoft Foundry [部署託管在 Azure 上](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**:Claude 在工具搜尋路徑上啟動,而不是使用 `WaitForMcpServers`,因為 Claude Code 只從 API 發現部署的伺服器端拒絕。Claude Code 將該部署切換到[前期載入](#scale-with-mcp-tool-search)後,來自完成連接的 server 的工具在 Claude 的下一個請求上變得可用。337* **在 Microsoft Foundry [部署託管在 Azure 上](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**:Claude 開始於工具搜尋路徑而不是 `WaitForMcpServers`,因為 Claude Code 只從 API 發現部署的伺服器端拒絕。Claude Code 將該部署切換到 [前期載入](#scale-with-mcp-tool-search)後,來自完成連接的伺服器的工具在 Claude 的下一個請求上變得可用。
338 338
339啟用工具搜尋後,當 server 在 Claude 工作時完成連接時,Claude Code 在同一輪的下一個請求中將 server 的工具名稱列出給 Claude。Claude 然後可以搜尋和呼叫這些工具,而無需等待您的下一條訊息。339啟用工具搜尋後,當伺服器在 Claude 工作時完成連接時,Claude Code 在同一轉中的下一個請求上將伺服器的工具名稱列出給 Claude。Claude 然後可以搜尋並呼叫這些工具,而無需等待您的下一條訊息。
340 340
341<h3 id="disable-a-server-without-removing-it">341<h3 id="disable-a-server-without-removing-it">
342 停用 server 而不移除它342 在不移除的情況下停用伺服器
343</h3>343</h3>
344 344
345在 `/mcp` 面板中切換 server 關閉,以停止 Claude Code 連接到它,而不會失去其配置。Claude Code 仍然在 `/mcp` 中列出 server,標記為已停用。345在 `/mcp` 面板中切換伺服器關閉,以停止 Claude Code 連接到它,而不會失去其設定。Claude Code 仍然在 `/mcp` 中列出伺服器,標記為已停用。
346 346
347當您切換 server 時,Claude Code 在 `~/.claude.json` 中按專案記錄您的選擇,在兩個涵蓋不相交 server 集合的列表之一中:347當您切換伺服器時,Claude Code 在 `~/.claude.json` 中按專案記錄您的選擇,在兩個涵蓋不相交伺服器集合的列表之一中:
348 348
349* `disabledMcpServers`:使用者配置的 servers、plugin servers、您的組織[透過受管設定提供](/docs/zh-TW/managed-mcp#provide-servers-through-managed-settings)的 servers、Claude Code [自己擷取](#how-connectors-reach-claude-code)的 claude.ai 連接器以及預設為開啟的內建 servers 的選擇退出列表。Claude Code 不會連接到您在此列出的 server。當您使用[停用 claude.ai 連接器](#disable-claude-ai-connectors)中所述的按專案 `/mcp` 切換停用 claude.ai 連接器時,Claude Code 會在此列表下使用其顯示名稱(例如 `claude.ai Slack`)寫入它。349* `disabledMcpServers`:使用者設定伺服器、外掛伺服器、您的組織 [透過受管設定提供](/docs/zh-TW/managed-mcp#provide-servers-through-managed-settings)的伺服器、Claude Code [自身擷取](#how-connectors-reach-claude-code)的 claude.ai 連接器以及預設開啟的內建伺服器的選擇退出列表。Claude Code 不連接您在此列出的伺服器。當您使用 [停用 claude.ai 連接器](#disable-claude-ai-connectors)中描述的按專案 `/mcp` 切換停用 claude.ai 連接器時,Claude Code 在此列表下使用其顯示名稱寫入它,例如 `claude.ai Slack`。
350* `enabledMcpServers`:預設為關閉的內建 servers(例如 `computer-use`)的選擇加入列表。Claude Code 只在您在此列出時連接到預設關閉的 server。350* `enabledMcpServers`:預設關閉的內建伺服器(例如 `computer-use`)的選擇加入列表。Claude Code 只在您在此列出時連接預設關閉的伺服器。
351 351
352Claude Code 為每個 server 查詢恰好兩個列表之一,因此兩個列表都不會覆蓋另一個。如果您將常規 server 新增到 `enabledMcpServers`,或將預設關閉的內建 server 新增到 `disabledMcpServers`,Claude Code 會忽略該項目。352Claude Code 為每個伺服器查詢恰好兩個列表之一,因此兩個列表都不會覆蓋另一個。如果您將常規伺服器新增到 `enabledMcpServers`,或將預設關閉的內建伺服器新增到 `disabledMcpServers`,Claude Code 會忽略該項目。
353 353
354`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 和 [`disabledMcpjsonServers`](/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,它們控制專案 `.mcp.json` 檔案中定義的 servers 的批准。354`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](/docs/zh-TW/settings-reference#enabledmcpjsonservers) 和 [`disabledMcpjsonServers`](/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,它們控制專案的 `.mcp.json` 檔案中定義的伺服器的核准。
355 355
356<h3 id="mcp-client-runtimes">356<h3 id="mcp-client-runtimes">
357 MCP 用戶端執行時357 MCP 用戶端執行時
358</h3>358</h3>
359 359
360Claude Code 透過兩個用戶端執行時之一連接到 MCP servers。v1 執行時建立在 MCP TypeScript SDK 1.x 上。v2 執行時是 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 上的相同代碼,它新增了 MCP 協議修訂版 2026-07-28。此頁面的其餘部分適用於兩個執行時,除非某個部分命名 v2 執行時。360Claude Code 透過兩個用戶端執行時之一連接到 MCP 伺服器。v1 執行時建立在 MCP TypeScript SDK 1.x 上。v2 執行時是 [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/) 上的相同代碼,它新增 MCP 協議修訂 2026-07-28。此頁面的其餘部分適用於兩個執行時,除非某個部分命名 v2 執行時。
361 361
362Claude Code 每次啟動時選擇執行時,並保持到您退出。在[擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的 sessions 中,它在 Claude Code v2.1.232 或更新版本上使用 v2 執行時。362Claude Code 每次啟動時選擇執行時,並保持到您退出。在 [擷取功能旗標](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)的工作階段中,它在 Claude Code v2.1.232 或更新版本上使用 v2 執行時。
363 363
364在不擷取功能旗標的 sessions 中,Claude Code 在 Claude Code v2.1.274 或更新版本上預設使用 v2 執行時:364在不擷取功能旗標的工作階段中,Claude Code 在 Claude Code v2.1.274 或更新版本上預設使用 v2 執行時:
365 365
366* Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的 Sessions,除非嵌入 Claude Code 的主機平台設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-TW/env-vars)366* Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段,除非嵌入 Claude Code 的主機平台設定 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/zh-TW/env-vars)
367* 透過 [Claude apps gateway](/docs/zh-TW/claude-apps-gateway) 登入的 Sessions367* 透過 [Claude 應用程式閘道](/docs/zh-TW/claude-apps-gateway)登入的工作階段
368* 您關閉遙測或功能旗標擷取的 Sessions,例如使用 `DISABLE_TELEMETRY`368* 您關閉遙測或功能旗標擷取的工作階段,例如使用 `DISABLE_TELEMETRY`
369 369
370在 v2 上,Claude Code 也:370在 v2 上,Claude Code 也:
371 371
372* 詢問 HTTP servers 是否支援較新的修訂版,並與支援的 servers 一起使用它。它也在擷取功能旗標的 sessions 中詢問 claude.ai 連接器 servers。若要讓它詢問 stdio servers 或每個 session 中的連接器 servers,請設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto`。它連接到每個其他 server,如 v1 所做的那樣。372* 詢問 HTTP 伺服器他們是否支援較新的修訂,並與支援的伺服器一起使用它。它也在擷取功能旗標的工作階段中詢問 claude.ai 連接器伺服器。若要讓它詢問 stdio 伺服器或每個工作階段中的連接器伺服器,請設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto`。它連接到每個其他伺服器,如 v1 所做的那樣。
373* 從較新修訂版上的 servers 接收 `list_changed` 通知,透過它保持開啟的[流](#notification-streams-on-the-v2-runtime)。373* 在 [它保持開啟的流](#notification-streams-on-the-v2-runtime)上從較新修訂上的伺服器接收 `list_changed` 通知。
374* 不註冊在較新修訂版上連接的[channel](#push-messages-with-channels) server,因為該修訂版無法攜帶 channel 訊息。374* 不註冊在較新修訂上連接的 [通道](#push-messages-with-channels)伺服器,因為該修訂無法攜帶通道訊息。
375* 失敗[MCP OAuth 登入](#authenticate-with-remote-mcp-servers),其授權回應命名意外的簽發者。375* 失敗 [MCP OAuth 登入](#authenticate-with-remote-mcp-servers),其授權回應命名意外發行者。
376* 只將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 認證傳送到透過 HTTPS 或在 `localhost`、`127.0.0.1` 或 `::1` 提供的 token 端點。對於 token 端點為其他地方(例如您本機網路上的裝置)的純 `http://` 的 server,登入失敗。請參閱 [Refusing to send credentials to non-https token endpoint](/docs/zh-TW/errors#refusing-to-send-credentials-to-non-https-token-endpoint)。376* 僅將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 認證傳送到透過 HTTPS 或在 `localhost`、`127.0.0.1` 或 `::1` 上提供的令牌端點。對於令牌端點為其他地方(例如本機網路上的裝置)的純 `http://` 的伺服器,登入失敗。請參閱 [拒絕將認證傳送到非 https 令牌端點](/docs/zh-TW/errors#refusing-to-send-credentials-to-non-https-token-endpoint)。
377 377
378Anthropic 可以使用 Claude Code 擷取的功能旗標將特定 server 保持在較早的協議上,或關閉該流。378Anthropic 可以使用功能旗標 Claude Code 擷取將特定伺服器保持在較早的協議上,或關閉該流。
379 379
380若要自己選擇執行時,請設定 [`MCP_SDK_GENERATION`](/docs/zh-TW/env-vars) 為 `v1` 或 `v2`。若要決定 Claude Code 是否詢問,請設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto` 或 `legacy`。380若要自行選擇執行時,請設定 [`MCP_SDK_GENERATION`](/docs/zh-TW/env-vars) 為 `v1` 或 `v2`。若要決定 Claude Code 是否詢問,請設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto` 或 `legacy`。
381 381
382<h3 id="dynamic-tool-updates">382<h3 id="dynamic-tool-updates">
383 動態工具更新383 動態工具更新
384</h3>384</h3>
385 385
386Claude Code 支援 MCP `list_changed` 通知,允許 MCP servers 動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP server 傳送 `list_changed` 通知時,Claude Code 會自動重新整理該 server 的可用功能。386Claude Code 支援 MCP `list_changed` 通知,允許 MCP 伺服器動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP 伺服器傳送 `list_changed` 通知時,Claude Code 會自動重新整理來自該伺服器的可用功能。
387 387
388如果重新整理請求失敗,Claude Code 會保留 server 之前發現的工具、提示和資源,直到稍後的重新整理成功。在 v2.1.214 之前,重新整理期間的暫時性錯誤會將 server 的工具、提示和資源替換為空列表。388如果重新整理請求失敗,Claude Code 會保留伺服器之前發現的工具、提示和資源,直到稍後的重新整理成功。在 v2.1.214 之前,重新整理期間的暫時性錯誤會將伺服器的工具、提示和資源替換為空列表。
389 389
390<h4 id="notification-streams-on-the-v2-runtime">390<h4 id="notification-streams-on-the-v2-runtime">
391 v2 執行時上的通知流391 v2 執行時上的通知流
392</h4>392</h4>
393 393
394在 [v2 執行時](#mcp-client-runtimes)上,Claude Code 從較新協議修訂版上的 server 接收 `list_changed` 通知,透過它保持開啟的流。當流關閉時,Claude Code 會重新開啟它,有兩個限制:394在 [v2 執行時](#mcp-client-runtimes)上,Claude Code 在它保持開啟的流上從較新協議修訂上的伺服器接收 `list_changed` 通知。當流關閉時,Claude Code 會重新開啟它,有兩個限制:
395 395
396* **流在 10 秒內再次關閉**:Claude Code 最多重新開啟它三次,然後停止該連接。396* **流在 10 秒內再次關閉**:Claude Code 最多重新開啟三次,然後停止該連接。
397* **流保持開啟超過 10 秒,然後關閉**,如流到無伺服器主機通常所做的那樣:在一小時內五次重新開啟後,Claude Code 在下一次之前等待約六小時。397* **流保持開啟超過 10 秒,然後關閉**(如流到無伺服器主機通常所做的那樣):在一小時內五次重新開啟後,Claude Code 在下一次之前等待約六小時。
398 398
399直到流重新開啟,您保留 server 的最後擷取的工具、提示和資源。若要更快地選擇其變更,請從 `/mcp` 重新連接 server。399直到流重新開啟,您保留伺服器的最後擷取工具、提示和資源。若要更快地選擇其變更,請從 `/mcp` 重新連接伺服器。
400 400
401<h3 id="automatic-reconnection">401<h3 id="automatic-reconnection">
402 自動重新連接402 自動重新連接
403</h3>403</h3>
404 404
405Claude Code 重新連接在 session 中途斷開的遠端 server,並在暫時性錯誤後重試 HTTP 或 SSE server 的首次連接。Stdio servers 是本機程序,Claude Code 不會自動重新連接它們。405Claude Code 重新連接在工作階段中途掉線的遠端伺服器,並在暫時性錯誤後重試 HTTP 或 SSE 伺服器的首次連接。Stdio 伺服器是本機程序,Claude Code 不會自動重新連接它們。
406 406
407<h4 id="mid-session-drops-of-a-remote-server">407<h4 id="mid-session-drops-of-a-remote-server">
408 遠端 server 的中途斷開408 遠端伺服器的工作階段中途掉線
409</h4>409</h4>
410 410
411Claude Code 使用指數退避重新連接已斷開的遠端 server:最多五次嘗試,從一秒延遲開始,每次加倍。您看到的內容取決於您如何執行 Claude Code:411Claude Code 使用指數退避重新連接掉線的遠端伺服器:最多五次嘗試,從一秒延遲開始,每次加倍。您看到的內容取決於您如何執行 Claude Code:
412 412
413* **在互動式 session 中**:`/mcp` 在 Claude Code 重新連接時將 server 顯示為待處理。五次失敗嘗試後,Claude Code 將 server 標記為失敗,或在 server 需要再次授權時標記為需要驗證。當它將 server 標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。413* **在互動式工作階段中**:`/mcp` 在 Claude Code 重新連接時將伺服器顯示為待處理。在五次失敗嘗試後,Claude Code 將伺服器標記為失敗,或在伺服器需要再次授權時標記為需要驗證。當它將伺服器標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。
414* **在 [`claude -p`](/docs/zh-TW/headless) 執行和 [Agent SDK](/docs/zh-TW/agent-sdk/overview) sessions 中**:Claude Code 按相同的時間表重新連接,沒有 `/mcp` 面板顯示嘗試。414* **在 [`claude -p`](/docs/zh-TW/headless) 執行和 [Agent SDK](/docs/zh-TW/agent-sdk/overview) 工作階段中**:Claude Code 按相同的時間表重新連接,沒有 `/mcp` 面板顯示嘗試。
415 415
416<h4 id="failed-first-connections">416<h4 id="failed-first-connections">
417 失敗的首次連接417 失敗的首次連接
418</h4>418</h4>
419 419
420當 HTTP 或 SSE server 的首次連接因暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)失敗時,Claude Code 最多重試三次。如果連接仍然失敗,Claude Code 將 server 標記為失敗。Claude Code 在啟動時和 server 在 session 中途新增時以這種方式重試。這包括 Claude Code 從其配置新增到[雲端 session](/docs/zh-TW/claude-code-on-the-web) 的 server 和您使用 Agent SDK 的 [`setMcpServers()`](/docs/zh-TW/agent-sdk/typescript) 新增的 server。420當 HTTP 或 SSE 伺服器的首次連接因暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)失敗時,Claude Code 最多重試三次。如果連接仍然失敗,Claude Code 將伺服器標記為失敗。
421 421
422Claude Code 在這些情況下不會重試:422Claude Code 在這些情況下不重試:
423 423
424* WebSocket server 的首次連接424* WebSocket 伺服器的首次連接
425* 驗證或找不到錯誤,因為它需要配置變更才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是 server 的 `Authorization` 標頭的唯一來源時,Claude Code 無論如何都會重試驗證錯誤,因為它在每次嘗試時重新執行 helper 並可以選擇新的認證425* 驗證或找不到錯誤,因為它需要設定變更才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是伺服器唯一的 `Authorization` 標頭來源時,Claude Code 仍然重試驗證錯誤,因為它在每次嘗試時重新執行助手並可以選擇新認證
426 426
427<h4 id="failed-discovery-requests">427<h4 id="failed-discovery-requests">
428 失敗的發現請求428 失敗的發現請求
429</h4>429</h4>
430 430
431server 連接後,Claude Code 向它傳送功能發現請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。Claude Code 在暫時性網路或 server 錯誤後最多重試這些請求三次,短退避。它不會重試驗證錯誤、4xx 回應或請求逾時。431伺服器連接後,Claude Code 向其傳送功能發現請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。Claude Code 在暫時性網路或伺服器錯誤後使用短退避最多重試這些請求三次。它不重試驗證錯誤、4xx 回應或請求逾時。
432 432
433<h4 id="how-claude-learns-that-a-server-failed">433<h4 id="how-claude-learns-that-a-server-failed">
434 Claude 如何了解 server 失敗434 Claude 如何了解伺服器失敗
435</h4>435</h4>
436 436
437Claude Code 是否告訴 Claude 配置的 server 無法連接取決於[工具搜尋](#scale-with-mcp-tool-search),預設為開啟:437Claude Code 是否告訴 Claude 關於失敗連接的已設定伺服器取決於 [工具搜尋](#scale-with-mcp-tool-search)(預設開啟):
438 438
439* 使用工具搜尋,Claude Code 告訴 Claude 哪個 server 失敗及其連接錯誤,因此 Claude 在其回應中報告連接失敗。Claude Code 在找不到匹配工具的 `ToolSearch` 結果中包含相同的資訊。439* 使用工具搜尋,Claude Code 告訴 Claude 哪個伺服器失敗及其連接錯誤,因此 Claude 在其回應中報告連接失敗。Claude Code 在 `ToolSearch` 結果中包含相同的資訊,該結果找不到匹配的工具。
440* 在任何[沒有工具搜尋的配置](#configure-tool-search)中,Claude Code 不會向 Claude 報告失敗的 server 連接。440* 在任何 [沒有工具搜尋的設定](#configure-tool-search)中,Claude Code 不向 Claude 報告失敗的伺服器連接。
441 441
442<h3 id="push-messages-with-channels">442<h3 id="push-messages-with-channels">
443 使用 channels 推送訊息443 使用通道推送訊息
444</h3>444</h3>
445 445
446MCP server 也可以直接將訊息推送到您的 session 中,以便 Claude 可以回應外部事件,例如 CI 結果、監控警報或聊天訊息。若要啟用此功能,您的 server 宣告 `claude/channel` 功能,並在啟動時使用 `--channels` 旗標選擇加入。請參閱 [Channels](/docs/zh-TW/channels) 以使用官方支援的 channel,或 [Channels reference](/docs/zh-TW/channels-reference) 以建立您自己的。446MCP 伺服器也可以直接將訊息推送到您的工作階段,以便 Claude 可以對外部事件(如 CI 結果、監控警報或聊天訊息)做出反應。若要啟用此功能,您的伺服器宣告 `claude/channel` 功能,您在啟動時使用 `--channels` 旗標選擇加入。請參閱 [通道](/docs/zh-TW/channels)以使用官方支援的通道,或 [通道參考](/docs/zh-TW/channels-reference)以建立您自己的。
447 447
448在 [v2 執行時](#mcp-client-runtimes)上,如果您設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto` 且 channel server 協商 MCP 協議修訂版 2026-07-28,它無法傳遞 channel 訊息,因此 Claude Code 不會將其註冊為 channel。保留變數未設定,或將其設定為 `legacy`,將 stdio servers 保持在較早的握手上。448在 [v2 執行時](#mcp-client-runtimes)上,如果您設定 [`MCP_PROTOCOL_NEGOTIATION`](/docs/zh-TW/env-vars) 為 `auto` 且通道伺服器協商 MCP 協議修訂 2026-07-28,它無法傳遞通道訊息,因此 Claude Code 不會將其註冊為通道。保持變數未設定或設定為 `legacy` 會將 stdio 伺服器保持在較早的握手上。
449 449
450<Tip>450<Tip>
451 提示:451 提示:
452 452
453 * 使用 `-s` 或 `--scope` 旗標指定配置的儲存位置:453 * 使用 `-s` 或 `--scope` 旗標指定設定的儲存位置:
454 * `local` (預設):僅在目前專案中對您可用454 * `local`(預設):僅在目前專案中對您可用
455 * `project`:透過 `.mcp.json` 檔案與專案中的所有人共享455 * `project`:透過 `.mcp.json` 檔案與專案中的每個人共享
456 * `user`:在所有專案中對您可用456 * `user`:在所有專案中對您可用
457 * 使用 `-e` 或 `--env` 旗標設定環境變數 (例如,`-e KEY=value`)457 * 使用 `-e` 或 `--env` 旗標設定環境變數(例如 `-e KEY=value`)
458 * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 短形式458 * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 短形式
459 * 使用 `MCP_TIMEOUT` 環境變數配置 MCP server 啟動逾時 (例如,`MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)459 * 使用 `MCP_TIMEOUT` 環境變數設定 MCP 伺服器啟動逾時(例如 `MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)
460 * 透過在該 server 的 `.mcp.json` 項目中新增 `timeout` 欄位(以毫秒為單位)來設定每個 server 的工具執行逾時,例如 `"timeout": 600000` 表示十分鐘。這只會覆寫該 server 的 `MCP_TOOL_TIMEOUT` 環境變數460 * 透過將 `timeout` 欄位(以毫秒為單位)新增到該伺服器的 `.mcp.json` 項目來設定按伺服器工具執行逾時,例如 `"timeout": 600000` 表示十分鐘。這僅針對該伺服器覆蓋 `MCP_TOOL_TIMEOUT` 環境變數
461 * 當 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告,並預設將輸出限制為 25,000 個 tokens。若要增加此限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數 (例如,`MAX_MCP_OUTPUT_TOKENS=50000`);警告閾值是固定的。請參閱 [MCP output limits and warnings](#mcp-output-limits-and-warnings)461 * 當 MCP 工具輸出超過 10,000 個令牌時,Claude Code 顯示警告,預設限制輸出為 25,000 個令牌。若要提高限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數(例如 `MAX_MCP_OUTPUT_TOKENS=50000`);警告閾值是固定的。請參閱 [MCP 輸出限制和警告](#mcp-output-limits-and-warnings)
462 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證462 * 使用 `/mcp` 驗證需要 OAuth 2.0 驗證的遠端伺服器
463</Tip>463</Tip>
464 464
465每個 server 的 `timeout` 是每個工具呼叫的硬牆鐘限制,來自 server 的進度通知不會延長它。低於 1000 的值會被忽略並落回到 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回到其預設值約 28 小時。對於 HTTP、SSE 或[claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai) server,還有第二個每個請求的計時器,涵蓋每個請求直到 server 的第一個回應位元組。Claude Code 將該計時器設定為三個值中最大的:60 秒、適用於 server 的工具逾時和 `MCP_TIMEOUT`。未設定的 `MCP_TOOL_TIMEOUT` 的 28 小時預設值不會進入該比較,低於 60 秒的值不會縮短計時器。Stdio 和 WebSocket servers 沒有每個請求的計時器。465按伺服器 `timeout` 是每個工具呼叫的硬牆鐘限制,來自伺服器的進度通知不會延長它。低於 1000 的值被忽略並落回 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](/docs/zh-TW/mcp#use-mcp-servers-from-claude-ai)伺服器,還有第二個按請求計時器,涵蓋每個請求到伺服器的第一個回應位元組。Claude Code 將該計時器設定為三個值中最大的:60 秒、適用於伺服器的工具逾時和 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 的 28 小時預設值不進入該比較,低於 60 秒的值不會縮短計時器。Stdio 和 WebSocket 伺服器沒有按請求計時器。
466 466
467每個 server 至少 1000 的 `timeout` 也會作為下面所述的閒置逾時的下限:Claude Code 永遠不會因為閒置而在每個 server 的 `timeout` 之前中止該 server 的工具呼叫。需要 Claude Code v2.1.203 或更新版本。467至少 1000 的按伺服器 `timeout` 也充當下面描述的空閒逾時的下限:Claude Code 永遠不會因空閒而中止該伺服器的工具呼叫早於按伺服器 `timeout`。需要 Claude Code v2.1.203 或更新版本。
468 468
469對遠端 MCP server 的工具呼叫如果在閒置視窗內沒有傳送回應和進度通知,會以錯誤中止,而不是等待牆鐘限制。它適用於除 IDE servers 和 SDK 進程內 servers 之外的每種 server 類型。HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai) servers 的閒置視窗預設為五分鐘,stdio servers 的預設為 30 分鐘。在 v2.1.203 之前,stdio servers 不受閒置逾時限制。469對 MCP 伺服器的工具呼叫,在空閒視窗內不傳送回應且不傳送進度通知,會因錯誤而中止,而不是等待牆鐘限制。空閒逾時適用於除 IDE 伺服器和 SDK 進程內伺服器外的每個伺服器類型。空閒視窗預設為 HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器的五分鐘,以及 stdio 伺服器的 30 分鐘。在 v2.1.203 之前,stdio 伺服器免除空閒逾時。
470 470
471在毫秒中設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 環境變數以變更閒置視窗,或將其設定為 `0` 以停用檢查。471在毫秒中設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars)環境變數以變更空閒視窗,或設定為 `0` 以停用檢查。
472 472
473這些逾時限制呼叫可以執行多長時間,不一定總是它阻止 session 多長時間:執行超過兩分鐘的主對話呼叫會先移至背景工作。請參閱[長工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。473這些逾時限制呼叫可以執行多長時間,不總是它阻止工作階段多長時間:執行超過兩分鐘的主對話呼叫首先移動到背景任務。請參閱 [長工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。
474 474
475<h3 id="automatic-backgrounding-of-long-tool-calls">475<h3 id="automatic-backgrounding-of-long-tool-calls">
476 長工具呼叫的自動背景化476 長工具呼叫的自動背景化
477</h3>477</h3>
478 478
479主對話中仍在執行兩分鐘後的 MCP 工具呼叫會移至背景工作,而不是阻止 session。Claude 立即接收工作 ID 並繼續工作,結果在呼叫解決時作為工作通知到達。自動背景化需要 Claude Code v2.1.212 或更新版本。479主對話中仍在執行兩分鐘後的 MCP 工具呼叫移動到背景任務,而不是阻止工作階段。Claude 立即接收任務 ID 並繼續工作,結果在呼叫解決時作為任務通知到達。自動背景化需要 Claude Code v2.1.212 或更新版本。
480 480
481工作出現在 [`/tasks`](/docs/zh-TW/commands#all-commands) 中,您也可以在其中停止它,它不會在退出 session 時存活。工作的項目顯示 server 報告的最新進度。481任務出現在 [`/tasks`](/docs/zh-TW/commands#all-commands)中,您也可以在其中停止它,它不會在退出工作階段時存活。任務的項目顯示伺服器報告的最新進度。
482 482
483每個呼叫限制仍然適用於呼叫在背景執行時:由每個 server `timeout` 或 [`MCP_TOOL_TIMEOUT`](/docs/zh-TW/env-vars) 設定的牆鐘限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars) 設定的閒置逾時。483按呼叫限制仍然適用於呼叫在背景中執行時:由按伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](/docs/zh-TW/env-vars)設定的牆鐘限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/zh-TW/env-vars)設定的空閒逾時。
484 484
485設定 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/zh-TW/env-vars) 環境變數(以毫秒為單位)以變更閾值,或將其設定為 `0` 以關閉自動背景化。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 也會關閉它,以及所有其他背景工作功能。485在毫秒中設定 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/zh-TW/env-vars)環境變數以變更閾值,或設定為 `0` 以關閉自動背景化。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 也會關閉它,以及所有其他背景任務功能。
486 486
487某些呼叫永遠不會移至背景:487某些呼叫永遠不會移動到背景:
488 488
489* 來自 [subagents](/docs/zh-TW/sub-agents) 的呼叫;Claude Code 只背景化主對話呼叫489* 來自 [子代理](/docs/zh-TW/sub-agents)的呼叫;Claude Code 只背景化主對話呼叫
490* 對 IDE servers 的呼叫490* 對 IDE 伺服器的呼叫
491* 在[非互動式模式](/docs/zh-TW/headless)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設定為 `1`,因為一次性執行可能在結果到達之前結束491* 在 [非互動式模式](/docs/zh-TW/headless)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設定為 `1`,因為一次性執行可能在結果到達之前結束
492 492
493等待開啟[引發對話](#respond-to-mcp-elicitation-requests)的呼叫在對話開啟時不會背景化;server 被阻止在您的輸入上,而不是緩慢,因此 Claude Code 會延遲移動,直到對話關閉。493等待開啟 [引出對話](#respond-to-mcp-elicitation-requests)的呼叫在對話開啟時不會背景化;伺服器被阻止在您的輸入上,而不是緩慢,因此 Claude Code 將移動延遲到對話關閉。
494 494
495<h3 id="plugin-provided-mcp-servers">495<h3 id="plugin-provided-mcp-servers">
496 Plugin 提供的 MCP servers496 外掛提供的 MCP 伺服器
497</h3>497</h3>
498 498
499[Plugins](/docs/zh-TW/plugins/overview) 可以捆綁 MCP servers,在啟用 plugin 時提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。499[外掛](/docs/zh-TW/plugins/overview)可以捆綁 MCP 伺服器,在您啟用外掛時提供工具和整合。外掛 MCP 伺服器的工作方式與使用者設定的伺服器相同。
500 500
501**Plugin MCP servers 的工作方式**:501**外掛 MCP 伺服器如何工作**:
502 502
503* Plugins 在 plugin 根目錄的 `.mcp.json` 中或在 `plugin.json` 中內聯定義 MCP servers503* 外掛在外掛根目錄的 `.mcp.json` 中或內聯在 `plugin.json` 中定義 MCP 伺服器
504* 啟用 plugin 時,其 MCP servers 會自動啟動504* 當您啟用外掛時,Claude Code 自動啟動其 MCP 伺服器
505* Claude Code 將 plugin MCP 工具與手動配置的 MCP 工具一起提供505* Claude Code 將外掛 MCP 工具與手動設定的 MCP 工具一起提供
506* 您透過安裝或卸載 plugin 新增和移除 plugin servers,而不是使用 `/mcp` 命令。您仍然可以在 `/mcp` 中[切換已安裝的 plugin server 關閉](#disable-a-server-without-removing-it),這會停止 Claude Code 連接到它,而不會移除 plugin506* 您透過安裝或卸載外掛新增和移除外掛伺服器,而不是使用 `/mcp` 命令。您仍然可以 [在 `/mcp` 中切換已安裝的外掛伺服器關閉](#disable-a-server-without-removing-it),這會停止 Claude Code 連接到它,而不會移除外掛
507 507
508**Plugin MCP 配置範例**:508**範例外掛 MCP 設定**:
509 509
510在 plugin 根目錄的 `.mcp.json` 中:510在外掛根目錄的 `.mcp.json` 中:
511 511
512```json theme={null}512```json theme={null}
513{513{
523}523}
524```524```
525 525
526或在 `plugin.json` 中內聯:526或內聯在 `plugin.json` 中:
527 527
528```json theme={null}528```json theme={null}
529{529{
537}537}
538```538```
539 539
540**Plugin MCP 功能**:540**外掛 MCP 功能**:
541 541
542* **自動生命週期**:servers 在這些點連接和斷開:542* **自動生命週期**:伺服器在這些點連接和斷開連接:
543 * 在 session 啟動時,Claude Code 自動連接已啟用 plugins 的 servers。在 `/mcp` 中,您之前使用過的遠端 (HTTP 或 SSE) plugin server 可以顯示[`cached` 狀態](#server-status-detail)而不是;Claude Code 在 Claude 首次呼叫其其中一個工具時連接它543 * 在工作階段啟動時,Claude Code 自動連接已啟用外掛的伺服器。在 `/mcp` 中,您之前使用過的遠端(HTTP 或 SSE)外掛伺服器可以改為顯示 [`cached` 狀態](#server-status-detail);Claude Code 在 Claude 首次呼叫其工具之一時連接它
544 * 如果您在 session 期間啟用或停用 plugin,Claude Code 在變更套用時連接或斷開其 MCP servers。[在不重新啟動的情況下套用 plugin 變更](/docs/zh-TW/plugins/cli-reference#reload-plugins)描述何時發生。在沒有互動式終端的 session 中,`/reload-plugins` 不會連接或斷開 plugin MCP servers;這些變更在您的下一個 session 中生效544 * 如果您在工作階段期間啟用或停用外掛,Claude Code 在變更適用時連接或斷開其 MCP 伺服器。[在不重新啟動的情況下應用外掛變更](/docs/zh-TW/plugins/cli-reference#reload-plugins)描述何時發生。在沒有互動式終端的工作階段中,`/reload-plugins` 不連接或斷開外掛 MCP 伺服器;這些變更在您的下一個工作階段中生效
545 * 當您重新載入時,Claude Code 保留配置未變更的 plugin servers 的即時連接,並在您[替換 session 的 MCP server 列表](/docs/zh-TW/agent-sdk/typescript#mcpsetserversresult)而不命名它們時執行相同操作545 * 當您重新載入時,Claude Code 保留設定未變更的外掛伺服器的即時連接,並在您 [從 Agent SDK 替換工作階段的 MCP 伺服器列表](/docs/zh-TW/agent-sdk/typescript#mcpsetserversresult)而不命名它們時執行相同操作
546 * 當您在 v2.1.246 或更新版本上[使用 `/cd` 移動 session](/docs/zh-TW/permissions#move-the-session-to-another-directory) 時,Claude Code 連接新目錄的設定啟用的 plugins 的 servers,並斷開不再啟用的 plugins 的 servers,因此您不需要在移動後執行 `/reload-plugins`546 * 當您在 v2.1.246 或更新版本上 [使用 `/cd` 移動工作階段](/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 連接新目錄的設定啟用的外掛的伺服器,並斷開不再啟用的外掛的伺服器,因此您不需要在移動後執行 `/reload-plugins`
547 * 在[雲端 sessions](/docs/zh-TW/claude-code-on-the-web) 中,對尚未連接的 plugin server 的 MCP 呼叫(例如在閒置 session 喚醒後),按需啟動 server 並等待它連接547 * 在 [雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中,對尚未連接的外掛伺服器的 MCP 呼叫(例如空閒工作階段喚醒後)按需啟動伺服器並等待它連接
548* **路徑佔位符**:`${CLAUDE_PLUGIN_ROOT}` 解析為 plugin 的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 解析為其[持久狀態](/docs/zh-TW/plugins/components#path-variables-and-persistent-data)目錄,`${CLAUDE_PROJECT_DIR}` 解析為穩定的專案根目錄。替換適用於:548* **路徑佔位符**:`${CLAUDE_PLUGIN_ROOT}` 解析為外掛的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 解析為其 [持久狀態](/docs/zh-TW/plugins/components#path-variables-and-persistent-data)目錄,`${CLAUDE_PROJECT_DIR}` 解析為穩定的專案根目錄。替換適用於:
549 * `stdio` servers:`command`、`args`、`env`549 * `stdio` 伺服器:`command`、`args`、`env`
550 * `http`、`sse` 和 `ws` servers:`url`、`headers` 和 `headersHelper`550 * `http`、`sse` 和 `ws` 伺服器:`url`、`headers` 和 `headersHelper`
551* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數551* **使用者環境存取**:存取與手動設定伺服器相同的環境變數
552* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,傳輸支援可能因 server 而異552* **多個傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,儘管傳輸支援可能因伺服器而異
553 553
554Plugin servers 在 `/mcp` 中出現,並有指示器顯示它們來自 plugins。554外掛伺服器出現在 `/mcp` 中,指標顯示它們來自外掛。
555 555
556**Plugin MCP 工具名稱**:556對於外掛的 stdio 伺服器,`claude mcp get` 列印 `Command: stdio`、空 `Args:` 行和每個環境變數作為 `NAME=[REDACTED]`。值被隱藏,因為它們可能攜帶認證。
557 557
558來自 plugin 捆綁的 MCP server 的工具在其可呼叫名稱中包含 plugin 名稱和 server 金鑰。完整形式是 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都被替換為 `_`。對於在名為 `my-plugin` 的 plugin 中捆綁的 `database-tools` server,`query` 工具可呼叫為:558**外掛 MCP 工具名稱**:
559
560來自外掛捆綁的 MCP 伺服器的工具在其可呼叫名稱中包含外掛名稱和伺服器金鑰。完整形式是 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都被替換為 `_`。對於名為 `my-plugin` 的外掛中捆綁的 `database-tools` 伺服器,`query` 工具可呼叫為:
559 561
560```562```
561mcp__plugin_my-plugin_database-tools__query563mcp__plugin_my-plugin_database-tools__query
562```564```
563 565
564在 [permission rules](/docs/zh-TW/permissions)、skill 的 `allowed-tools` 列表、[subagent 的 `tools` 欄位](/docs/zh-TW/sub-agents#available-tools) 或 [hook matcher](/docs/zh-TW/hooks#match-mcp-tools) 中參考工具時,請使用此完整名稱。針對裸 server 金鑰(例如 `mcp__database-tools__.*`)編寫的 hook matcher 永遠不會針對 plugin 捆綁的 server 觸發。566在 [權限規則](/docs/zh-TW/permissions)、技能的 `allowed-tools` 列表、[子代理的 `tools` 欄位](/docs/zh-TW/sub-agents#available-tools)或 [hook 匹配器](/docs/zh-TW/hooks#match-mcp-tools)中參考工具時使用此完整名稱。針對裸伺服器金鑰編寫的 hook 匹配器(例如 `mcp__database-tools__.*`)永遠不會針對外掛捆綁的伺服器觸發。
565 567
566server 本身在範圍名稱 `plugin:<plugin-name>:<server-name>` 下註冊,例如 `plugin:my-plugin:database-tools`。在需要配置的 server 名稱的地方使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](/docs/zh-TW/hooks#mcp-tool-hook-fields)。568伺服器本身在範圍名稱 `plugin:<plugin-name>:<server-name>` 下註冊,例如 `plugin:my-plugin:database-tools`。在預期已設定伺服器名稱的地方使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](/docs/zh-TW/hooks#mcp-tool-hook-fields)。
567 569
568請參閱 [plugin 元件參考](/docs/zh-TW/plugins/components#mcp-servers),了解有關使用 plugins 捆綁 MCP servers 的詳細資訊。570請參閱 [外掛元件參考](/docs/zh-TW/plugins/components#mcp-servers)以取得有關使用外掛捆綁 MCP 伺服器的詳細資訊。
569 571
570<h2 id="mcp-installation-scopes">572<h2 id="mcp-installation-scopes">
571 MCP 安裝範圍573 MCP 安裝範圍
1458* 頂層屬性名稱必須為 1 到 64 個字元長,且只能使用 ASCII 字母和數字、`_`、`.` 和 `-`1460* 頂層屬性名稱必須為 1 到 64 個字元長,且只能使用 ASCII 字母和數字、`_`、`.` 和 `-`
1459* 綱要必須對 JSON Schema draft 2020-12 元綱要有效。Claude Code 會對未宣告 `$schema` 的綱要和宣告 draft 2020-12 的綱要套用此檢查。宣告任何其他方言的綱要會跳過此檢查,但上述屬性名稱檢查仍然適用1461* 綱要必須對 JSON Schema draft 2020-12 元綱要有效。Claude Code 會對未宣告 `$schema` 的綱要和宣告 draft 2020-12 的綱要套用此檢查。宣告任何其他方言的綱要會跳過此檢查,但上述屬性名稱檢查仍然適用
1460 1462
1461Claude Code 會在[根層級組合子重寫](#tool-input-schemas-with-a-root-level-combinator)之後執行檢查,對它實際會傳送的綱要進行檢查。
1462
1463當 Claude Code 排除一個工具時,它會在伺服器的日誌中記錄原因,並告訴 Claude 它排除了哪些工具以及原因,以便您可以詢問 Claude 為什麼工具遺失。如果您修復伺服器上的綱要,下次 Claude Code 載入伺服器的工具時,該工具就會恢復。1463當 Claude Code 排除一個工具時,它會在伺服器的日誌中記錄原因,並告訴 Claude 它排除了哪些工具以及原因,以便您可以詢問 Claude 為什麼工具遺失。如果您修復伺服器上的綱要,下次 Claude Code 載入伺服器的工具時,該工具就會恢復。
1464 1464
1465Claude Code 透過從 Anthropic 取得的功能旗標來開啟排除功能。在[停用旗標取得的部署](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)上,或在旗標從未到達的機器上(例如隔離的機器),Claude Code 仍會執行檢查並在伺服器的日誌中記錄哪個工具會被拒絕,但仍會將工具的綱要傳送給 API。API 會拒絕包含該綱要的請求,並[返回 400 錯誤,按位置命名工具](/docs/zh-TW/errors#tool-input-schema-is-invalid)。在 v2.1.216 之前,沒有部署執行這些檢查。1465Claude Code 透過從 Anthropic 取得的功能旗標來開啟排除功能。在[停用旗標取得的部署](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)上,或在旗標從未到達的機器上(例如隔離的機器),Claude Code 仍會執行檢查並在伺服器的日誌中記錄哪個工具會被拒絕,但仍會將工具的綱要傳送給 API。API 會拒絕包含該綱要的請求,並[返回 400 錯誤,按位置命名工具](/docs/zh-TW/errors#tool-input-schema-is-invalid)。在 v2.1.216 之前,沒有部署執行這些檢查。