64 64
65### 選項 1:新增遠端 HTTP 伺服器65### 選項 1:新增遠端 HTTP 伺服器
66 66
67HTTP 伺服器是連線至遠端 MCP 伺服器的建議選項。這是雲端服務支援最廣泛的傳輸方式。67HTTP 伺服器是連線到遠端 MCP 伺服器的建議選項。這是雲端服務中支援最廣泛的傳輸方式。
68 68
69```bash theme={null}69```bash theme={null}
70# Basic syntax70# Basic syntax
78 --header "Authorization: Bearer your-token"78 --header "Authorization: Bearer your-token"
79```79```
80 80
81透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規格使用 `streamable-http` 這個名稱來稱呼此傳輸方式,因此從伺服器文件複製的設定無需修改即可運作。81透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 設定 MCP 伺服器時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規格將此傳輸方式命名為 `streamable-http`,因此從伺服器文件複製的設定無須修改即可使用。
82 82
83具有 `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`。83具有 `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`。
84 84
85只有 SDK 主機應用程式,例如 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md) 應用程式或[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),才能註冊行程內的 `"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`。85只有 SDK 主機應用程式,例如 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md) 應用程式或[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),才能註冊程序內的 `"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`。
86 86
87> [!NOTE]87> [!NOTE]
88>88>
92 92
93> [!WARNING]93> [!WARNING]
94>94>
95> SSE(Server-Sent Events)傳輸方式已棄用。若可行,請改用 HTTP 伺服器。95> SSE(Server-Sent Events)傳輸方式已棄用。可行時請改用 HTTP 伺服器。
96 96
97有些服務仍只提供 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 或更新版本。97部分服務仍只提供 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 或更新版本。
98 98
99若使用較早的版本,或要直接透過 SSE 連線,請改為傳入 `--transport sse`:99在較早的版本上,或要直接透過 SSE 連線時,請改為傳入 `--transport sse`:
100 100
101```bash theme={null}101```bash theme={null}
102# Basic syntax102# Basic syntax
112 112
113### 選項 3:新增本機 stdio 伺服器113### 選項 3:新增本機 stdio 伺服器
114 114
115Stdio 伺服器以本機程序的形式在您的電腦上執行。它們非常適合需要直接存取系統的工具或自訂指令碼。115Stdio 伺服器會以本機程序的形式在您的電腦上執行。它們非常適合需要直接存取系統的工具或自訂指令碼。
116 116
117Claude Code 會在所啟動伺服器的環境中將 `CLAUDE_PROJECT_DIR` 設為專案根目錄,讓您的伺服器能解析相對於專案的路徑,而不必依賴工作目錄。這與 hook 在其 `CLAUDE_PROJECT_DIR` 變數中收到的目錄相同。請在伺服器程序內讀取它,例如在 Node 中使用 `process.env.CLAUDE_PROJECT_DIR`,或在 Python 中使用 `os.environ["CLAUDE_PROJECT_DIR"]`。117Claude Code 會在所啟動伺服器的環境中將 `CLAUDE_PROJECT_DIR` 設為專案根目錄,讓您的伺服器能解析相對於專案的路徑,而不必依賴工作目錄。這與 hook 在其 `CLAUDE_PROJECT_DIR` 變數中收到的目錄相同。請從伺服器程序內部讀取它,例如在 Node 中使用 `process.env.CLAUDE_PROJECT_DIR`,或在 Python 中使用 `os.environ["CLAUDE_PROJECT_DIR"]`。
118 118
119`CLAUDE_PROJECT_DIR` 是固定的專案根目錄,在工作階段中途新增或移除工作目錄時不會改變。若伺服器要將自身的檔案系統存取限制在一組允許的目錄內,應改為實作 MCP `roots/list` 請求。Claude Code 會以工作階段的啟動目錄,加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個[額外工作目錄](https://code.claude.com/docs/zh-TW/permissions.md#working-directories)來回應 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。119`CLAUDE_PROJECT_DIR` 是穩定的專案根目錄,在工作階段中途新增或移除工作目錄時不會改變。將自身檔案系統存取限制在一組允許目錄內的伺服器,應改為實作 MCP `roots/list` 請求。Claude Code 會以工作階段的啟動目錄,加上您透過 `--add-dir`、`/add-dir` 或 `additionalDirectories` 設定授予的每個[額外工作目錄](https://code.claude.com/docs/zh-TW/permissions.md#working-directories)來回應 `roots/list`。當該集合變更時,Claude Code 會傳送 `notifications/roots/list_changed`。
120 120
121此變數設定在伺服器的環境中,而非 Claude Code 本身的環境中,因此若要在專案範圍 `.mcp.json` 項目,或 `~/.claude.json` 中本機或使用者範圍伺服器項目的 `command` 或 `args` 中透過 `${VAR}` 展開來參照它,需要提供預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定會直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。121此變數是設定在伺服器的環境中,而非 Claude Code 本身的環境中,因此若要在專案範圍 `.mcp.json` 項目,或 `~/.claude.json` 中本機或使用者範圍伺服器項目的 `command` 或 `args` 中,透過 `${VAR}` 展開參照它,就需要提供預設值,例如 `${CLAUDE_PROJECT_DIR:-.}`。外掛提供的 MCP 設定會直接替換 `${CLAUDE_PROJECT_DIR}`,不需要預設值。
122 122
123```bash theme={null}123```bash theme={null}
124# Basic syntax124# Basic syntax
131 131
132> [!NOTE]132> [!NOTE]
133>133>
134> 對於 stdio 伺服器,`--`(雙破折號)會將 Claude 本身的選項(例如 `--transport`、`--env` 和 `--scope`)與執行伺服器的命令和引數分隔開來。`--` 之後的所有內容都會原封不動地傳遞給伺服器。134> 對於 stdio 伺服器,`--`(雙破折號)會將 Claude 本身的選項(例如 `--transport`、`--env` 和 `--scope`)與執行伺服器的命令和引數分隔開來。`--` 之後的所有內容都會原封不動地傳給伺服器。
135>135>
136> 例如:136> 例如:
137>137>
138> * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`138> * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`
139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 在環境中帶有 `KEY=value` 的情況下執行 `python server.py --port 8080`139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 在環境中帶有 `KEY=value` 的情況下執行 `python server.py --port 8080`
140>140>
141> 若沒有 `--`,Claude Code 會嘗試將伺服器的旗標(例如上方的 `--port`)當作自己的選項來解析。141> 若沒有 `--`,Claude Code 會嘗試將伺服器的旗標(例如上方的 `--port`)解析為自己的選項。
142>142>
143> `--env` 接受多個 `KEY=value` 配對。若伺服器名稱直接接在 `--env` 之後,CLI 會將該名稱讀取為另一個配對並予以拒絕,因此請在 `--env` 與伺服器名稱之間至少放置一個其他選項,例如 `--transport stdio`。143> `--env` 接受多組 `KEY=value`。若伺服器名稱緊接在 `--env` 之後,CLI 會將該名稱讀取為另一組鍵值並拒絕它,因此請在 `--env` 與伺服器名稱之間放置至少一個其他選項,例如 `--transport stdio`。
144 144
145#### Claude Code 如何停止 stdio 伺服器145#### Claude Code 如何停止 stdio 伺服器
146 146
147當 Claude Code 中斷與 stdio 伺服器的連線時(例如工作階段結束時),它會向伺服器程序發送訊號,並短暫等待其結束,然後才強制停止。若您的伺服器會在關閉時儲存狀態或移除鎖定檔案,請處理您平台的訊號,並在該時間內完成:147當 Claude Code 中斷 stdio 伺服器的連線時(例如工作階段結束時),它會向伺服器程序傳送訊號,並短暫等待其結束,之後才強制停止。如果您的伺服器會在關閉時儲存狀態或移除鎖定檔,請處理您平台上的訊號,並在該時間內完成:
148 148
149* **在 macOS 和 Linux 上**:Claude Code 會傳送 `SIGINT`,若 100 毫秒後程序仍在執行則傳送 `SIGTERM`,再過 400 毫秒後傳送 `SIGKILL`。149* **在 macOS 和 Linux 上**:Claude Code 會傳送 `SIGINT`,若程序在 100 毫秒後仍在執行則傳送 `SIGTERM`,再過 400 毫秒後傳送 `SIGKILL`。
150* **在 Windows 上**:Claude Code 會關閉伺服器的 stdin,若 300 毫秒後程序仍在執行,則結束伺服器的程序樹。150* **在 Windows 上**:Claude Code 會關閉伺服器的 stdin,若程序在 300 毫秒後仍在執行,則結束伺服器的程序樹。
151 151
152在 v2.1.296 之前,Windows 上的 Claude Code 會立即結束伺服器的程序樹,而不會先關閉 stdin 或等待。152在 v2.1.296 之前,Windows 上的 Claude Code 會立即結束伺服器的程序樹,不會先關閉 stdin 或等待。
153 153
154### 選項 4:新增遠端 WebSocket 伺服器154### 選項 4:新增遠端 WebSocket 伺服器
155 155
162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'
163```163```
164 164
165`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。身分驗證僅透過標頭進行,因此請在 `headers` 中傳入靜態 token,或在連線時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 產生 token。`claude mcp add --transport` 旗標不接受 `ws`。165`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。身分驗證僅透過標頭進行,因此請在 `headers` 中傳入靜態 token,或在連線時透過 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 產生。`claude mcp add --transport` 旗標不接受 `ws`。
166 166
167### 從為其他用戶端撰寫的設定說明新增伺服器167### 依據為其他用戶端撰寫的設定說明新增伺服器
168 168
169MCP 伺服器並非 Claude Code 專屬,因此伺服器的設定說明可能是為 Claude Desktop、Cursor 或其他 MCP 用戶端撰寫,且未提供 `claude mcp add` 命令。若仍要新增該伺服器,請在這些說明中尋找 URL、啟動命令或 JSON 區塊:169MCP 伺服器並非 Claude Code 專屬,因此伺服器的設定說明可能是為 Claude Desktop、Cursor 或其他 MCP 用戶端撰寫的,且未提供 `claude mcp add` 命令。若仍要新增該伺服器,請在這些說明中尋找 URL、啟動命令或 JSON 區塊:
170 170
171* **URL**,例如 `https://mcp.example.com/mcp`:伺服器位於遠端。171* **URL**,例如 `https://mcp.example.com/mcp`:伺服器為遠端伺服器。
172* **啟動命令**,例如 `npx -y @example/mcp-server`:伺服器在您的電腦上執行。172* **啟動命令**,例如 `npx -y @example/mcp-server`:伺服器在您的電腦上執行。
173* **`mcpServers` JSON 區塊**:為其他用戶端的設定檔撰寫的設定。173* **`mcpServers` JSON 區塊**:為其他用戶端設定檔撰寫的設定。
174 174
175每一種都是[安裝 MCP 伺服器](#installing-mcp-servers)中四個選項所接受的輸入之一。請在下方找到您所擁有的形式,將其轉換為 Claude Code 接受的命令。除非您加上 `--scope project` 或 `--scope user`,否則每個命令都會寫入[本機範圍](#local-scope)。175每一種都是[安裝 MCP 伺服器](#installing-mcp-servers)中四個選項所接受的輸入之一。請在下方找到您手上的形式,將其轉換為 Claude Code 接受的命令。除非您加上 `--scope project` 或 `--scope user`,否則每個命令都會寫入[本機範圍](#local-scope)。
176 176
177#### 從 URL 新增伺服器177#### 從 URL 新增伺服器
178 178
179URL 表示伺服器位於遠端。對於 `https://` 端點,請使用 `--transport http` 新增;若說明指出端點使用 SSE,則依照[選項 2](#option-2-add-a-remote-sse-server) 操作。對於 `wss://` 端點,請改用[選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:179URL 表示伺服器為遠端伺服器。對於 `https://` 端點,請使用 `--transport http` 新增;若說明指出該端點使用 SSE,則請依照[選項 2](#option-2-add-a-remote-sse-server)。對於 `wss://` 端點,請改用[選項 4](#option-4-add-a-remote-websocket-server),因為 `--transport` 不接受 `ws`:
180 180
181```bash theme={null}181```bash theme={null}
182claude mcp add --transport http example https://mcp.example.com/mcp182claude mcp add --transport http example https://mcp.example.com/mcp
183```183```
184 184
185若說明還提供了 API 金鑰或 token 標頭,請如[選項 1](#option-1-add-a-remote-http-server) 所示,使用 `--header` 傳入。185若說明也提供了 API 金鑰或 token 標頭,請如[選項 1](#option-1-add-a-remote-http-server)所示,使用 `--header` 傳入。
186 186
187#### 從 `npx`、`uvx` 或二進位檔命令新增伺服器187#### 從 `npx`、`uvx` 或二進位命令新增伺服器
188 188
189啟動命令表示伺服器以本機 stdio 程序的形式執行。請將整個命令放在 `--` 之後,讓 Claude Code 將 `-y` 等旗標傳遞給啟動伺服器的命令,而不是將其讀取為自己的選項。請在伺服器名稱之後、`--` 之前,使用 `--env` 傳入說明要求的任何環境變數:189啟動命令表示伺服器以本機 stdio 程序執行。請將整個命令放在 `--` 之後,讓 Claude Code 將 `-y` 之類的旗標傳給啟動伺服器的命令,而不是將其讀取為自己的選項。請使用 `--env` 傳入說明要求的任何環境變數,放在伺服器名稱之後、`--` 之前:
190 190
191```bash theme={null}191```bash theme={null}
192claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server192claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server
196 196
197#### 從 `mcpServers` JSON 區塊新增伺服器197#### 從 `mcpServers` JSON 區塊新增伺服器
198 198
199為其他 MCP 用戶端(例如 Claude Desktop)撰寫的 `mcpServers` 區塊,使用的是 Claude Code 可讀取的包裝鍵與項目形式。請將 `mcpServers` 內部的物件(而非包裝層)傳給 `claude mcp add-json`。有兩種項目需要先修正:199為其他 MCP 用戶端(例如 Claude Desktop)撰寫的 `mcpServers` 區塊,使用的是 Claude Code 可讀取的外層鍵與項目結構。請將 `mcpServers` 內部的物件傳給 `claude mcp add-json`,而非外層包裝。有兩種項目需要先修正:
200 200
201* **有 `url` 但沒有 `type`**:依端點加上 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"`。Claude Code 會將沒有 `type` 的項目視為 stdio 伺服器,因此沒有 `type` 的 `url` 項目會失敗。201* **具有 `url` 但沒有 `type`**:依端點加上 `"type": "http"`、`"type": "sse"` 或 `"type": "ws"`。Claude Code 會將沒有 `type` 的項目讀取為 stdio 伺服器,因此沒有 `type` 的 `url` 項目會失敗。
202* **鍵包含字母、數字、連字號和底線以外的字元**:請選擇只使用這些字元的伺服器名稱。否則,該鍵即為伺服器名稱。202* **鍵名含有字母、數字、連字號和底線以外的字元**:請挑選只使用這些字元的伺服器名稱。否則,鍵名即為伺服器名稱。
203 203
204例如,這個區塊:204例如,這個區塊:
205 205
220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'
221```221```
222 222
223[從 JSON 設定新增 MCP 伺服器](#add-mcp-servers-from-json-configuration)說明了 shell 跳脫處理以及 `add-json` 的 `--scope` 旗標。若要改為與團隊共用該伺服器,請加上 `--scope project`,或將該項目新增至專案根目錄中 `.mcp.json` 的 `mcpServers` 下並提交。[專案範圍](#project-scope)說明了 Claude Code 如何載入及核准該檔案。223[從 JSON 設定新增 MCP 伺服器](#add-mcp-servers-from-json-configuration)說明了 shell 跳脫字元以及 `add-json` 的 `--scope` 旗標。若要改為與團隊共用該伺服器,請加上 `--scope project`,或將該項目加到專案根目錄中 `.mcp.json` 的 `mcpServers` 下並提交。[專案範圍](#project-scope)說明了 Claude Code 如何載入並核准該檔案。
224 224
225每個 `claude mcp add` 和 `claude mcp add-json` 命令成功時都會印出一行 `Added ...`。若要確認 Claude Code 已連線,請執行 `claude mcp get <name>`;[伺服器狀態](#server-status)說明了它所顯示的狀態,以及 `.mcp.json` 伺服器的核准步驟。225每個 `claude mcp add` 和 `claude mcp add-json` 命令成功時都會印出一行 `Added ...`。若要確認 Claude Code 已連線,請執行 `claude mcp get <name>`;[伺服器狀態](#server-status)說明了它顯示的狀態以及 `.mcp.json` 伺服器的核准步驟。
226 226
227### 管理您的伺服器227### 管理您的伺服器
228 228
242/mcp242/mcp
243```243```
244 244
245當您移除遠端伺服器時,Claude Code 也會刪除為該伺服器儲存的 OAuth token 與用戶端註冊資訊。Claude Code 不會在核發這些 token 的授權伺服器上撤銷它們。若授權伺服器支援撤銷,要在該處撤銷 token,請在 `claude mcp remove <name>` 之前,於 shell 中執行 [`claude mcp logout <name>`](#authenticate-from-the-command-line)。245當您移除遠端伺服器時,Claude Code 也會刪除它為該伺服器儲存的 OAuth token 和用戶端註冊。Claude Code 不會在核發這些 token 的授權伺服器上撤銷它們。若授權伺服器支援撤銷,要撤銷這些 token,請在 `claude mcp remove <name>` 之前,於 shell 中執行 [`claude mcp logout <name>`](#authenticate-from-the-command-line)。
246 246
247#### 伺服器狀態247#### 伺服器狀態
248 248
249`claude mcp add` 會印出一行 `Added ...` 以確認新增成功,這表示設定已寫入。若命令改為印出 `was not saved` 訊息,請參閱 [MCP server was not saved or removed](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-was-not-saved-or-removed);若為 `may not have been saved` 訊息,請參閱 [MCP server may not have been saved or removed](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-may-not-have-been-saved-or-removed)。249`claude mcp add` 會印出一行 `Added ...` 來確認新增成功,表示設定已寫入。若命令改為印出 `was not saved` 訊息,請參閱 [MCP 伺服器未被儲存或移除](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-was-not-saved-or-removed);若是 `may not have been saved` 訊息,請參閱 [MCP 伺服器可能未被儲存或移除](https://code.claude.com/docs/zh-TW/errors.md#mcp-server-may-not-have-been-saved-or-removed)。
250 250
251`claude mcp list` 會在列出的每個伺服器旁顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連線至該伺服器,而不是 list 命令失敗。251`claude mcp list` 會在列出的每個伺服器旁顯示健康狀態,例如 `✔ Connected`、`! Needs authentication` 或 `✘ Failed to connect`。失敗狀態表示 Claude Code 無法連線到該伺服器,而不是 list 命令本身失敗。
252 252
253以下清單中的狀態回報的是設定上的決定,而非連線嘗試,因此 Claude Code 會在不連線至伺服器的情況下印出它們:253以下清單中的狀態回報的是設定上的決定,而非連線嘗試,因此 Claude Code 會在不連線到伺服器的情況下印出它們:
254 254
255* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json`、您尚未核准的專案範圍伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。請以互動方式執行 `claude` 來檢閱並核准它。255* ``⏸ Pending approval (run `claude` to approve)``:來自 `.mcp.json`、您尚未核准的專案範圍伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。請以互動方式執行 `claude` 來檢視並核准它。
256* `✘ Rejected (see disabledMcpjsonServers in settings)`:被 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` 伺服器。Claude Code 只會在 `claude mcp get <name>` 中顯示它。256* `✘ Rejected (see disabledMcpjsonServers in settings)`:被 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 項目拒絕的 `.mcp.json` 伺服器。Claude Code 只會在 `claude mcp get <name>` 中顯示它。
257* `⊘ 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` 面板重新啟用該伺服器。257* `⊘ 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` 面板重新開啟該伺服器。
258* `✘ Blocked by enterprise managed policy`:被您組織的某項政策拒絕的伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示此狀態。被[受管 MCP 設定](https://code.claude.com/docs/zh-TW/managed-mcp.md#how-restrictions-appear-to-users)中的允許清單、拒絕清單或其他限制封鎖的伺服器,會在兩個命令中都被隱藏,而不是以此狀態顯示。請詢問您的管理員是哪項政策封鎖了該伺服器。258* `✘ Blocked by enterprise managed policy`:被您組織的某項政策拒絕的伺服器。Claude Code 會在 `claude mcp list` 和 `claude mcp get <name>` 中都顯示它。被[受管 MCP 設定](https://code.claude.com/docs/zh-TW/managed-mcp.md#how-restrictions-appear-to-users)中的允許清單、拒絕清單或其他限制封鎖的伺服器,會在這兩個命令中都被隱藏,而不是以此狀態顯示。請詢問您的管理員是哪項政策封鎖了該伺服器。
259 259
260#### 專案伺服器核准與工作區信任260#### 專案伺服器核准與工作區信任
261 261
262在您於工作區中執行 `claude` 並接受工作區信任對話框以信任該工作區之前,`claude mcp list` 和 `claude mcp get` 只會從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准。複製下來的儲存庫無法核准自己的伺服器:在未受信任的資料夾中,提交至專案 `.claude/settings.json` 的 [`enableAllProjectMcpServers`](https://code.claude.com/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 會被忽略,伺服器會停留在 `⏸ Pending approval`,而不會被連線並進行健康檢查。262在您於工作區中執行 `claude` 並接受工作區信任對話框來信任該工作區之前,`claude mcp list` 和 `claude mcp get` 只會從未簽入儲存庫的設定檔讀取 `.mcp.json` 核准。複製下來的儲存庫無法核准它自己的伺服器:提交到專案 `.claude/settings.json` 中的 [`enableAllProjectMcpServers`](https://code.claude.com/docs/zh-TW/settings-reference#enableallprojectmcpservers) 或 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 在未受信任的資料夾中會被忽略,伺服器會停留在 `⏸ Pending approval`,而不會被連線和進行健康檢查。
263 263
264來自以下來源的核准在未受信任的資料夾中仍然適用:264來自以下來源的核准在未受信任的資料夾中仍然適用:
265 265
267* 受管設定267* 受管設定
268* 透過 `--settings` 傳入的設定268* 透過 `--settings` 傳入的設定
269 269
270Claude Code 也會套用來自未追蹤的 `.claude/settings.local.json` 的核准,但它會執行 git 來檢查該檔案是否被追蹤,而且只會在[受信任的資料夾](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任過的資料夾中,Claude Code 會等待信任對話框後才套用該檔案的核准,除非該資料夾是您自己的設定主目錄:也就是您的家目錄,或其 `.claude` 已被您設為 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars) 的目錄。在 v2.1.207 之前,即使在您從未信任過的資料夾中,Claude Code 也會套用來自未追蹤的 `.claude/settings.local.json` 的核准。270Claude Code 也會套用來自未追蹤之 `.claude/settings.local.json` 的核准,但它會執行 git 來檢查該檔案是否受追蹤,且只會在[受信任的資料夾](https://code.claude.com/docs/zh-TW/permissions.md#project-allow-rules-and-workspace-trust)中執行該檢查。在您從未信任過的資料夾中,Claude Code 會等待信任對話框後才套用該檔案的核准,除非該資料夾是您自己的設定主目錄:您的家目錄,或其 `.claude` 已被您設為 [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/zh-TW/env-vars) 的目錄。在 v2.1.207 之前,即使在您從未信任過的資料夾中,Claude Code 也會套用來自未追蹤之 `.claude/settings.local.json` 的核准。
271 271
272任何設定檔中的 `disabledMcpjsonServers` 項目仍會拒絕該伺服器。272任何設定檔中的 `disabledMcpjsonServers` 項目仍會拒絕該伺服器。
273 273
274#### 伺服器狀態詳細資訊274#### 伺服器狀態詳細資訊
275 275
276在 `/mcp`(包括其中的伺服器選單)以及 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理器中,您先前使用過的遠端 HTTP 或 SSE 伺服器可能會顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 是從先前工作階段儲存的探索快取中載入伺服器的工具清單,而非在啟動時連線,並會在 Claude 第一次呼叫該伺服器的某個工具時連線該伺服器。這些工具從您的第一則訊息開始就可使用,因此您無需執行任何操作。探索快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。276在 `/mcp`(包括其中伺服器的選單)以及 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中,您先前使用過的遠端 HTTP 或 SSE 伺服器可能會顯示 `cached` 狀態,例如 `cached 2h ago · connects on first use · 5 tools`。Claude Code 是從先前工作階段儲存的探索快取載入該伺服器的工具清單,而非在啟動時連線,並會在 Claude 第一次呼叫該伺服器的某個工具時連線該伺服器。這些工具從您的第一則訊息起就可使用,因此您無須做任何事。探索快取及其 `cached` 狀態需要 Claude Code v2.1.221 或更新版本。
277 277
278除非逐步推出已為您的帳戶啟用,否則探索快取預設為關閉。設定 [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/zh-TW/env-vars) 可將其開啟,或設為 `0` 以在推出已啟用時仍保持關閉。在 v2.1.238 之前,快取預設為開啟。278除非逐步推出已為您的帳戶啟用,否則探索快取預設為關閉。將 [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/zh-TW/env-vars) 設定為開啟,或設為 `0`,即使推出已啟用也保持關閉。在 v2.1.238 之前,快取預設為開啟。
279 279
280當您從 `/mcp` 中伺服器的選單選取 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該伺服器的快取項目。對已連線或失敗的伺服器,**Reconnect** 也會捨棄它;對 `cached` 伺服器,**Reconnect** 會立即連線伺服器並保留該項目。捨棄項目後,Claude Code 下次連線至該伺服器時,會從伺服器而非快取擷取工具清單。280當您從 `/mcp` 中伺服器的選單選取 **Disable** 或 **Clear authentication** 時,Claude Code 也會捨棄該伺服器的快取項目。在已連線或失敗的伺服器上,**Reconnect** 也會捨棄它;在 `cached` 伺服器上,**Reconnect** 會立即連線該伺服器並保留該項目。捨棄項目後,Claude Code 下次連線到該伺服器時,會從伺服器而非快取擷取工具清單。
281 281
282##### 連線失敗與未設定的伺服器282##### 連線失敗與未設定的伺服器
283 283
284當伺服器的狀態為 `✘ Failed to connect` 時,`claude mcp list` 會將失敗詳細資訊附加在該狀態行後,而 `claude mcp get <name>` 會在 `Issue:` 行中顯示它。詳細資訊為 HTTP 狀態或錯誤碼,加上伺服器傳回的任何錯誤文字。`/mcp` 中伺服器的詳細檢視會在其 `Issue:` 列中包含相同的伺服器回報文字。284當伺服器的狀態為 `✘ Failed to connect` 時,`claude mcp list` 會在該狀態行後附加失敗詳細資訊,而 `claude mcp get <name>` 會在 `Issue:` 行中顯示。詳細資訊為 HTTP 狀態碼或錯誤碼,以及伺服器傳回的任何錯誤文字。`/mcp` 中伺服器的詳細資訊檢視,會在其 `Issue:` 列中包含相同的伺服器回報文字。
285 285
286Claude Code 會從這些詳細資訊中遮蔽類似憑證的文字,且永遠不會包含展開後的伺服器 URL,因為其中可能帶有機密資訊。Claude Code 不會在 `✘ Connection error` 狀態後附加任何詳細資訊,因為它在該處會印出的例外文字可能內嵌該 URL。286Claude Code 會從此詳細資訊中遮蔽類似憑證的文字,且絕不包含可能帶有機密的展開後伺服器 URL。Claude Code 不會在 `✘ Connection error` 狀態後附加詳細資訊,因為它在那裡會印出的例外文字可能內嵌該 URL。
287 287
288當您從 `/mcp` 完成身分驗證,但連線仍因 HTTP 狀態或傳輸錯誤代碼而失敗時,Claude Code 會在嘗試後印出的訊息中加入該代碼以及伺服器 URL 的來源。來源是指通訊協定與主機,若 URL 有指定連接埠則加上連接埠,例如 `https://mcp.example.com`。288當您從 `/mcp` 完成身分驗證,而連線仍以 HTTP 狀態碼或傳輸錯誤碼失敗時,Claude Code 會在嘗試後印出的訊息中加入該代碼以及伺服器 URL 的來源。來源為協定與主機,若 URL 有指定連接埠則也包含連接埠,例如 `https://mcp.example.com`。
289 289
290* 該訊息中絕不會出現路徑與查詢字串。290* 路徑與查詢字串絕不會出現在該訊息中。
291* 對於本機、專案或使用者[範圍](#mcp-installation-scopes)中或受管 MCP 設定中的伺服器,來源會顯示該設定中所寫的主機,因此主機中的 `${VAR}` 參照不會在訊息中展開。291* 對於本機、專案或使用者[範圍](#mcp-installation-scopes)中或受管 MCP 設定中的伺服器,來源會顯示該設定中所寫的主機,因此主機中的 `${VAR}` 參照在訊息中不會被展開。
292* 對於沒有狀態或錯誤代碼的失敗,Claude Code 會顯示錯誤文字,但不含來源。292* 對於沒有狀態碼或錯誤碼的失敗,Claude Code 會顯示錯誤文字,但不含來源。
293 293
294設定中 `url` 為空的遠端伺服器,在 `/mcp`、`claude mcp list` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理器中會顯示為 `not configured`,且 Claude Code 不會嘗試連線至它。外掛可以為您稍後設定的連接器加入這類預留項目,因此 Claude Code 不會將其回報為錯誤或設定問題。`/mcp` 中該伺服器的詳細資訊檢視會顯示 `No URL configured for this server`;請設定該項目的 `url` 以進行連線。294設定中 `url` 為空的遠端伺服器,會在 `/mcp`、`claude mcp list` 和 [`/plugin`](https://code.claude.com/docs/zh-TW/plugins/install) 管理員中顯示為 `not configured`,且 Claude Code 不會嘗試連線到它。外掛可以為您稍後才設定的連接器加入這樣的預留項目,因此 Claude Code 不會將其回報為錯誤或設定問題。`/mcp` 中該伺服器的詳細資訊檢視會顯示 `No URL configured for this server`;請設定該項目的 `url` 以連線。
295 295
296#### 設定警告296#### 設定警告
297 297
298Claude Code 會針對以下設定問題發出警告。每個項目都說明了 Claude Code 檢查的內容以及如何清除警告:298Claude Code 會針對以下設定問題發出警告。每個項目都說明了 Claude Code 檢查的內容以及如何清除警告:
299 299
300* **隱藏的空白字元**:當 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 不會修剪空白字元,而是完全依照所寫的內容使用這些值,因此請編輯設定將其移除。300* **隱藏的空白字元**:當 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 不會修剪空白字元,而是完全依照所寫的值使用,因此請編輯設定將其移除。
301* **同一名稱存在於多個範圍**:若您在多個[範圍](#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 金鑰等已解析的值。301* **多個範圍中有相同名稱**:若您在多個[範圍](#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 金鑰之類的解析後值。
302* **保留名稱**:Claude Code 保留了其內建伺服器的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。若您的設定定義了使用保留名稱的伺服器,Claude Code 會在載入時略過它,並顯示警告要求您重新命名。`claude mcp add` 會以錯誤拒絕保留名稱。`Claude Preview` 和 `Claude Browser` 都是指 [Claude Code 桌面應用程式預覽窗格](https://code.claude.com/docs/zh-TW/desktop.md#preview-your-app)所使用的內建伺服器。302* **保留名稱**:Claude Code 會保留其內建伺服器的名稱,包括 `workspace`、`claude-in-chrome`、`computer-use`、`Claude Preview` 和 `Claude Browser`。若您的設定以保留名稱定義伺服器,Claude Code 會在載入時略過它,並顯示要求您重新命名的警告。`claude mcp add` 會以錯誤拒絕保留名稱。`Claude Preview` 和 `Claude Browser` 都是指 [Claude Code 桌面應用程式的預覽窗格](https://code.claude.com/docs/zh-TW/desktop.md#preview-your-app)所使用的內建伺服器。
303* **缺少環境變數**:若伺服器設定中的 [`${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),且不會發出警告。303* **缺少環境變數**:若伺服器設定中的 [`${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),且不會發出警告。
304 304
305#### 工具可用性305#### 工具可用性
306 306
307`/mcp` 面板會在每個已連線伺服器旁顯示工具數量,並標示出宣告具備工具能力但未公開任何工具的伺服器。307`/mcp` 面板會在每個已連線的伺服器旁顯示工具數量,並標示出宣告具有工具能力卻未公開任何工具的伺服器。
308 308
309##### 雲端工作階段中的工具數量309##### 雲端工作階段中的工具數量
310 310
311在[雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,像 `3 of 13 tools available` 這樣的數量表示 Claude 無法使用其餘 10 個工具。請檢查以下原因(但不限於此):311在[雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,像 `3 of 13 tools available` 這樣的數量表示 Claude 無法使用其他 10 個工具。請檢查以下原因等:
312 312
313* **您儲存庫 `.claude/settings.json` 中的拒絕規則指定了該工具或其整個伺服器**:若[您的工作階段會讀取該檔案](https://code.claude.com/docs/zh-TW/settings.md#settings-in-cloud-sessions),請移除該[規則](https://code.claude.com/docs/zh-TW/permissions.md#mcp)313* **您儲存庫的 `.claude/settings.json` 中有拒絕規則指向該工具或其整個伺服器**:若[您的工作階段會讀取該檔案](https://code.claude.com/docs/zh-TW/settings.md#settings-in-cloud-sessions),請移除該[規則](https://code.claude.com/docs/zh-TW/permissions.md#mcp)
314* **工具的完整名稱超過 128 個字元**:請依照[名稱過長的處理步驟](https://code.claude.com/docs/zh-TW/errors.md#mcp-tool-name-over-128-characters)操作314* **工具的完整名稱超過 128 個字元**:請依照[名稱過長的處理步驟](https://code.claude.com/docs/zh-TW/errors.md#mcp-tool-name-over-128-characters)
315* **伺服器將該工具列給自己的介面使用,而非給 Claude 使用**:若您維護該伺服器,請在工具的 `_meta.ui.visibility` 中加入 `model`,將該工具提供給 Claude。否則,沒有需要修正之處。315* **伺服器將該工具列給自己的介面使用,而非給 Claude**:若您維護該伺服器,請在工具的 `_meta.ui.visibility` 中加入 `model`,讓 Claude 可使用該工具。否則,無須修正任何東西。
316 316
317##### 來自仍在連線中的伺服器的工具317##### 來自仍在連線中之伺服器的工具
318 318
319若您的請求需要來自仍在背景連線中的伺服器的工具,Claude 會等待該伺服器後再繼續。等待的方式取決於您的設定:319若您的請求需要來自仍在背景連線中之伺服器的工具,Claude 會等待該伺服器後再繼續。等待的方式取決於您的設定:
320 320
321* **使用[工具搜尋](#scale-with-mcp-tool-search)(預設)**:等待發生在 `ToolSearch` 呼叫內。321* **使用[工具搜尋](#scale-with-mcp-tool-search)(預設)時**:等待發生在 `ToolSearch` 呼叫內。
322* **不使用工具搜尋**:Claude 改為使用 `WaitForMcpServers` 工具。不使用工具搜尋的設定包括 `ENABLE_TOOL_SEARCH=false`,以及在 Google Cloud 的 Agent Platform 上使用早於 Claude Opus 4.5、Claude Sonnet 4.5 和 Claude Haiku 4.5 的模型。關於 `ANTHROPIC_BASE_URL` 閘道,請參閱[透過 LLM 閘道使用工具搜尋](#tool-search-through-a-gateway)。322* **未使用工具搜尋時**:Claude 改用 `WaitForMcpServers` 工具。未使用工具搜尋的設定包括 `ENABLE_TOOL_SEARCH=false`,以及在 Google Cloud 的 Agent Platform 上使用早於 Claude Opus 4.5、Claude Sonnet 4.5 和 Claude Haiku 4.5 的模型。對於 `ANTHROPIC_BASE_URL` 閘道,請參閱[透過 LLM 閘道使用工具搜尋](#tool-search-through-a-gateway)。
323* **在 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 的下一個請求中變為可用。323* **在 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 的下一個請求中變為可用。
324 324
325啟用工具搜尋時,若伺服器在 Claude 工作期間完成連線,Claude Code 會在同一回合中 Claude 的下一個請求裡,向 Claude 列出該伺服器的工具名稱。Claude 隨後即可搜尋並呼叫這些工具,而無需等待您的下一則訊息。325啟用工具搜尋時,若伺服器在 Claude 工作期間完成連線,Claude Code 會在同一回合中的下一個請求向 Claude 列出該伺服器的工具名稱。Claude 接著就能搜尋並呼叫這些工具,無須等待您的下一則訊息。
326 326
327在您恢復工作階段後,Claude 可能會在某工具的 MCP 伺服器仍在連線時,呼叫已儲存對話中的該工具。當伺服器正在進行第一次連線嘗試時,Claude Code 會將呼叫保留最多 10 秒,並在工具可用時執行它。若伺服器未及時連線,或已在[失敗嘗試後重試中](#automatic-reconnection),該呼叫會以 `No such tool available` [工具錯誤](https://code.claude.com/docs/zh-TW/errors.md#no-such-tool-available)失敗。327在您恢復工作階段後,Claude 可以在工具的 MCP 伺服器仍在連線時,呼叫已儲存對話中的工具。當伺服器處於第一次連線嘗試時,Claude Code 會將呼叫保留最多 10 秒,並在工具可用後執行。若伺服器未及時連線,或已處於[失敗嘗試後的重試](#automatic-reconnection)中,呼叫會以 `No such tool available` [工具錯誤](https://code.claude.com/docs/zh-TW/errors.md#no-such-tool-available)失敗。
328 328
329### 停用伺服器而不移除它329### 停用伺服器而不移除
330 330
331在 `/mcp` 面板中關閉伺服器,可阻止 Claude Code 連線至該伺服器,而不會遺失其設定。Claude Code 仍會在 `/mcp` 中列出該伺服器,並標示為已停用。331在 `/mcp` 面板中關閉伺服器,即可讓 Claude Code 停止連線到它,同時不會遺失其設定。Claude Code 仍會在 `/mcp` 中列出該伺服器,並標示為已停用。
332 332
333當您切換伺服器時,Claude Code 會依專案將您的選擇記錄在 `~/.claude.json` 中的兩個清單之一,這兩個清單涵蓋互不重疊的伺服器集合:333當您切換伺服器時,Claude Code 會依專案將您的選擇記錄在 `~/.claude.json` 中,存放於兩份清單之一,兩者涵蓋互不重疊的伺服器集合:
334 334
335* `disabledMcpServers`:選擇退出清單,適用於使用者設定的伺服器、外掛伺服器、您的組織[透過受管設定提供的伺服器](https://code.claude.com/docs/zh-TW/managed-mcp.md#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`。335* `disabledMcpServers`:選擇退出清單,適用於使用者設定的伺服器、外掛伺服器、您的組織[透過受管設定提供](https://code.claude.com/docs/zh-TW/managed-mcp.md#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`。
336* `enabledMcpServers`:選擇加入清單,適用於預設關閉的內建伺服器,例如 `computer-use`。Claude Code 只有在您將預設關閉的伺服器列在此處時才會連線至它。336* `enabledMcpServers`:選擇加入清單,適用於預設為關閉的內建伺服器,例如 `computer-use`。Claude Code 只有在您於此列出預設關閉的伺服器時才會連線到它。
337 337
338Claude Code 對每個伺服器只會查閱兩個清單中的其中一個,因此任一清單都不會覆寫另一個。若您將一般伺服器加入 `enabledMcpServers`,或將預設關閉的內建伺服器加入 `disabledMcpServers`,Claude Code 會忽略該項目。338Claude Code 對每個伺服器只會參考這兩份清單中的其中一份,因此兩份清單不會互相覆寫。若您將一般伺服器加入 `enabledMcpServers`,或將預設關閉的內建伺服器加入 `disabledMcpServers`,Claude Code 會忽略該項目。
339 339
340`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 及 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,後兩者控制的是專案 `.mcp.json` 檔案中所定義伺服器的核准。340`disabledMcpServers` 和 `enabledMcpServers` 與 [`enabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#enabledmcpjsonservers) 和 [`disabledMcpjsonServers`](https://code.claude.com/docs/zh-TW/settings-reference#disabledmcpjsonservers) 無關,後兩者控制的是專案 `.mcp.json` 檔案中所定義伺服器的核准。
341 341
342### MCP 用戶端執行環境342### MCP 用戶端執行環境
343 343
344Claude 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 執行環境。344Claude 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 執行環境的章節外,本頁其餘內容適用於兩種執行環境。
345 345
346Claude Code 每次啟動時都會選擇一種執行環境,並持續使用直到您結束。在會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching)的工作階段中,Claude Code v2.1.232 或更新版本會使用 v2 執行環境。346Claude Code 每次啟動時都會挑選一種執行環境,並保持使用直到您結束為止。在它會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching)的工作階段中,它會在 Claude Code v2.1.232 或更新版本上使用 v2 執行環境。
347 347
348在不擷取功能旗標的工作階段中,Claude Code v2.1.274 或更新版本預設使用 v2 執行環境:348在不會擷取功能旗標的工作階段中,Claude Code 在 Claude Code v2.1.274 或更新版本上預設使用 v2 執行環境:
349 349
350* 在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段,除非內嵌 Claude Code 的主機平台設定了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars)350* 在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的工作階段,除非內嵌 Claude Code 的主機平台設定了 [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/zh-TW/env-vars)
351* 透過 [Claude apps 閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)登入的工作階段351* 透過 [Claude apps 閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)登入的工作階段
352* 您關閉遙測或功能旗標擷取的工作階段,例如使用 `DISABLE_TELEMETRY`352* 您關閉遙測或功能旗標擷取的工作階段,例如使用 `DISABLE_TELEMETRY`
353 353
354在 v2 上,Claude Code 還會:354在 v2 上,Claude Code 也會:
355 355
356* 詢問 HTTP、stdio 和 claude.ai 連接器伺服器是否支援較新的修訂版,並與支援的伺服器使用該修訂版。這包括雲端和 [Remote Control](https://code.claude.com/docs/zh-TW/remote-control.md) 工作階段的連接器。Claude Code 會以與 v1 相同的方式連線至其他所有伺服器。356* 詢問 HTTP、stdio 和 claude.ai 連接器伺服器是否支援較新的修訂版,並對支援者使用它。這包括雲端和 [Remote Control](https://code.claude.com/docs/zh-TW/remote-control.md) 工作階段的連接器。Claude Code 與其他所有伺服器的連線方式與 v1 相同。
357* 透過[保持開啟的串流](#notification-streams-on-the-v2-runtime),從使用較新修訂版的伺服器接收 `list_changed` 通知。357* 透過[它保持開啟的串流](#notification-streams-on-the-v2-runtime),從使用較新修訂版的伺服器接收 `list_changed` 通知。
358* 不會註冊以較新修訂版連線的[頻道](#push-messages-with-channels)伺服器,因為該修訂版無法承載頻道訊息。358* 不會註冊以較新修訂版連線的[頻道](#push-messages-with-channels)伺服器,因為該修訂版無法承載頻道訊息。
359* 當[MCP OAuth 登入](#authenticate-with-remote-mcp-servers)的授權回應指名了非預期的發行者時,使登入失敗。359* 當授權回應指出非預期的簽發者時,讓 [MCP OAuth 登入](#authenticate-with-remote-mcp-servers)失敗。
360* 只將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 憑證傳送至透過 HTTPS 提供服務,或位於 `localhost`、`127.0.0.1` 或 `::1` 的 token 端點。對於 token 端點在其他任何位置使用純 `http://` 的伺服器(例如您本機網路上的裝置),登入會失敗。請參閱 [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/zh-TW/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)。360* 只將 [MCP OAuth](#authenticate-with-remote-mcp-servers) 憑證傳送到透過 HTTPS 提供,或位於 `localhost`、`127.0.0.1` 或 `::1` 的 token 端點。若伺服器的 token 端點在其他任何位置使用純 `http://`(例如您區域網路上的裝置),登入會失敗。請參閱 [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/zh-TW/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint)。
361 361
362Anthropic 可以透過 Claude Code 擷取的功能旗標,讓特定伺服器維持使用較早的協定,或不使用該串流。若要自行選擇執行環境,請將 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `v1` 或 `v2`。362Anthropic 可以透過 Claude Code 擷取的功能旗標,讓特定伺服器維持使用較早的協定,或不使用該串流。若要自行挑選執行環境,請將 [`MCP_SDK_GENERATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `v1` 或 `v2`。
363 363
364若要決定 Claude Code 是否詢問伺服器較新的修訂版,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `auto` 或 `legacy`。在未設定該變數時,Claude Code 可能會在 7 天內略過詢問某個 stdio 伺服器,例如在該伺服器被詢問時結束之後。若要讓已升級的伺服器更快被詢問,請設為 `auto`。364若要決定 Claude Code 是否詢問伺服器關於較新修訂版的支援,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `auto` 或 `legacy`。未設定該變數時,Claude Code 可能會在 7 天內略過詢問某個 stdio 伺服器,例如在伺服器被詢問時結束之後。若要讓已升級的伺服器更早被詢問,請設為 `auto`。
365 365
366### 動態工具更新366### 動態工具更新
367 367
368MCP 伺服器可以在連線期間變更其提供的工具、提示詞或資源,並傳送 `list_changed` 通知。收到通知時:368MCP 伺服器可以在連線期間變更其提供的工具、提示詞或資源,並傳送 `list_changed` 通知。通知到達時:
369 369
370* **在互動式終端機工作階段中**,Claude Code 會從該伺服器擷取更新後的清單,因此您無需重新連線。370* **在互動式終端機工作階段中**,Claude Code 會從該伺服器擷取更新後的清單,因此您無須重新連線。
371* **在使用 `-p` 旗標的[非互動模式](https://code.claude.com/docs/zh-TW/headless.md)及 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 中**,Claude Code 收到這些通知時只會重新整理工具清單。371* **在使用 `-p` 旗標的[非互動模式](https://code.claude.com/docs/zh-TW/headless.md)和 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 中**,Claude Code 在收到這些通知時只會重新整理工具清單。
372 372
373若重新整理請求失敗,Claude Code 會保留該伺服器先前探索到的工具、提示詞和資源,直到之後的重新整理成功為止。373若重新整理請求失敗,Claude Code 會保留該伺服器先前探索到的工具、提示詞和資源,直到之後的重新整理成功為止。
374 374
375#### v2 執行環境上的通知串流375#### v2 執行環境上的通知串流
376 376
377在 [v2 執行環境](#mcp-client-runtimes)上,Claude Code 會透過保持開啟的串流,從使用較新協定修訂版的伺服器接收 `list_changed` 通知。串流關閉時,Claude Code 會重新開啟它,但有兩項限制:377在 [v2 執行環境](#mcp-client-runtimes)上,Claude Code 會透過它保持開啟的串流,從使用較新協定修訂版的伺服器接收 `list_changed` 通知。當串流關閉時,Claude Code 會重新開啟它,但有兩項限制:
378 378
379* **串流在 10 秒內再次關閉**:Claude Code 最多重新開啟三次,之後對該連線停止重新開啟。379* **串流在 10 秒內再次關閉**:Claude Code 最多重新開啟三次,之後就對該連線停止。
380* **串流保持開啟超過 10 秒後才關閉**(連至無伺服器主機的串流通常如此):在一小時內重新開啟五次後,Claude Code 會等待約六小時才進行下一次。380* **串流保持開啟超過 10 秒後才關閉**(連到無伺服器主機的串流常見此情形):在一小時內重新開啟五次後,Claude Code 會等待約六小時才進行下一次。
381 381
382在串流重新開啟之前,您會保留該伺服器最後擷取的工具、提示詞和資源。若要更快取得其變更,請從 `/mcp` 重新連線該伺服器。382在串流重新開啟之前,您會保留該伺服器最後擷取的工具、提示詞和資源。若要更早取得其變更,請從 `/mcp` 重新連線該伺服器。
383 383
384### 自動重新連線384### 自動重新連線
385 385
386Claude Code 會重新連線在工作階段中途斷線的遠端伺服器,並在發生暫時性錯誤後重試 HTTP 或 SSE 伺服器的第一次連線。關於 stdio 伺服器,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)。386Claude Code 會重新連線在工作階段中途中斷的遠端伺服器,並在暫時性錯誤後重試 HTTP 或 SSE 伺服器的首次連線。對於 stdio 伺服器,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)。
387 387
388#### 遠端伺服器在工作階段中途斷線388#### 遠端伺服器在工作階段中途中斷
389 389
390Claude Code 會先以指數退避嘗試重新連線斷線的遠端伺服器最多五次,從一秒延遲開始,每次加倍:390Claude Code 會先以指數退避嘗試重新連線中斷的遠端伺服器最多五次,從一秒延遲開始,每次加倍:
391 391
392* **在互動式工作階段中**:Claude Code 重新連線時,`/mcp` 會將該伺服器顯示為擱置中。五次嘗試都失敗後,Claude Code 會將該伺服器標示為失敗,或在伺服器需要重新授權時標示為需要身分驗證。標示為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。392* **在互動式工作階段中**:Claude Code 重新連線期間,`/mcp` 會將該伺服器顯示為待處理。五次嘗試失敗後,Claude Code 會將該伺服器標記為失敗,或在伺服器需要重新授權時標記為需要身分驗證。當它將伺服器標記為失敗時,您會看到 `MCP server "<name>" disconnected · open /mcp to reconnect` 通知。您可以從 `/mcp` 手動重試。
393* **在 [`claude -p`](https://code.claude.com/docs/zh-TW/headless) 執行和 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段中**:Claude Code 會進行相同的五次嘗試,但沒有 `/mcp` 面板可顯示。若五次都失敗,執行會在沒有該伺服器工具的情況下繼續:393* **在 [`claude -p`](https://code.claude.com/docs/zh-TW/headless) 執行和 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段中**:Claude Code 會進行相同的五次嘗試,但沒有 `/mcp` 面板可顯示。若五次皆失敗,執行會在沒有該伺服器工具的情況下繼續:
394 * **在暫時性錯誤之後,例如 5xx 回應或逾時**:Claude Code 會在背景持續重試 HTTP 或 SSE 伺服器。重試最多持續約半小時,當其中一次連線成功時,該伺服器的工具會再次變為可用。在此之前,Agent SDK 工作階段會回報[狀態](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) `failed`,而您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。若要在 `claude -p` 中重新連線,請重新開始執行。394 * **在暫時性錯誤之後,例如 5xx 回應或逾時**:Claude Code 會在背景持續重試 HTTP 或 SSE 伺服器。重試最多持續約半小時,當某次連線成功時,該伺服器的工具會再次可用。在此之前,Agent SDK 工作階段會回報[狀態](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) `failed`,而您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。若要在 `claude -p` 中重新連線,請重新開始執行。
395 * **當伺服器[需要您重新登入](#authenticate-with-remote-mcp-servers)時**:Claude Code 會停止重試,Agent SDK 工作階段會將該伺服器的狀態回報為 `needs-auth`。請在您的 shell 中使用 [`claude mcp login <name>`](#authenticate-from-the-command-line) 登入。然後重新開始執行,或在 Agent SDK 工作階段中改為[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。395 * **當伺服器[需要您重新登入](#authenticate-with-remote-mcp-servers)時**:Claude Code 會停止重試,且 Agent SDK 工作階段會將該伺服器的狀態回報為 `needs-auth`。請在您的 shell 中使用 [`claude mcp login <name>`](#authenticate-from-the-command-line) 登入。然後重新開始執行,或在 Agent SDK 工作階段中改為[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling)。
396 396
397#### 第一次連線失敗397#### 首次連線失敗
398 398
399當 HTTP 或 SSE 伺服器的第一次連線因暫時性錯誤(例如 5xx 回應、連線被拒或逾時)而失敗時,Claude Code 最多會重試三次。若連線仍然失敗,Claude Code 會將該伺服器標示為失敗。399當 HTTP 或 SSE 伺服器的首次連線因暫時性錯誤(例如 5xx 回應、連線被拒或逾時)而失敗時,Claude Code 最多重試三次。若連線仍然失敗,Claude Code 會將該伺服器標記為失敗。
400 400
401這些重試在以下情況不適用:401這些重試不適用於下列情況:
402 402
403* stdio 伺服器的第一次連線。若要再試一次,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)403* stdio 伺服器的首次連線。若要再次嘗試,請參閱[結束或無法啟動的 stdio 伺服器](#stdio-servers-that-exit-or-fail-to-start)
404* WebSocket 伺服器的第一次連線。若要在互動式終端機工作階段中再試一次,請從 `/mcp` 中該伺服器的選單選取 **Reconnect**404* WebSocket 伺服器的首次連線。若要在互動式終端機工作階段中再次嘗試,請從 `/mcp` 中該伺服器的選單選取 **Reconnect**
405* 身分驗證或找不到的錯誤,因為這需要變更設定才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是伺服器 `Authorization` 標頭的唯一來源時,Claude Code 仍會重試身分驗證錯誤,因為它在每次嘗試時都會重新執行該 helper,並可能取得新的憑證405* 身分驗證錯誤或找不到錯誤,因為這需要變更設定才能解決。當 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 是伺服器 `Authorization` 標頭的唯一來源時,Claude Code 仍會重試身分驗證錯誤,因為它會在每次嘗試時重新執行該輔助程式,並可取得新的憑證
406 406
407#### 結束或無法啟動的 stdio 伺服器407#### 結束或無法啟動的 stdio 伺服器
408 408
409若要重新啟動 stdio 伺服器,請閱讀符合其發生情況的欄位。請依您執行 Claude Code 的方式找到對應的列:互動式工作階段、`claude -p` 執行或 Agent SDK 工作階段。409若要再次啟動 stdio 伺服器,請閱讀與其發生情況相符的欄位。依您執行 Claude Code 的方式找到對應的列:互動式工作階段、`claude -p` 執行,或 Agent SDK 工作階段。
410 410
411| 您執行 Claude Code 的方式 | 伺服器程序在工作階段中途結束 | 伺服器的第一次連線失敗 |411| 您執行 Claude Code 的方式 | 伺服器程序在工作階段中途結束 | 伺服器的首次連線失敗 |
412| - | - | - |412| - | - | - |
413| 互動式工作階段 | Claude Code 將該伺服器標示為失敗。若要重新啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** | Claude Code 將該伺服器標示為失敗。若要重新啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** |413| 互動式工作階段 | Claude Code 會將該伺服器標記為失敗。若要再次啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** | Claude Code 會將該伺服器標記為失敗。若要再次啟動,請從 `/mcp` 中該伺服器的選單選取 **Reconnect** |
414| `claude -p` 執行 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時重新啟動伺服器,並在伺服器連線後執行該呼叫 | 執行會在沒有該伺服器工具的情況下繼續。若要讓 Claude Code 再次嘗試連線,請重新開始執行。當伺服器由外掛提供時,新的執行會在失敗後 15 分鐘內略過連線,因此請先等待這段時間,或[更早重試](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached) |414| `claude -p` 執行 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時再次啟動伺服器,並在伺服器連線後執行該呼叫 | 執行會在沒有該伺服器工具的情況下繼續。若要讓 Claude Code 再次嘗試連線,請重新開始執行。當伺服器由外掛提供時,新的執行會在失敗後 15 分鐘內略過連線,因此請先等待這段時間,或[更早重試](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached) |
415| Agent SDK 工作階段 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時重新啟動伺服器,並在伺服器連線後執行該呼叫 | 工作階段會在沒有該伺服器工具的情況下繼續。您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) |415| Agent SDK 工作階段 | Claude Code 會在 Claude 下次呼叫該伺服器的某個工具時再次啟動伺服器,並在伺服器連線後執行該呼叫 | 工作階段會在沒有該伺服器工具的情況下繼續。您的程式碼可以[重新連線該伺服器](https://code.claude.com/docs/zh-TW/agent-sdk/mcp.md#error-handling) |
416 416
417#### 探索請求失敗417#### 探索請求失敗
418 418
419伺服器連線後,Claude Code 會向其傳送能力探索請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。發生暫時性網路或伺服器錯誤後,Claude Code 會以短暫退避重試這些請求最多三次。它不會重試身分驗證錯誤、4xx 回應或請求逾時。419伺服器連線後,Claude Code 會向其傳送能力探索請求,例如 `tools/list`、`prompts/list` 和 `resources/list`。在暫時性網路或伺服器錯誤後,Claude Code 會以短暫退避重試這些請求最多三次。它不會重試身分驗證錯誤、4xx 回應或請求逾時。
420 420
421#### 自行重試失敗的伺服器421#### 自行重試失敗的伺服器
422 422
423若要重試每個失敗或需要身分驗證的伺服器,請在互動式終端機工作階段的 Claude Code 提示字元執行 `/mcp reconnect all`。這需要 Claude Code v2.1.284 或更新版本。較早的版本會印出 `MCP server "all" not found`。423若要重試每個失敗或需要身分驗證的伺服器,請在互動式終端機工作階段中,於 Claude Code 提示字元執行 `/mcp reconnect all`。這需要 Claude Code v2.1.284 或更新版本。較早的版本會印出 `MCP server "all" not found`。
424 424
425#### Claude 如何得知伺服器失敗425#### Claude 如何得知伺服器失敗
426 426
427Claude Code 是否會告知 Claude 某個已設定的伺服器連線失敗,取決於[工具搜尋](#scale-with-mcp-tool-search),該功能預設為開啟:427Claude Code 是否告知 Claude 某個已設定的伺服器連線失敗,取決於預設開啟的[工具搜尋](#scale-with-mcp-tool-search):
428 428
429* 使用工具搜尋時,Claude Code 會告知 Claude 哪個伺服器失敗及其連線錯誤,因此 Claude 會在其回應中回報連線失敗。Claude Code 也會在找不到相符工具的 `ToolSearch` 結果中包含相同的資訊。429* 使用工具搜尋時,Claude Code 會告訴 Claude 哪個伺服器失敗及其連線錯誤,因此 Claude 會在回應中回報連線失敗。Claude Code 也會在找不到相符工具的 `ToolSearch` 結果中包含相同資訊。
430* 在任何[不使用工具搜尋的設定](#configure-tool-search)中,Claude Code 不會向 Claude 回報失敗的伺服器連線。430* 在任何[未使用工具搜尋的設定](#configure-tool-search)中,Claude Code 不會向 Claude 回報伺服器連線失敗。
431 431
432### 使用頻道推送訊息432### 透過頻道推送訊息
433 433
434MCP 伺服器也可以直接將訊息推送到您的工作階段中,讓 Claude 能對外部事件做出反應,例如 CI 結果、監控警示或聊天訊息。若要啟用此功能,您的伺服器需宣告 `claude/channel` 能力,並由您在啟動時以 `--channels` 旗標選擇加入。請參閱[頻道](https://code.claude.com/docs/zh-TW/channels.md)以使用官方支援的頻道,或參閱[頻道參考](https://code.claude.com/docs/zh-TW/channels-reference.md)以建立您自己的頻道。434MCP 伺服器也可以將訊息直接推送到您的工作階段中,讓 Claude 對外部事件(例如 CI 結果、監控警示或聊天訊息)做出反應。若要啟用此功能,您的伺服器需宣告 `claude/channel` 能力,並由您在啟動時以 `--channels` 旗標選擇加入。請參閱[頻道](https://code.claude.com/docs/zh-TW/channels.md)以使用官方支援的頻道,或參閱[頻道參考](https://code.claude.com/docs/zh-TW/channels-reference.md)以建立您自己的頻道。
435 435
436在 [v2 執行環境](#mcp-client-runtimes)上,協商使用 MCP 協定修訂版 2026-07-28 的頻道伺服器無法傳遞頻道訊息,因此 Claude Code 不會將其註冊為頻道。不支援該修訂版的頻道伺服器會以較早的交握方式連線,並如往常一樣註冊。436在 [v2 執行環境](#mcp-client-runtimes)上,協商 MCP 協定修訂版 2026-07-28 的頻道伺服器無法傳遞頻道訊息,因此 Claude Code 不會將其註冊為頻道。不支援該修訂版的頻道伺服器會以較早的交握方式連線,並如先前一樣註冊。
437 437
438Claude Code 預設會向 stdio 伺服器要求該修訂版。若要讓 stdio 頻道伺服器維持使用較早的交握方式,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `legacy`,這會讓所有伺服器都維持使用較早的交握方式。438Claude Code 預設會向 stdio 伺服器詢問該修訂版。若要讓 stdio 頻道伺服器維持使用較早的交握方式,請將 [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `legacy`,這會讓所有伺服器都維持使用它。
439 439
440> [!TIP]440> [!TIP]
441>441>
447> * `user`:在所有專案中供您使用447> * `user`:在所有專案中供您使用
448> * 使用 `-e` 或 `--env` 旗標設定環境變數(例如 `-e KEY=value`)448> * 使用 `-e` 或 `--env` 旗標設定環境變數(例如 `-e KEY=value`)
449> * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 簡寫形式449> * `--transport` 和 `--header` 旗標也接受 `-t` 和 `-H` 簡寫形式
450> * 使用 `MCP_TIMEOUT` 環境變數設定 MCP 伺服器啟動逾時(例如 `MCP_TIMEOUT=10000 claude` 會設定 10 秒逾時)450> * 使用 `MCP_TIMEOUT` 環境變數設定 MCP 伺服器啟動逾時(例如 `MCP_TIMEOUT=10000 claude` 會設定 10 秒的逾時)
451> * 在該伺服器的 `.mcp.json` 項目中加入以毫秒為單位的 `timeout` 欄位,即可為個別伺服器設定工具執行逾時,例如 `"timeout": 600000` 代表十分鐘。這只會針對該伺服器覆寫 `MCP_TOOL_TIMEOUT` 環境變數451> * 在該伺服器的 `.mcp.json` 項目中加入以毫秒為單位的 `timeout` 欄位,即可設定每個伺服器的工具執行逾時,例如 `"timeout": 600000` 代表十分鐘。這只會針對該伺服器覆寫 `MCP_TOOL_TIMEOUT` 環境變數
452> * 當 MCP 工具輸出超過 10,000 個 token 時,Claude Code 會顯示警告,且預設將輸出限制在 25,000 個 token。若要變更 token 限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數,例如 `MAX_MCP_OUTPUT_TOKENS=50000`。警告閾值是固定的。除非伺服器提高了工具本身的限制,否則超過 50,000 個字元的成功文字結果無論此變數為何都會儲存至檔案。請參閱 [MCP 輸出限制與警告](#mcp-output-limits-and-warnings)452> * 當 MCP 工具輸出超過 10,000 個 token 時,Claude Code 會顯示警告,且預設將輸出限制為 25,000 個 token。若要變更 token 上限,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數,例如 `MAX_MCP_OUTPUT_TOKENS=50000`。警告門檻是固定的。除非伺服器提高了工具本身的上限,否則超過 50,000 個字元的成功文字結果無論此變數為何都會儲存到檔案中。請參閱 [MCP 輸出上限與警告](#mcp-output-limits-and-warnings)
453> * 使用 `/mcp` 向需要 OAuth 2.0 身分驗證的遠端伺服器進行身分驗證453> * 使用 `/mcp` 向需要 OAuth 2.0 身分驗證的遠端伺服器進行驗證
454 454
455### MCP 工具呼叫的時間限制455### MCP 工具呼叫的時間限制
456 456
457若要限制 MCP 工具呼叫可執行的時間長度:457若要限制 MCP 工具呼叫可執行的時間:
458 458
459* **個別伺服器**:在該伺服器的設定項目中加入以毫秒為單位的 `timeout` 欄位459* **依伺服器**:在該伺服器的設定項目中加入以毫秒為單位的 `timeout` 欄位
460* **所有伺服器**:設定 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)460* **跨所有伺服器**:設定 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars)
461 461
462個別伺服器的 `timeout` 是每次工具呼叫的硬性實際時間限制,伺服器的進度通知不會延長它。低於 1000 的值會被忽略,並改用 `MCP_TOOL_TIMEOUT`,若該變數未設定,則改用其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)伺服器,還有第二個針對每個請求的計時器,涵蓋每個請求直到收到伺服器的第一個回應位元組為止。Claude Code 會將該計時器設為三個值中的最大值:60 秒、適用於該伺服器的工具逾時,以及 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 時的 28 小時預設值不會納入該比較,且低於 60 秒的值不會縮短該計時器。Stdio 和 WebSocket 伺服器沒有針對每個請求的計時器。462每伺服器的 `timeout` 是每次工具呼叫的硬性實際時間上限,伺服器傳來的進度通知不會延長它。低於 1000 的值會被忽略,並改用 `MCP_TOOL_TIMEOUT`,若該變數未設定則使用其約 28 小時的預設值。對於 HTTP、SSE 或 [claude.ai 連接器](https://code.claude.com/docs/zh-TW/mcp.md#use-mcp-servers-from-claude-ai)伺服器,另外還有第二個每請求計時器,涵蓋每個請求直到伺服器回應的第一個位元組為止。Claude Code 會將該計時器設為三個值中的最大值:60 秒、適用於該伺服器的工具逾時,以及 `MCP_TIMEOUT`。未設定 `MCP_TOOL_TIMEOUT` 時的 28 小時預設值不參與該比較,而低於 60 秒的值也不會縮短該計時器。Stdio 和 WebSocket 伺服器沒有每請求計時器。
463 463
464至少為 1000 的個別伺服器 `timeout` 也會作為下述閒置逾時的下限:Claude Code 絕不會比個別伺服器的 `timeout` 更早因閒置而中止該伺服器的工具呼叫。464至少為 1000 的每伺服器 `timeout` 也會作為下述閒置逾時的下限:Claude Code 絕不會早於每伺服器 `timeout` 因閒置而中止該伺服器的工具呼叫。
465 465
466若 MCP 伺服器在閒置時間範圍內沒有傳送任何回應或進度通知,對其的工具呼叫會以錯誤中止,而不是等到實際時間限制。閒置逾時適用於 IDE 伺服器和 SDK 行程內伺服器以外的所有伺服器類型。閒置時間範圍預設為:HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器為五分鐘,stdio 伺服器為 30 分鐘。466對於在閒置時間窗內沒有傳送任何回應或進度通知的 MCP 伺服器,其工具呼叫會以錯誤中止,而不會等待實際時間上限。閒置逾時適用於除 IDE 伺服器和 SDK 程序內伺服器以外的所有伺服器類型。對於 HTTP、SSE、WebSocket 和 [claude.ai 連接器](#use-mcp-servers-from-claude-ai)伺服器,閒置時間窗預設為五分鐘;對於 stdio 伺服器則為 30 分鐘。
467 467
468請以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數來變更閒置時間範圍,或將其設為 `0` 以停用此檢查。468以毫秒為單位設定 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數可變更閒置時間窗,或將其設為 `0` 以停用該檢查。
469 469
470這些逾時限制的是呼叫可以執行多久,而不一定是它會阻擋工作階段多久:執行超過兩分鐘的主要對話呼叫會先移至背景任務。請參閱[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。470這些逾時限制的是呼叫可執行多久,而不一定是它阻擋工作階段多久:在主對話中執行超過兩分鐘的呼叫會先移至背景任務。請參閱[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)。
471 471
472### 長時間工具呼叫的自動背景化472### 長時間工具呼叫的自動背景化
473 473
474若背景呼叫在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中的詳細資訊檢視顯示 `runs on the server; survives exiting this session`,請參閱[在伺服器上執行的 MCP 任務](#mcp-tasks-that-run-on-the-server)。474若背景呼叫在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中的詳細資訊檢視顯示 `runs on the server; survives exiting this session`,請參閱[在伺服器上執行的 MCP 任務](#mcp-tasks-that-run-on-the-server)。
475 475
476主要對話中的 MCP 工具呼叫若在兩分鐘後仍在執行,會移至背景任務,而不會阻擋工作階段。Claude 會立即收到任務 ID 並繼續工作,呼叫結束時,結果會以任務通知的形式送達。476主對話中執行超過兩分鐘仍未完成的 MCP 工具呼叫,會移至背景任務,而不會阻擋工作階段。Claude 會立即收到任務 ID 並繼續工作,結果會在呼叫結束時以任務通知的形式送達。
477 477
478該任務會出現在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中,您也可以在那裡停止它,且它不會在結束工作階段後延續。任務的項目會顯示伺服器回報的最新進度。若您停止任務,Claude Code 會取消呼叫並告知 Claude 不會有結果。停止並不保證伺服器會停止:它可能已完成部分工作,或仍可能完成它。478該任務會出現在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中,您也可以在那裡停止它,且它不會在結束工作階段後保留。任務的項目會顯示伺服器回報的最新進度。若您停止任務,Claude Code 會取消呼叫並告訴 Claude 不會有結果。停止並不保證伺服器會停止:它可能已完成部分工作,或仍可能完成它。
479 479
480呼叫在背景執行時,每次呼叫的限制仍然適用:由個別伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的實際時間限制,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的閒置逾時。480呼叫在背景執行期間,每次呼叫的限制仍然適用:由每伺服器 `timeout` 或 [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的實際時間上限,以及由 [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/zh-TW/env-vars) 設定的閒置逾時。
481 481
482若要變更或關閉自動背景化:482若要變更或關閉自動背景化:
483 483
484* 以毫秒為單位設定 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數來變更閾值,或將其設為 `0` 以關閉自動背景化。設為 `0` 時,Claude 在互動式工作階段中也會[等待 MCP 任務](#make-claude-wait-for-the-result-of-an-mcp-task)484* 以毫秒為單位設定 [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 環境變數以變更門檻,或將其設為 `0` 以關閉自動背景化。設為 `0` 時,Claude 在互動式工作階段中也會[等待 MCP 任務](#make-claude-wait-for-the-result-of-an-mcp-task)
485* 將 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`,可關閉自動背景化和[背景命令](https://code.claude.com/docs/zh-TW/tools-reference.md#background-commands)485* 將 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`,以關閉自動背景化和[背景命令](https://code.claude.com/docs/zh-TW/tools-reference.md#background-commands)
486 486
487有些呼叫永遠不會移至背景:487有些呼叫永遠不會移至背景:
488 488
489* 來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 的呼叫;Claude Code 只會將主要對話的呼叫背景化489* 來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md) 的呼叫;Claude Code 只會將主對話的呼叫背景化
490* 對 IDE 伺服器的呼叫490* 對 IDE 伺服器的呼叫
491* [非互動模式](https://code.claude.com/docs/zh-TW/headless.md)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設為 `1`,因為單次執行可能在結果送達前就結束491* [非互動模式](https://code.claude.com/docs/zh-TW/headless.md)中的呼叫,除非 `CLAUDE_AUTO_BACKGROUND_TASKS` 設為 `1`,因為一次性執行可能在結果送達前就結束
492 492
493等待開啟中之[引導對話框](#respond-to-mcp-elicitation-requests)的呼叫,在對話框開啟期間不會被背景化;伺服器是在等待您的輸入,而不是速度慢,因此 Claude Code 會將移動延後至對話框關閉為止。493等待已開啟之[引導對話框](#respond-to-mcp-elicitation-requests)的呼叫,在對話框開啟期間不會被背景化;伺服器是在等待您的輸入,而非速度緩慢,因此 Claude Code 會將移動延後到對話框關閉之後。
494 494
495### 在伺服器上執行的 MCP 任務495### 在伺服器上執行的 MCP 任務
496 496
497MCP 任務是 MCP 伺服器使用 [MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)自行執行的長時間工作,例如報表匯出或建置。伺服器一接受該工作,Claude 的工具呼叫就會返回,因此除非您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),否則 Claude 會繼續工作。工作結束時,逐字稿會顯示此情況,而 Claude 會取得結果。請向 Claude 詢問結果。497MCP 任務是 MCP 伺服器使用 [MCP 任務擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)自行執行的長時間工作,例如報表匯出或建置。伺服器接受該工作後,Claude 的工具呼叫就會返回,因此除非您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),否則 Claude 會繼續工作。工作結束時,逐字稿會顯示此訊息,且 Claude 會取得結果。請向 Claude 要求結果。
498 498
499在此期間,頁尾會顯示如 `1 MCP task` 的計數,而 Claude Code 會透過向伺服器檢查其狀態來追蹤該任務。遠端伺服器上的任務在您結束後仍會繼續執行。若要再次追蹤它,請[恢復同一個工作階段](#exit-clear-or-resume-while-an-mcp-task-runs)。499在此期間,頁尾會顯示數量,例如 `1 MCP task`,而 Claude Code 會透過向伺服器檢查任務狀態來追蹤它。遠端伺服器上的任務在您結束後仍會繼續執行。若要再次追蹤它,請[恢復相同的工作階段](#exit-clear-or-resume-while-an-mcp-task-runs)。
500 500
501> [!NOTE]501> [!NOTE]
502>502>
503> MCP 任務在 Claude Code CLI 中處於公開測試版階段,需要 Claude Code v2.1.304 或更新版本。[呼叫成為 MCP 任務的條件](#requirements-for-mcp-tasks)列出了可使用它們的工作階段與伺服器。503> MCP 任務在 Claude Code CLI 中為公開測試版,需要 Claude Code v2.1.304 或更新版本。[呼叫成為 MCP 任務所需的條件](#requirements-for-mcp-tasks)列出了可使用此功能的工作階段與伺服器。
504 504
505#### 停止 MCP 任務或取得其結果505#### 停止 MCP 任務或取得其結果
506 506
507若要停止執行中的任務,請在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中選取它並按下 `x`,或請 Claude 停止它。Claude Code 會停止追蹤該任務並要求伺服器取消它,但伺服器仍可能完成它。請先從 `/mcp` 重新連線已中斷連線的伺服器,否則不會送出取消請求,且 Claude Code 會遺忘該任務而無法再次追蹤它。按下 `Esc` 不會停止背景任務。507若要停止執行中的任務,請在 [`/tasks`](https://code.claude.com/docs/zh-TW/commands#all-commands) 中選取它並按 `x`,或請 Claude 代為停止。Claude Code 會停止追蹤該任務並要求伺服器取消它,但伺服器仍可能完成它。請先從 `/mcp` 重新連線已中斷的伺服器,否則不會送出取消請求,且 Claude Code 會忘記該任務而無法再次追蹤。按 `Esc` 不會停止背景任務。
508 508
509任務結束時,逐字稿中會出現如下的一行:509任務結束時,逐字稿中會出現如下的一行:
510 510
512MCP task <server task id> (<server>/<tool>) completed.512MCP task <server task id> (<server>/<tool>) completed.
513```513```
514 514
515結果會傳給 Claude,而不是寫入逐字稿,因此請向 Claude 詢問結果。若結果送達時 Claude 處於閒置狀態,Claude 會主動開始處理它。515結果會送給 Claude,而非寫入逐字稿,因此請向 Claude 要求結果。若結果送達時 Claude 處於閒置狀態,Claude 會主動開始處理它。
516 516
517#### 回答來自 MCP 任務的問題517#### 回答來自 MCP 任務的問題
518 518
519執行中的任務可以開啟[引導對話框](#respond-to-mcp-elicitation-requests)來要求您輸入。當 `/tasks` 開啟時,對話框會保持隱藏,因此請關閉 `/tasks` 以作答。拒絕或按下 `Esc` 也是對伺服器的一種回答,伺服器隨後會決定任務是否繼續。519執行中的任務可以開啟[引導對話框](#respond-to-mcp-elicitation-requests)來請您提供輸入。`/tasks` 開啟期間,對話框會保持隱藏,因此請關閉 `/tasks` 以回答。拒絕或按 `Esc` 也是對伺服器的一種回答,伺服器接著會決定任務是否繼續。
520 520
521在[非互動](https://code.claude.com/docs/zh-TW/headless.md)工作階段中,Claude Code 會要求伺服器取消要求輸入的任務,而不會執行您的 [`Elicitation` hook](https://code.claude.com/docs/zh-TW/hooks#elicitation) 或呼叫 Agent SDK 的 `onElicitation` 回呼。521在[非互動](https://code.claude.com/docs/zh-TW/headless.md)工作階段中,Claude Code 會要求伺服器取消請求輸入的任務,而不會執行您的 [`Elicitation` hook](https://code.claude.com/docs/zh-TW/hooks#elicitation) 或呼叫 Agent SDK 的 `onElicitation` 回呼。
522 522
523#### 在 MCP 任務執行期間結束、清除或恢復523#### 在 MCP 任務執行期間結束、清除或恢復
524 524
525遠端伺服器上的任務在您結束後仍會繼續執行。stdio 伺服器的程序會在 Claude Code 結束時停止,儘管其任務在 `/tasks` 中顯示 `runs on the server; survives exiting this session`。除非該伺服器的文件表示工作會在程序結束後延續,否則請先讓這些任務完成,或在 `/tasks` 中停止它們。525遠端伺服器上的任務在您結束後仍會繼續執行。stdio 伺服器的程序會在 Claude Code 結束時停止,即使其任務在 `/tasks` 中顯示 `runs on the server; survives exiting this session`。除非該伺服器的文件說明工作會在程序結束後延續,否則請先讓這些任務完成,或在 `/tasks` 中停止它們。
526 526
527| 情況 | 任務會發生什麼事 | 您可以做什麼 |527| 情況 | 任務會發生什麼事 | 您可以怎麼做 |
528| - | - | - |528| - | - | - |
529| 您執行 `/clear` 或 `/branch`,或 `/resume` 另一個工作階段 | 只要 Claude Code 保持開啟,結果就會送達您目前的對話 | 結束之後,使用 `claude --resume` 恢復任務開始時所在的工作階段 |529| 您執行 `/clear` 或 `/branch`,或以 `/resume` 切換到另一個工作階段 | 在 Claude Code 保持開啟期間,結果會送達您目前的對話 | 結束之後,以 `claude --resume` 恢復任務開始時所在的工作階段 |
530| 您結束 Claude Code | 沒有任何結束選項會取消遠端伺服器的任務,即使結束對話框將其列在 `The following will stop when you exit:` 之下 | 先在 `/tasks` 中停止它,或稍後恢復同一個工作階段 |530| 您結束 Claude Code | 沒有任何結束選項會取消遠端伺服器的任務,即使結束對話框將其列在 `The following will stop when you exit:` 之下 | 先在 `/tasks` 中停止它,或稍後恢復相同的工作階段 |
531| 您以互動方式回到任務的工作階段:`claude --resume`、`claude --continue` 或 `/resume` | 伺服器連線後,Claude Code 會再次追蹤該任務;若任務在此期間已完成且伺服器仍知道它,Claude 會取得結果 | 保持伺服器的名稱和連線設定不變 |531| 您以互動方式返回任務的工作階段:`claude --resume`、`claude --continue` 或 `/resume` | 伺服器連線後,Claude Code 會再次追蹤該任務,若任務在此期間已完成且伺服器仍記得它,Claude 會取得結果 | 保持伺服器的名稱和連線設定不變 |
532| 您在單次 `claude -p "<prompt>"` 執行中使用 `--resume` 或 `--continue` 恢復任務的工作階段 | 該執行不會追蹤該任務 | 以互動方式恢復,或使用 `--input-format stream-json` 恢復 |532| 您在一次性 `claude -p "<prompt>"` 執行中以 `--resume` 或 `--continue` 恢復任務的工作階段 | 該次執行不會追蹤該任務 | 以互動方式恢復,或搭配 `--input-format stream-json` 恢復 |
533| 您開始新的工作階段或使用 `--fork-session` | 新的工作階段不會追蹤該任務 | 恢復啟動該任務的工作階段 |533| 您開始新的工作階段或使用 `--fork-session` | 新的工作階段不會追蹤該任務 | 恢復開始該任務的工作階段 |
534 534
535#### 呼叫成為 MCP 任務的條件535#### 呼叫成為 MCP 任務所需的條件
536 536
537只有在以下所有條件都成立時,工具呼叫才會成為 MCP 任務:537只有在以下所有條件皆成立時,工具呼叫才會成為 MCP 任務:
538 538
539* 伺服器支援任務539* 伺服器支援任務
540* 伺服器是以[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線的 HTTP、stdio 或 claude.ai 連接器伺服器。設定 [`MCP_SDK_GENERATION=v1` 或 `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/zh-TW/env-vars) 會排除此情況540* 伺服器是以[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線的 HTTP、stdio 或 claude.ai 連接器伺服器。設定 [`MCP_SDK_GENERATION=v1` 或 `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/zh-TW/env-vars) 會排除此條件
541* 工作階段會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching),因此不能在 Amazon Bedrock 等第三方供應商上,也不能關閉遙測或旗標擷取541* 工作階段會[擷取功能旗標](https://code.claude.com/docs/zh-TW/env-vars.md#features-that-need-feature-flag-fetching),因此不是在 Amazon Bedrock 之類的第三方供應商上,也未關閉遙測或旗標擷取
542* Anthropic 已為您這類工作階段開啟 MCP 任務。在 v2.1.304 或更新版本上,這涵蓋終端機 CLI 工作階段、[Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段和 [GitHub Actions](https://code.claude.com/docs/zh-TW/github-actions.md) 執行。其他使用介面,例如 [VS Code 擴充功能](https://code.claude.com/docs/zh-TW/vs-code.md)和[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),沒有 MCP 任務542* Anthropic 已為您這類工作階段開啟 MCP 任務。在 v2.1.304 或更新版本上,這涵蓋終端機 CLI 工作階段、[Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段和 [GitHub Actions](https://code.claude.com/docs/zh-TW/github-actions.md) 執行。其他使用介面,例如 [VS Code 擴充功能](https://code.claude.com/docs/zh-TW/vs-code.md)和[桌面應用程式](https://code.claude.com/docs/zh-TW/desktop.md),沒有 MCP 任務
543* 呼叫來自主要對話,而非來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md)543* 呼叫來自主對話,而非來自 [subagent](https://code.claude.com/docs/zh-TW/sub-agents.md)
544* 工作階段是互動式的,或者 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段或讀取 `--input-format stream-json` 的 `claude -p` 執行具備:544* 工作階段為互動式,或是讀取 `--input-format stream-json` 的 [Agent SDK](https://code.claude.com/docs/zh-TW/agent-sdk/overview.md) 工作階段或 `claude -p` 執行具備:
545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 為 `1`545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/zh-TW/env-vars) 為 `1`
546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` 不為 `1`546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` 不為 `1`
547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 不為 `0`547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 不為 `0`
548 548
549其他任何呼叫都是一般的工具呼叫,而[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)說明了其中哪些會移至背景。549其他任何呼叫都是一般工具呼叫,而[長時間工具呼叫的自動背景化](#automatic-backgrounding-of-long-tool-calls)說明了其中哪些會移至背景。
550 550
551請保持 Agent SDK 或 stream-json 工作階段的輸入開啟,因為輸入關閉後,執行[不會等待 MCP 任務](https://code.claude.com/docs/zh-TW/headless.md#mcp-work-when-a-non-interactive-run-ends)。單次 `claude -p "<prompt>"` 執行不會取得 MCP 任務。551請保持 Agent SDK 或 stream-json 工作階段的輸入開啟,因為輸入關閉後,執行[不會等待 MCP 任務](https://code.claude.com/docs/zh-TW/headless.md#mcp-work-when-a-non-interactive-run-ends)。一次性 `claude -p "<prompt>"` 執行不會有 MCP 任務。
552 552
553#### MCP 任務上的狀態訊息553#### MCP 任務的狀態訊息
554 554
555這些訊息出現在任務的 `/tasks` 項目或其結束的逐字稿行中,表示 Claude Code 無法連繫到伺服器或任務。當其中一則顯示在 `/tasks` 中時,該工作可能仍在執行:Claude Code 不會干預它,並持續檢查。`300s` 和設定相關的訊息即使在恢復聯繫後仍會保留在項目上。555這些訊息出現在任務的 `/tasks` 項目或其結束時的逐字稿行中,表示 Claude Code 無法連繫伺服器或任務。當其中一則訊息顯示在 `/tasks` 中時,工作可能仍在執行:Claude Code 不會干預它並持續檢查。`300s` 和設定相關訊息即使在恢復連繫後仍會留在項目上。
556 556
557| 訊息 | 發生了什麼事 | 您可以做什麼 |557| 訊息 | 發生了什麼事 | 您可以怎麼做 |
558| - | - | - |558| - | - | - |
559| `reconnecting…` | 恢復後伺服器尚未回應,或狀態檢查沒有得到回應 | 若持續顯示,請從 `/mcp` 重新連線 |559| `reconnecting…` | 自恢復以來伺服器尚未回應,或狀態檢查未獲回應 | 若持續出現,請從 `/mcp` 重新連線 |
560| `needs a sign-in to <server>` | 伺服器拒絕了狀態檢查 | 從 `/mcp` 登入 |560| `needs a sign-in to <server>` | 伺服器拒絕了狀態檢查 | 從 `/mcp` 登入 |
561| `status requests come back with errors; retrying…` | 伺服器或其前方的代理伺服器以錯誤回應狀態檢查 | 在 Claude Code 重試時等待 |561| `status requests come back with errors; retrying…` | 伺服器或其前方的代理伺服器以錯誤回應狀態檢查 | 在 Claude Code 重試期間等待 |
562| `server '<name>' did not reconnect within 300s` | 五分鐘內沒有任何得到回應的檢查,例如連線中斷或伺服器已停用 | 從 `/mcp` 重新連線 |562| `server '<name>' did not reconnect within 300s` | 五分鐘內沒有任何檢查獲得回應,例如連線中斷或伺服器已停用 | 從 `/mcp` 重新連線 |
563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | 五分鐘後伺服器仍要求登入 | 從 `/mcp` 登入 |563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | 五分鐘後伺服器仍要求登入 | 從 `/mcp` 登入 |
564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | 五分鐘內都是錯誤回應 | 檢查伺服器本身的健康狀態或日誌 |564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | 五分鐘內都是錯誤回應 | 檢查伺服器本身的健康狀況或日誌 |
565| `server '<name>' is not configured in this session; the task may still be running on it` | 工作階段中沒有該名稱的伺服器,例如它已被移除、重新命名或未包含在 `--mcp-config` 中,或 claude.ai 連接器仍在載入 | 以相同名稱還原該伺服器,然後再次恢復工作階段。若是載入中的連接器,則無需任何操作:連接器出現後,Claude Code 就會追蹤該任務 |565| `server '<name>' is not configured in this session; the task may still be running on it` | 工作階段中沒有該名稱的伺服器,例如它已被移除、重新命名或未包含在 `--mcp-config` 中,或某個 claude.ai 連接器仍在載入 | 以相同名稱還原該伺服器,然後再次恢復工作階段。若是載入中的連接器,則無須處理:Claude Code 會在它出現後追蹤該任務 |
566| 以 `server '<name>' was reconfigured to a different transport since this task was created` 開頭的訊息 | 存在該名稱的伺服器,但其連線設定自任務開始後已變更,例如其 URL、command、args、env、headers 或 timeout | 還原先前的設定,然後再次恢復工作階段 |566| 以 `server '<name>' was reconfigured to a different transport since this task was created` 開頭的訊息 | 存在該名稱的伺服器,但其連線設定自任務開始後已變更,例如其 URL、command、args、env、headers 或 timeout | 還原先前的設定,然後再次恢復工作階段 |
567| `the server rejected this task's id; asking again…` | 伺服器表示它不認識該任務 ID。Claude Code 會持續詢問最多五分鐘 | 等待:若伺服器再次識別該 ID,訊息就會清除,否則接著會出現 `outcome unknown.` 行 |567| `the server rejected this task's id; asking again…` | 伺服器表示它不認得該任務 ID。Claude Code 會持續詢問最多五分鐘 | 等待:若伺服器再次認得該 ID,訊息會清除,否則會接著出現 `outcome unknown.` 行 |
568| 以 `outcome unknown.` 結尾的逐字稿行,其中一種形式為 `expired on the server: outcome unknown.` | 伺服器拒絕了該 ID 或以其他永久性錯誤拒絕,且 Claude Code 已停止追蹤該任務 | 第二次呼叫可能會重複該工作。再次呼叫該工具之前,請向伺服器確認已完成的內容,例如請 Claude 使用該伺服器的其他工具 |568| 以 `outcome unknown.` 結尾的逐字稿行,其中一種形式為 `expired on the server: outcome unknown.` | 伺服器拒絕了該 ID,或以其他永久性錯誤拒絕,且 Claude Code 已停止追蹤該任務 | 再次呼叫可能會重複執行工作。在再次呼叫該工具之前,請從伺服器查明已完成哪些工作,例如請 Claude 使用該伺服器的其他工具 |
569 569
570#### MCP 任務的時間限制570#### MCP 任務的時間限制
571 571
572預設情況下,背景中的任務沒有 Claude Code 時間限制。[工具呼叫時間限制](#time-limits-on-mcp-tool-calls)(包括實際時間限制和閒置逾時)在伺服器以任務回應該呼叫之前適用。若您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),這些限制會在整個任務期間適用。得到回應的狀態檢查會計為閒置逾時的活動。572預設情況下,背景中的任務沒有 Claude Code 時間限制。[工具呼叫時間限制](#time-limits-on-mcp-tool-calls)(包括實際時間上限和閒置逾時)會持續適用,直到伺服器以任務回應該呼叫為止。若您[讓 Claude 等待](#make-claude-wait-for-the-result-of-an-mcp-task),這些限制會適用於整個任務。獲得回應的狀態檢查會計為閒置逾時的活動。
573 573
574#### 讓 Claude 等待 MCP 任務的結果574#### 讓 Claude 等待 MCP 任務的結果
575 575
576若要讓 Claude 在互動式工作階段中等待任務的結果,請設定以下兩個環境變數之一,例如在 [`settings.json`](https://code.claude.com/docs/zh-TW/settings) 的 `env` 區塊中:576若要在互動式工作階段中讓 Claude 等待任務結果,請設定兩個環境變數之一,例如在 [`settings.json`](https://code.claude.com/docs/zh-TW/settings) 的 `env` 區塊中:
577 577
578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `0`**:Claude 會等待每個 MCP 工具呼叫直到呼叫結束578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `0`**:Claude 會等待每個 MCP 工具呼叫直到呼叫結束
579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`**:Claude 會等待任務的結果。當[自動背景化](#automatic-backgrounding-of-long-tool-calls)開啟時,它預設會在兩分鐘後移動該呼叫,因此短任務會就地完成,長任務則不會阻擋您。被移動的呼叫是一般的背景呼叫,而非 MCP 任務。它不會在結束工作階段後延續579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/zh-TW/env-vars) 設為 `1`**:Claude 會等待任務的結果。在[自動背景化](#automatic-backgrounding-of-long-tool-calls)開啟期間,它預設會在兩分鐘後移動該呼叫,因此短任務會就地完成,而長任務不會阻擋您。被移動的呼叫是一般背景呼叫,而非 MCP 任務。它不會在結束工作階段後保留
580 580
581在 Claude 等待期間,按下 `Esc` 或達到[實際時間限制或閒置逾時](#time-limits-on-mcp-tasks)都會結束該呼叫,且 Claude Code 會要求伺服器取消該任務。581在 Claude 等待期間,按 `Esc` 或達到[實際時間上限或閒置逾時](#time-limits-on-mcp-tasks)會結束該呼叫,且 Claude Code 會要求伺服器取消該任務。
582 582
583若您將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 設為 `1` 或以 [bare 模式](https://code.claude.com/docs/zh-TW/headless.md#start-faster-with-bare-mode)啟動,僅此並不會讓 Claude 等待 MCP 任務。此範例將 `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 設為 `0`,因此 Claude 會等待每個 MCP 工具呼叫:583若您將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 設為 `1` 或以 [bare 模式](https://code.claude.com/docs/zh-TW/headless.md#start-faster-with-bare-mode)啟動,光是這樣並不會讓 Claude 等待 MCP 任務。此範例將 `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` 設為 `0`,因此 Claude 會等待每個 MCP 工具呼叫:
584 584
585```json settings.json theme={null}585```json settings.json theme={null}
586{586{
590}590}
591```591```
592 592
593### 供伺服器作者參考的 MCP 任務593### 給伺服器作者的 MCP 任務說明
594 594
595若您建置 MCP 伺服器,可以用任務來回應長時間執行的 `tools/call`。[MCP tasks 擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)定義了您要傳送的訊息。在[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線上,每個請求都會在 `params._meta["io.modelcontextprotocol/clientCapabilities"]` 攜帶 Claude Code 的用戶端能力,並在 `extensions` 下包含 `"io.modelcontextprotocol/tasks": {}`。[無法成為任務](#requirements-for-mcp-tasks)的 `tools/call` 請求會省略該擴充功能。595若您建置 MCP 伺服器,您可以用任務回應長時間執行的 `tools/call`。[MCP 任務擴充功能](https://modelcontextprotocol.io/extensions/tasks/overview)定義了您要傳送的訊息。在[協定修訂版 2026-07-28](#mcp-client-runtimes) 連線上,每個請求都會在 `params._meta["io.modelcontextprotocol/clientCapabilities"]` 中帶有 Claude Code 的用戶端能力,並在 `extensions` 下包含 `"io.modelcontextprotocol/tasks": {}`。[無法成為任務](#requirements-for-mcp-tasks)的 `tools/call` 請求會省略該擴充功能。
596 596
597#### 以任務回應呼叫597#### 以任務回應呼叫
598 598
599只有在請求攜帶該擴充功能時才以任務回應,否則呼叫會以工具錯誤 `Unsupported result type 'task' for tools/call` 失敗。若您的回應沒有 `taskId` 或沒有有效的 `status`,呼叫也會以相同方式失敗。任務物件是您 `tools/call` 回應的 JSON-RPC `result`,不需要 `content` 陣列,此處也包含選用的 `statusMessage` 和 `pollIntervalMs`:599只有在請求帶有該擴充功能時才以任務回應,否則呼叫會以工具錯誤 `Unsupported result type 'task' for tools/call` 失敗。若您的回應沒有 `taskId` 或沒有有效的 `status`,呼叫也會以相同方式失敗。任務物件是您 `tools/call` 回應的 JSON-RPC `result`,不需要 `content` 陣列,此處還包含選用的 `statusMessage` 和 `pollIntervalMs`:
600 600
601```json theme={null}601```json theme={null}
602{602{
613 613
614| 欄位 | Claude Code 如何處理 |614| 欄位 | Claude Code 如何處理 |
615| - | - |615| - | - |
616| `resultType` | 設為 `"task"` 以將回覆標示為任務。若沒有此欄位,Claude Code 會將回覆讀取為一般結果 |616| `resultType` | 將其設為 `"task"` 以將回應標記為任務。若沒有此欄位,Claude Code 會將回應讀取為一般結果 |
617| `taskId` | 必要。最多 128 個可列印的 ASCII 字元且不含空格,否則 Claude 會收到以 `MCP server "<name>" returned a malformed task handle for tool "<tool>"` 開頭的工具錯誤。請讓該 ID 在不同連線間都能被回應,因為恢復後 Claude Code 會在新的連線上詢問它 |617| `taskId` | 必要。最多 128 個不含空格的可列印 ASCII 字元,否則 Claude 會收到以 `MCP server "<name>" returned a malformed task handle for tool "<tool>"` 開頭的工具錯誤。請讓該 ID 在不同連線間都能被回應,因為恢復後 Claude Code 會在新的連線上詢問它 |
618| `status` | 必要。為 `working`、`input_required`、`completed`、`failed` 或 `cancelled` 之一。其他值會產生 `Unsupported result type` 錯誤 |618| `status` | 必要。為 `working`、`input_required`、`completed`、`failed` 或 `cancelled` 之一。其他值會導致 `Unsupported result type` 錯誤 |
619| `createdAt`、`lastUpdatedAt`、`ttlMs` | tasks 擴充功能要求提供,且 `ttlMs` 可以是 `null`。Claude Code 不會因為任務的 `ttlMs` 已過而捨棄它 |619| `createdAt`、`lastUpdatedAt`、`ttlMs` | 任務擴充功能所要求,且 `ttlMs` 可為 `null`。Claude Code 不會因為任務的 `ttlMs` 已過期而捨棄它 |
620| `pollIntervalMs` | 選用。`tasks/get` 請求之間的毫秒數,限制在 250 到 30000 之間。當此欄位不存在或為 `null` 時,Claude Code 使用 2000,並會從每個 `tasks/get` 回應中重新讀取該值 |620| `pollIntervalMs` | 選用。兩次 `tasks/get` 請求之間的毫秒數,限制在 250 到 30000 之間。當此欄位不存在或為 `null` 時,Claude Code 使用 2000,並會從每個 `tasks/get` 回應中重新讀取該值 |
621| `statusMessage` | 選用。`/tasks` 會顯示您最新 `tasks/get` 回應中的值,而非這第一個回應中的值,且省略此欄位的回應會將其清除。[Claude Code 的狀態訊息](#status-messages-on-an-mcp-task)可能會取代它 |621| `statusMessage` | 選用。`/tasks` 會顯示您最新 `tasks/get` 回應中的值,而非這第一個回應中的值,且省略此欄位的回應會將其清除。[來自 Claude Code 的狀態訊息](#status-messages-on-an-mcp-task)可能會取代它 |
622 622
623Claude Code 接受省略 `createdAt`、`lastUpdatedAt` 或 `ttlMs`,或將 `pollIntervalMs` 設為 `null` 的任務回應。在 v2.1.317 之前,呼叫則會以 `Unsupported result type` 錯誤失敗。若也要與這些版本相容,請傳送 tasks 擴充功能要求的三個欄位,並將 `pollIntervalMs` 以數字傳送或完全不傳送。623Claude Code 接受省略 `createdAt`、`lastUpdatedAt` 或 `ttlMs`,或將 `pollIntervalMs` 設為 `null` 的任務回應。在 v2.1.317 之前,呼叫會改為以 `Unsupported result type` 錯誤失敗。若也要與那些版本相容,請傳送任務擴充功能所要求的三個欄位,並將 `pollIntervalMs` 以數字傳送或完全不傳送。
624 624
625在 HTTP 或 claude.ai 連接器伺服器上,任務回應必須在[每個請求的計時器](#time-limits-on-mcp-tool-calls)內開始,因此請先接受工作並回應,然後再執行工作。625在 HTTP 或 claude.ai 連接器伺服器上,任務回應必須在[每請求計時器](#time-limits-on-mcp-tool-calls)內開始,因此請先接受工作並回應,再執行工作。
626 626
627#### 回報狀態、結果與問題627#### 回報狀態、結果和問題
628 628
629在任務回應之後,Claude Code 會立即傳送帶有 `{ "taskId": ... }` 的 `tasks/get`,然後每個輪詢間隔重複一次。tasks 擴充功能要求您的回應攜帶 `"resultType": "complete"`,以及 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 和 `ttlMs`。`ttlMs` 可以是 `null`,而 `statusMessage` 和 `pollIntervalMs` 為選用。此範例回報建置已完成:629在任務回應之後,Claude Code 會立即傳送帶有 `{ "taskId": ... }` 的 `tasks/get`,然後每個輪詢間隔重複一次。任務擴充功能要求您的回應帶有 `"resultType": "complete"`,以及 `taskId`、`status`、`createdAt`、`lastUpdatedAt` 和 `ttlMs`。`ttlMs` 可為 `null`,而 `statusMessage` 和 `pollIntervalMs` 為選用。此範例回報建置已完成:
630 630
631```json theme={null}631```json theme={null}
632{632{
645| 狀態、方法或回應 | Claude Code 如何處理 |645| 狀態、方法或回應 | Claude Code 如何處理 |
646| - | - |646| - | - |
647| `working` | 持續輪詢 |647| `working` | 持續輪詢 |
648| `completed` | 將頂層 `result` 物件中的一般 `tools/call` 結果提供給 Claude。其中的 `isError: true` 會回報為失敗 |648| `completed` | 將頂層 `result` 物件中的一般 `tools/call` 結果提供給 Claude。其中的 `isError: true` 會被回報為失敗 |
649| `failed` | 將頂層 `error` 物件 `{ code, message, data }` 的 `message` 告知 Claude,tasks 擴充功能要求失敗的任務必須包含此物件。若沒有該 `message`,Claude 會改為收到 `statusMessage`,否則為 `Task failed` |649| `failed` | 將頂層 `error` 物件 `{ code, message, data }` 的 `message` 告知 Claude,任務擴充功能要求失敗的任務須包含此物件。若沒有該 `message`,Claude 會改為收到 `statusMessage`,否則為 `Task failed` |
650| `cancelled` | 將 `statusMessage` 告知 Claude,否則為 `Task was cancelled by the server` |650| `cancelled` | 將 `statusMessage` 告知 Claude,否則為 `Task was cancelled by the server` |
651| `input_required` | 讀取 `inputRequests`,這是一個將您選擇的鍵對應至 `{ method, params }` 的物件。Claude Code 會透過帶有 `{ taskId, inputResponses }` 的 `tasks/update` 對每個鍵回答一次,其中 `inputResponses` 會將相同的鍵對應至該請求的結果。每個任務超過 16 個的鍵會被忽略 |651| `input_required` | 讀取 `inputRequests`,這是一個將您選擇的鍵對應到 `{ method, params }` 的物件。Claude Code 會透過帶有 `{ taskId, inputResponses }` 的 `tasks/update` 對每個鍵回應一次,其中 `inputResponses` 將相同的鍵對應到該請求的結果。每個任務超過 16 個的鍵會被忽略 |
652| `inputRequests` 中的方法 | `elicitation/create` 只在互動式終端機工作階段中提供服務,`roots/list` 則在所有地方都提供。當 Claude Code 無法處理某個請求時,它會要求伺服器取消該任務 |652| `inputRequests` 中的方法 | `elicitation/create` 只在互動式終端機工作階段中提供服務,`roots/list` 則在所有地方皆提供。當 Claude Code 無法處理某個請求時,會要求伺服器取消該任務 |
653| 其他 `status` 值 | Claude Code 會要求伺服器取消該任務,並向 Claude 回報為失敗 |653| 其他 `status` 值 | Claude Code 會要求伺服器取消該任務,並向 Claude 回報為失敗 |
654| JSON-RPC 錯誤 `-32602` | 讀取為未知的任務 ID。對於背景中的任務,Claude Code 會持續詢問最多五分鐘,然後向 Claude 回報結果未知 |654| JSON-RPC 錯誤 `-32602` | 讀取為未知的任務 ID。對於背景中的任務,Claude Code 會持續詢問最多五分鐘,然後向 Claude 回報結果為未知 |
655| `tasks/cancel` | 例如當 Claude 或使用者在伺服器連線期間停止任務時傳送。結束時不會傳送 |655| `tasks/cancel` | 例如當 Claude 或使用者在伺服器連線期間停止任務時傳送。結束時不會傳送 |
656| `tasks/result`、`tasks/list`、`notifications/tasks` | 不會使用,因此請將結果放在您的 `tasks/get` 回應中 |656| `tasks/result`、`tasks/list`、`notifications/tasks` | 不使用,因此請將結果放在您的 `tasks/get` 回應中 |
657 657
658### 外掛提供的 MCP 伺服器658### 外掛提供的 MCP 伺服器
659 659
660[外掛](https://code.claude.com/docs/zh-TW/plugins/overview.md)可以捆綁 MCP 伺服器,在您啟用外掛時提供工具與整合功能。660[外掛](https://code.claude.com/docs/zh-TW/plugins/overview.md)可以內含 MCP 伺服器,在您啟用外掛時提供工具與整合功能。
661 661
662**外掛 MCP 伺服器的運作方式**:662**外掛 MCP 伺服器的運作方式**:
663 663
664* 外掛在外掛根目錄的 `.mcp.json` 中定義 MCP 伺服器,或內嵌於 `plugin.json` 中664* 外掛在外掛根目錄的 `.mcp.json` 中定義 MCP 伺服器,或直接內嵌於 `plugin.json` 中
665* 當您啟用外掛時,Claude Code 會自動啟動其 MCP 伺服器665* 當您啟用外掛時,Claude Code 會自動啟動其 MCP 伺服器
666* Claude Code 會將外掛 MCP 工具與手動設定的 MCP 工具一併提供666* Claude Code 會將外掛 MCP 工具與手動設定的 MCP 工具一併提供
667* 外掛伺服器的新增與移除是透過安裝或解除安裝外掛來完成,而非使用 `/mcp` 命令。您仍可在 `/mcp` 中[將已安裝的外掛伺服器切換為關閉](#disable-a-server-without-removing-it),這會讓 Claude Code 停止連線至該伺服器,而不會移除外掛667* 外掛伺服器是透過安裝或解除安裝外掛來新增與移除,而非使用 `/mcp` 命令。您仍可在 `/mcp` 中[將已安裝的外掛伺服器切換為關閉](#disable-a-server-without-removing-it),這會讓 Claude Code 停止連線至該伺服器,而不會移除外掛
668 668
669**外掛 MCP 設定範例**:669**外掛 MCP 設定範例**:
670 670
700 700
701**外掛 MCP 功能**:701**外掛 MCP 功能**:
702 702
703* **自動生命週期**:伺服器會在以下時間點連線與中斷連線:703* **自動生命週期**:伺服器會在以下時機連線與中斷連線:
704 * 在工作階段啟動時,Claude Code 會自動連線已啟用外掛的伺服器。在 `/mcp` 中,您先前使用過的遠端(HTTP 或 SSE)外掛伺服器可能會改為顯示 [`cached` 狀態](#server-status-detail);Claude Code 會在 Claude 首次呼叫其中一個工具時連線該伺服器。當 stdio 外掛伺服器的連線在不到 15 分鐘前失敗時,Claude Code 會[略過該連線](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached)704 * 在工作階段啟動時,Claude Code 會自動連線已啟用外掛的伺服器。在 `/mcp` 中,您先前使用過的遠端(HTTP 或 SSE)外掛伺服器可能會改為顯示 [`cached` 狀態](#server-status-detail);Claude Code 會在 Claude 首次呼叫其某個工具時連線該伺服器。當 stdio 外掛伺服器的連線在不到 15 分鐘前失敗時,Claude Code 會[略過該連線](https://code.claude.com/docs/zh-TW/errors.md#skipping-connection-recent-failure-cached)
705 * 如果您在工作階段期間啟用或停用外掛,Claude Code 會在變更套用時連線或中斷其 MCP 伺服器。[無需重新啟動即可套用外掛變更](https://code.claude.com/docs/zh-TW/plugins/cli-reference.md#reload-plugins)說明了套用的時機。在沒有互動式終端機的工作階段中,`/reload-plugins` 不會連線或中斷外掛 MCP 伺服器;這些變更會在您的下一個工作階段生效705 * 如果您在工作階段期間啟用或停用外掛,Claude Code 會在變更套用時連線或中斷其 MCP 伺服器。[不重新啟動即套用外掛變更](https://code.claude.com/docs/zh-TW/plugins/cli-reference.md#reload-plugins)說明了套用的時機。在沒有互動式終端機的工作階段中,`/reload-plugins` 不會連線或中斷外掛 MCP 伺服器;這些變更會在您的下一個工作階段中生效
706 * 當您重新載入時,Claude Code 會保留設定未變更之外掛伺服器的現有連線;當您從 Agent SDK [取代工作階段的 MCP 伺服器清單](https://code.claude.com/docs/zh-TW/agent-sdk/typescript.md#mcpsetserversresult)而未指名這些伺服器時,也會如此處理706 * 重新載入時,Claude Code 會保留設定未變更之外掛伺服器的即時連線;當您從 Agent SDK [取代工作階段的 MCP 伺服器清單](https://code.claude.com/docs/zh-TW/agent-sdk/typescript.md#mcpsetserversresult)而未指名這些伺服器時,也會同樣處理
707 * 當您在 v2.1.246 或更新版本中[使用 `/cd` 移動工作階段](https://code.claude.com/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 會連線新目錄設定所啟用之外掛的伺服器,並中斷不再啟用之外掛的伺服器,因此移動後您不需要執行 `/reload-plugins`707 * 當您在 v2.1.246 或更新版本上[使用 `/cd` 移動工作階段](https://code.claude.com/docs/zh-TW/permissions#move-the-session-to-another-directory)時,Claude Code 會連線新目錄設定所啟用之外掛的伺服器,並中斷不再啟用之外掛的伺服器,因此移動後您不需要執行 `/reload-plugins`
708 * 在[雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,對尚未連線之外掛伺服器的 MCP 呼叫(例如在閒置的工作階段剛喚醒後)會依需求啟動該伺服器,並等待其連線708 * 在[雲端工作階段](https://code.claude.com/docs/zh-TW/claude-code-on-the-web.md)中,對尚未連線的外掛伺服器發出 MCP 呼叫(例如在閒置的工作階段剛喚醒後),會視需要啟動該伺服器並等待其連線
709* **路徑預留位置**:`${CLAUDE_PLUGIN_ROOT}` 會解析為外掛的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 會解析為其[持久狀態](https://code.claude.com/docs/zh-TW/plugins/components.md#path-variables-and-persistent-data)目錄,而 `${CLAUDE_PROJECT_DIR}` 會解析為穩定的專案根目錄。替換適用於:709* **路徑預留位置**:`${CLAUDE_PLUGIN_ROOT}` 會解析為外掛的安裝目錄,`${CLAUDE_PLUGIN_DATA}` 解析為其[持久狀態](https://code.claude.com/docs/zh-TW/plugins/components.md#path-variables-and-persistent-data)目錄,`${CLAUDE_PROJECT_DIR}` 則解析為穩定的專案根目錄。替換適用於:
710 * `stdio` 伺服器:`command`、`args`、`env`710 * `stdio` 伺服器:`command`、`args`、`env`
711 * `http`、`sse` 和 `ws` 伺服器:`url`、`headers` 和 `headersHelper`711 * `http`、`sse` 和 `ws` 伺服器:`url`、`headers` 和 `headersHelper`
712* **使用者環境存取**:可存取與手動設定之伺服器相同的環境變數712* **使用者環境存取**:可存取與手動設定伺服器相同的環境變數
713* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,但傳輸支援可能因伺服器而異713* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸,但傳輸支援可能因伺服器而異
714 714
715外掛伺服器會顯示在 `/mcp` 中,並附有表示其來自外掛的標示。715外掛伺服器會顯示在 `/mcp` 中,並附有標示其來自外掛的指示。
716 716
717`claude mcp get` 會隱藏為外掛之 stdio 或 WebSocket 伺服器設定的值,因為這些值可能包含憑證:717`claude mcp get` 會隱藏為外掛的 stdio 或 WebSocket 伺服器所設定的值,因為這些值可能包含憑證:
718 718
719* **stdio 伺服器**:會輸出 `Command: stdio`、一行空白的 `Args:`,並將每個環境變數輸出為 `NAME=[REDACTED]`719* **stdio 伺服器**:會印出 `Command: stdio`、一行空的 `Args:`,並將每個環境變數顯示為 `NAME=[REDACTED]`
720* **WebSocket 伺服器**:會輸出 `URL: ws`,並將每個標頭輸出為 `<name>: [REDACTED]`,而 `claude mcp list` 會以 `ws` 取代 URL 顯示720* **WebSocket 伺服器**:會印出 `URL: ws`,並將每個標頭顯示為 `<name>: [REDACTED]`,而 `claude mcp list` 會以 `ws` 取代 URL 顯示
721 721
722若要查看外掛設定的內容,請[在磁碟上找到該外掛](https://code.claude.com/docs/zh-TW/plugins/loading.md#find-plugins-on-disk),並閱讀其 `.mcp.json` 或 `plugin.json`。722若要查看外掛設定的內容,請[在磁碟上找到該外掛](https://code.claude.com/docs/zh-TW/plugins/loading.md#find-plugins-on-disk)並閱讀其 `.mcp.json` 或 `plugin.json`。
723 723
724**外掛 MCP 工具名稱**:724**外掛 MCP 工具名稱**:
725 725
726來自外掛捆綁之 MCP 伺服器的工具,其可呼叫名稱同時包含外掛名稱與伺服器鍵。完整形式為 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都會被替換為 `_`。以名為 `my-plugin` 之外掛中捆綁的 `database-tools` 伺服器為例,`query` 工具的呼叫名稱為:726來自外掛內含 MCP 伺服器的工具,其可呼叫名稱同時包含外掛名稱與伺服器鍵。完整形式為 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都會被替換為 `_`。以內含於名為 `my-plugin` 之外掛中的 `database-tools` 伺服器為例,`query` 工具的可呼叫名稱為:
727 727
728```728```
729mcp__plugin_my-plugin_database-tools__query729mcp__plugin_my-plugin_database-tools__query
730```730```
731 731
732在[權限規則](https://code.claude.com/docs/zh-TW/permissions.md)、skill 的 `allowed-tools` 清單、[subagent 的 `tools` 欄位](https://code.claude.com/docs/zh-TW/sub-agents#available-tools)或 [hook matcher](https://code.claude.com/docs/zh-TW/hooks.md#match-mcp-tools) 中參照該工具時,請使用此完整名稱。針對單純伺服器鍵撰寫的 hook matcher(例如 `mcp__database-tools__.*`)永遠不會對外掛捆綁的伺服器觸發。732在[權限規則](https://code.claude.com/docs/zh-TW/permissions.md)、skill 的 `allowed-tools` 清單、[subagent 的 `tools` 欄位](https://code.claude.com/docs/zh-TW/sub-agents#available-tools)或 [hook matcher](https://code.claude.com/docs/zh-TW/hooks.md#match-mcp-tools) 中參照該工具時,請使用此完整名稱。針對單純伺服器鍵撰寫的 hook matcher(例如 `mcp__database-tools__.*`)永遠不會對外掛內含的伺服器觸發。
733 733
734伺服器本身會以範圍名稱 `plugin:<plugin-name>:<server-name>` 註冊,例如 `plugin:my-plugin:database-tools`。在需要已設定之伺服器名稱的地方請使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](https://code.claude.com/docs/zh-TW/hooks#mcp-tool-hook-fields)。734伺服器本身會以範圍名稱 `plugin:<plugin-name>:<server-name>` 註冊,例如 `plugin:my-plugin:database-tools`。在需要已設定伺服器名稱的地方,請使用該名稱,例如 [`mcp_tool` hook 的 `server` 欄位](https://code.claude.com/docs/zh-TW/hooks#mcp-tool-hook-fields)。
735 735
736如需在外掛中捆綁 MCP 伺服器的詳細資訊,請參閱[外掛元件參考](https://code.claude.com/docs/zh-TW/plugins/components.md#mcp-servers)。736關於在外掛中內含 MCP 伺服器的詳細資訊,請參閱[外掛元件參考](https://code.claude.com/docs/zh-TW/plugins/components.md#mcp-servers)。
737 737
738## MCP 安裝範圍738## MCP 安裝範圍
739 739
1800* **Claude Opus 4.5、Sonnet 4.5、Haiku 4.5 及更新版本**:工具搜尋預設為開啟,與 Anthropic API 上相同。1800* **Claude Opus 4.5、Sonnet 4.5、Haiku 4.5 及更新版本**:工具搜尋預設為開啟,與 Anthropic API 上相同。
1801* **較早的 Agent Platform 模型**:Claude Code 預先載入所有 MCP 工具,因為它們的服務堆疊拒絕所需的測試版標頭。`ENABLE_TOOL_SEARCH=true` 不會覆寫此設定。1801* **較早的 Agent Platform 模型**:Claude Code 預先載入所有 MCP 工具,因為它們的服務堆疊拒絕所需的測試版標頭。`ENABLE_TOOL_SEARCH=true` 不會覆寫此設定。
1802 1802
1803在 v2.1.221 之前,Claude Code 在 Google Cloud 的 Agent Platform 上對所有模型停用工具搜尋,除非您設定 `ENABLE_TOOL_SEARCH=true`。
1804
1805使用 `ENABLE_TOOL_SEARCH` 環境變數控制工具搜尋行為:1803使用 `ENABLE_TOOL_SEARCH` 環境變數控制工具搜尋行為:
1806 1804
1807| 值 | 行為 |1805| 值 | 行為 |