1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# 透過 MCP 將 Claude Code 連接到工具
6
7> 了解如何使用 Model Context Protocol 將 Claude Code 連接到您的工具。
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code 可以透過 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) 連接到數百個外部工具和資料來源,這是一個開源標準,用於 AI 工具整合。MCP servers 讓 Claude Code 能夠存取您的工具、資料庫和 API。
216
217當您發現自己從另一個工具(例如問題追蹤器或監控儀表板)複製資料到聊天中時,請連接一個 server。連接後,Claude 可以直接讀取和操作該系統,而不是根據您貼上的內容進行工作。
218
219## 使用 MCP 可以做什麼
220
221連接 MCP servers 後,您可以要求 Claude Code:
222
223* **從問題追蹤器實現功能**:"新增 JIRA 問題 ENG-4521 中描述的功能,並在 GitHub 上建立 PR。"
224* **分析監控資料**:"檢查 Sentry 和 Statsig,以檢查 ENG-4521 中描述的功能使用情況。"
225* **查詢資料庫**:"根據我們的 PostgreSQL 資料庫,找到 10 個使用功能 ENG-4521 的隨機使用者的電子郵件。"
226* **整合設計**:"根據在 Slack 中發佈的新 Figma 設計更新我們的標準電子郵件範本"
227* **自動化工作流程**:"建立 Gmail 草稿,邀請這 10 個使用者參加關於新功能的回饋會議。"
228* **回應外部事件**:MCP server 也可以充當 [channel](/zh-TW/channels),將訊息推送到您的 session 中,因此當您不在時,Claude 可以回應 Telegram 訊息、Discord 聊天或 webhook 事件。
229
230## 熱門 MCP servers
231
232以下是一些您可以連接到 Claude Code 的常用 MCP servers:
233
234<Warning>
235 使用第三方 MCP servers 需自行承擔風險 - Anthropic 尚未驗證
236 所有這些 servers 的正確性或安全性。
237 請確保您信任要安裝的 MCP servers。
238 使用可能會取得不受信任內容的 MCP servers 時要特別小心,
239 因為這些可能會使您面臨提示注入風險。
240</Warning>
241
242<MCPServersTable platform="claudeCode" />
243
244<Note>
245 **需要特定的整合?** [在 GitHub 上找到數百個更多 MCP servers](https://github.com/modelcontextprotocol/servers),或使用 [MCP SDK](https://modelcontextprotocol.io/quickstart/server) 建立您自己的。
246</Note>
247
248## 安裝 MCP servers
249
250MCP servers 可以根據您的需求以三種不同的方式進行配置:
251
252### 選項 1:新增遠端 HTTP server
253
254HTTP servers 是連接到遠端 MCP servers 的推薦選項。這是雲端服務最廣泛支援的傳輸方式。
255
256```bash theme={null}
257# 基本語法
258claude mcp add --transport http <name> <url>
259
260# 實際範例:連接到 Notion
261claude mcp add --transport http notion https://mcp.notion.com/mcp
262
263# 使用 Bearer token 的範例
264claude mcp add --transport http secure-api https://api.example.com/mcp \
265 --header "Authorization: Bearer your-token"
266```
267
268### 選項 2:新增遠端 SSE server
269
270<Warning>
271 SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP servers(如果可用)。
272</Warning>
273
274```bash theme={null}
275# 基本語法
276claude mcp add --transport sse <name> <url>
277
278# 實際範例:連接到 Asana
279claude mcp add --transport sse asana https://mcp.asana.com/sse
280
281# 使用驗證標頭的範例
282claude mcp add --transport sse private-api https://api.company.com/sse \
283 --header "X-API-Key: your-key-here"
284```
285
286### 選項 3:新增本機 stdio server
287
288Stdio servers 在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。
289
290```bash theme={null}
291# 基本語法
292claude mcp add [options] <name> -- <command> [args...]
293
294# 實際範例:新增 Airtable server
295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
296 -- npx -y airtable-mcp-server
297```
298
299<Note>
300 **重要:選項順序**
301
302 所有選項(`--transport`、`--env`、`--scope`、`--header`)必須在 server 名稱**之前**。然後 `--` (雙破折號) 將 server 名稱與傳遞給 MCP server 的命令和引數分開。
303
304 例如:
305
306 * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`
307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`
308
309 這可以防止 Claude 的旗標與 server 旗標之間的衝突。
310</Note>
311
312### 管理您的 servers
313
314配置後,您可以使用這些命令管理您的 MCP servers:
315
316```bash theme={null}
317# 列出所有已配置的 servers
318claude mcp list
319
320# 取得特定 server 的詳細資訊
321claude mcp get github
322
323# 移除 server
324claude mcp remove github
325
326# (在 Claude Code 中) 檢查 server 狀態
327/mcp
328```
329
330### 動態工具更新
331
332Claude Code 支援 MCP `list_changed` 通知,允許 MCP servers 動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP server 傳送 `list_changed` 通知時,Claude Code 會自動重新整理該 server 的可用功能。
333
334### 自動重新連接
335
336如果 HTTP 或 SSE server 在 session 中途斷開連接,Claude Code 會自動以指數退避方式重新連接:最多五次嘗試,從一秒延遲開始,每次加倍。在 `/mcp` 中,server 會顯示為待處理狀態,同時重新連接正在進行中。五次失敗嘗試後,server 被標記為失敗,您可以從 `/mcp` 手動重試。Stdio servers 是本機程序,不會自動重新連接。
337
338相同的退避策略適用於 HTTP 或 SSE server 在啟動時初始連接失敗的情況。自 v2.1.121 起,Claude Code 在暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)上最多重試初始連接三次,如果仍無法連接,則將 server 標記為失敗。驗證和找不到錯誤不會重試,因為它們需要配置變更才能解決。
339
340### 使用 channels 推送訊息
341
342MCP server 也可以直接將訊息推送到您的 session 中,以便 Claude 可以回應外部事件,例如 CI 結果、監控警報或聊天訊息。若要啟用此功能,您的 server 宣告 `claude/channel` 功能,並在啟動時使用 `--channels` 旗標選擇加入。請參閱 [Channels](/zh-TW/channels) 以使用官方支援的 channel,或 [Channels reference](/zh-TW/channels-reference) 以建立您自己的。
343
344<Tip>
345 提示:
346
347 * 使用 `--scope` 旗標指定配置的儲存位置:
348 * `local` (預設):僅在目前專案中對您可用 (在較舊版本中稱為 `project`)
349 * `project`:透過 `.mcp.json` 檔案與專案中的所有人共享
350 * `user`:在所有專案中對您可用 (在較舊版本中稱為 `global`)
351 * 使用 `--env` 旗標設定環境變數 (例如,`--env KEY=value`)
352 * 使用 MCP\_TIMEOUT 環境變數配置 MCP server 啟動逾時 (例如,`MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)
353 * 當 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告。若要增加此限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數 (例如,`MAX_MCP_OUTPUT_TOKENS=50000`)
354 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證
355</Tip>
356
357### Plugin 提供的 MCP servers
358
359[Plugins](/zh-TW/plugins) 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。
360
361**Plugin MCP servers 的工作方式**:
362
363* Plugins 在 plugin 根目錄的 `.mcp.json` 中或在 `plugin.json` 中內聯定義 MCP servers
364* 啟用 plugin 時,其 MCP servers 會自動啟動
365* Plugin MCP 工具與手動配置的 MCP 工具一起出現
366* Plugin servers 透過 plugin 安裝進行管理 (不是 `/mcp` 命令)
367
368**Plugin MCP 配置範例**:
369
370在 plugin 根目錄的 `.mcp.json` 中:
371
372```json theme={null}
373{
374 "mcpServers": {
375 "database-tools": {
376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
378 "env": {
379 "DB_URL": "${DB_URL}"
380 }
381 }
382 }
383}
384```
385
386或在 `plugin.json` 中內聯:
387
388```json theme={null}
389{
390 "name": "my-plugin",
391 "mcpServers": {
392 "plugin-api": {
393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
394 "args": ["--port", "8080"]
395 }
396 }
397}
398```
399
400**Plugin MCP 功能**:
401
402* **自動生命週期**:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行 `/reload-plugins` 以連接或斷開其 MCP servers
403* **環境變數**:使用 `${CLAUDE_PLUGIN_ROOT}` 表示 plugin 根目錄中的捆綁 plugin 檔案,以及 `${CLAUDE_PLUGIN_DATA}` 表示 [persistent state](/zh-TW/plugins-reference#persistent-data-directory) 在 plugin 更新後仍然存在
404* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數
405* **多種傳輸類型**:支援 stdio、SSE 和 HTTP 傳輸 (傳輸支援可能因 server 而異)
406
407**檢視 plugin MCP servers**:
408
409```bash theme={null}
410# 在 Claude Code 中,查看所有 MCP servers,包括 plugin 的
411/mcp
412```
413
414Plugin servers 在列表中出現,並有指示器顯示它們來自 plugins。
415
416**Plugin MCP servers 的優點**:
417
418* **捆綁分發**:工具和 servers 一起打包
419* **自動設定**:無需手動 MCP 配置
420* **團隊一致性**:安裝 plugin 時,每個人都會獲得相同的工具
421
422請參閱 [plugin 元件參考](/zh-TW/plugins-reference#mcp-servers),了解有關使用 plugins 捆綁 MCP servers 的詳細資訊。
423
424## MCP 安裝範圍
425
426MCP servers 可以在三個不同的範圍級別進行配置。您選擇的範圍控制 server 在哪些專案中載入,以及配置是否與您的團隊共享。
427
428| 範圍 | 載入位置 | 與團隊共享 | 儲存位置 |
429| ------------------------- | ------ | -------- | ------------------- |
430| [Local](#local-scope) | 僅目前專案 | 否 | `~/.claude.json` |
431| [Project](#project-scope) | 僅目前專案 | 是,透過版本控制 | 專案根目錄中的 `.mcp.json` |
432| [User](#user-scope) | 您的所有專案 | 否 | `~/.claude.json` |
433
434### Local scope
435
436Local scope 是預設值。本機範圍的 server 僅在您新增它的專案中載入,並對您保持私密。Claude Code 將其儲存在 `~/.claude.json` 中該專案的路徑下,因此相同的 server 不會出現在您的其他專案中。使用本機範圍進行個人開發 servers、實驗配置或包含您不想在版本控制中的認證的 servers。
437
438<Note>
439 MCP servers 的「local scope」術語與一般本機設定不同。MCP 本機範圍的 servers 儲存在 `~/.claude.json` (您的主目錄) 中,而一般本機設定使用 `.claude/settings.local.json` (在專案目錄中)。請參閱 [Settings](/zh-TW/settings#settings-files) 了解設定檔案位置的詳細資訊。
440</Note>
441
442```bash theme={null}
443# 新增本機範圍的 server (預設)
444claude mcp add --transport http stripe https://mcp.stripe.com
445
446# 明確指定本機範圍
447claude mcp add --transport http stripe --scope local https://mcp.stripe.com
448```
449
450當您從 `/path/to/your/project` 執行命令時,該命令會將 server 寫入 `~/.claude.json` 中您目前專案的項目。下面的範例顯示結果:
451
452```json theme={null}
453{
454 "projects": {
455 "/path/to/your/project": {
456 "mcpServers": {
457 "stripe": {
458 "type": "http",
459 "url": "https://mcp.stripe.com"
460 }
461 }
462 }
463 }
464}
465```
466
467### Project scope
468
469Project scope 的 servers 透過在專案根目錄中儲存配置在 `.mcp.json` 檔案中來啟用團隊協作。此檔案設計為簽入版本控制,確保所有團隊成員都能存取相同的 MCP 工具和服務。新增 project scope 的 server 時,Claude Code 會自動建立或更新此檔案,使用適當的配置結構。
470
471```bash theme={null}
472# 新增 project scope 的 server
473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
474```
475
476產生的 `.mcp.json` 檔案遵循標準化格式:
477
478```json theme={null}
479{
480 "mcpServers": {
481 "shared-server": {
482 "command": "/path/to/server",
483 "args": [],
484 "env": {}
485 }
486 }
487}
488```
489
490出於安全考慮,Claude Code 在使用來自 `.mcp.json` 檔案的 project scope servers 之前會提示批准。如果您需要重設這些批准選擇,請使用 `claude mcp reset-project-choices` 命令。
491
492### User scope
493
494User scope 的 servers 儲存在 `~/.claude.json` 中,並提供跨專案可存取性,使其在您機器上的所有專案中可用,同時對您的使用者帳戶保持私密。此範圍非常適合個人公用程式 servers、開發工具或您在不同專案中經常使用的服務。
495
496```bash theme={null}
497# 新增使用者 server
498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
499```
500
501### Scope 階層和優先順序
502
503當相同的 server 在多個位置定義時,Claude Code 連接到它一次,使用來自最高優先順序來源的定義:
504
5051. Local scope
5062. Project scope
5073. User scope
5084. [Plugin-provided servers](/zh-TW/plugins)
5095. [claude.ai connectors](#use-mcp-servers-from-claude-ai)
510
511三個範圍按名稱符合重複項。Plugins 和 connectors 按端點符合,因此指向與上述 server 相同 URL 或命令的端點被視為重複項。
512
513### `.mcp.json` 中的環境變數擴展
514
515Claude Code 支援 `.mcp.json` 檔案中的環境變數擴展,允許團隊共享配置,同時保持機器特定路徑和 API 金鑰等敏感值的靈活性。
516
517**支援的語法:**
518
519* `${VAR}` - 擴展為環境變數 `VAR` 的值
520* `${VAR:-default}` - 如果設定了 `VAR`,則擴展為 `VAR`,否則使用 `default`
521
522**擴展位置:**
523環境變數可以在以下位置擴展:
524
525* `command` - server 可執行檔路徑
526* `args` - 命令列引數
527* `env` - 傳遞給 server 的環境變數
528* `url` - 對於 HTTP server 類型
529* `headers` - 對於 HTTP server 驗證
530
531**使用變數擴展的範例:**
532
533```json theme={null}
534{
535 "mcpServers": {
536 "api-server": {
537 "type": "http",
538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
539 "headers": {
540 "Authorization": "Bearer ${API_KEY}"
541 }
542 }
543 }
544}
545```
546
547如果未設定必需的環境變數且沒有預設值,Claude Code 將無法解析配置。
548
549## 實用範例
550
551{/* ### 範例:使用 Playwright 自動化瀏覽器測試
552
553```bash
554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
555```
556
557然後編寫並執行瀏覽器測試:
558
559```text
560Test if the login flow works with test@example.com
561```
562```text
563Take a screenshot of the checkout page on mobile
564```
565```text
566Verify that the search feature returns results
567``` */}
568
569### 範例:使用 Sentry 監控錯誤
570
571```bash theme={null}
572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
573```
574
575使用您的 Sentry 帳戶進行驗證:
576
577```text theme={null}
578/mcp
579```
580
581然後除錯生產問題:
582
583```text theme={null}
584過去 24 小時內最常見的錯誤是什麼?
585```
586
587```text theme={null}
588顯示錯誤 ID abc123 的堆疊追蹤
589```
590
591```text theme={null}
592哪個部署引入了這些新錯誤?
593```
594
595### 範例:連接到 GitHub 進行程式碼審查
596
597GitHub 的遠端 MCP server 使用作為標頭傳遞的 GitHub 個人存取 token 進行驗證。若要取得一個,請開啟您的 [GitHub token 設定](https://github.com/settings/personal-access-tokens),產生一個新的細粒度 token,具有對您希望 Claude 使用的儲存庫的存取權,然後新增 server:
598
599```bash theme={null}
600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
601 --header "Authorization: Bearer YOUR_GITHUB_PAT"
602```
603
604然後使用 GitHub:
605
606```text theme={null}
607審查 PR #456 並建議改進
608```
609
610```text theme={null}
611為我們剛發現的錯誤建立新問題
612```
613
614```text theme={null}
615顯示所有指派給我的開放 PRs
616```
617
618### 範例:查詢您的 PostgreSQL 資料庫
619
620```bash theme={null}
621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
623```
624
625然後自然地查詢您的資料庫:
626
627```text theme={null}
628本月我們的總收入是多少?
629```
630
631```text theme={null}
632顯示 orders 表的架構
633```
634
635```text theme={null}
636找到 90 天內未進行購買的客戶
637```
638
639## 使用遠端 MCP servers 進行驗證
640
641許多雲端 MCP servers 需要驗證。Claude Code 支援 OAuth 2.0 以進行安全連接。
642
643<Steps>
644 <Step title="新增需要驗證的 server">
645 例如:
646
647 ```bash theme={null}
648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
649 ```
650 </Step>
651
652 <Step title="在 Claude Code 中使用 /mcp 命令">
653 在 Claude Code 中,使用命令:
654
655 ```text theme={null}
656 /mcp
657 ```
658
659 然後按照瀏覽器中的步驟登入。
660 </Step>
661</Steps>
662
663<Tip>
664 提示:
665
666 * 驗證 tokens 安全儲存並自動重新整理
667 * 使用 `/mcp` 功能表中的「Clear authentication」撤銷存取權
668 * 如果瀏覽器未自動開啟,請複製提供的 URL 並手動開啟
669 * 如果瀏覽器重新導向在驗證後失敗並出現連接錯誤,請將瀏覽器位址列中的完整回呼 URL 貼到 Claude Code 中出現的 URL 提示中
670 * OAuth 驗證適用於 HTTP servers
671</Tip>
672
673### 使用固定的 OAuth 回呼連接埠
674
675某些 MCP servers 需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用 `--callback-port` 固定連接埠,使其符合 `http://localhost:PORT/callback` 形式的預先註冊重新導向 URI。
676
677您可以單獨使用 `--callback-port` (使用動態用戶端註冊) 或與 `--client-id` 一起使用 (使用預先配置的認證)。
678
679```bash theme={null}
680# 使用動態用戶端註冊的固定回呼連接埠
681claude mcp add --transport http \
682 --callback-port 8080 \
683 my-server https://mcp.example.com/mcp
684```
685
686### 使用預先配置的 OAuth 認證
687
688某些 MCP servers 不支援自動 OAuth 設定。如果您看到類似「Incompatible auth server: does not support dynamic client registration」的錯誤,server 需要預先配置的認證。Claude Code 也支援使用 Client ID Metadata Document (CIMD) 而不是 Dynamic Client Registration 的 servers,並自動探索這些。如果自動探索失敗,請先透過 server 的開發人員入口網站註冊 OAuth 應用程式,然後在新增 server 時提供認證。
689
690<Steps>
691 <Step title="使用 server 註冊 OAuth 應用程式">
692 透過 server 的開發人員入口網站建立應用程式,並記下您的用戶端 ID 和用戶端密碼。
693
694 許多 servers 也需要重新導向 URI。如果是這樣,請選擇一個連接埠並以 `http://localhost:PORT/callback` 的格式註冊重新導向 URI。在下一步中使用該相同連接埠搭配 `--callback-port`。
695 </Step>
696
697 <Step title="使用您的認證新增 server">
698 選擇以下方法之一。用於 `--callback-port` 的連接埠可以是任何可用的連接埠。它只需要符合您在上一步中註冊的重新導向 URI。
699
700 <Tabs>
701 <Tab title="claude mcp add">
702 使用 `--client-id` 傳遞您應用程式的用戶端 ID。`--client-secret` 旗標會提示輸入帶有遮罩輸入的密碼:
703
704 ```bash theme={null}
705 claude mcp add --transport http \
706 --client-id your-client-id --client-secret --callback-port 8080 \
707 my-server https://mcp.example.com/mcp
708 ```
709 </Tab>
710
711 <Tab title="claude mcp add-json">
712 在 JSON 配置中包含 `oauth` 物件,並將 `--client-secret` 作為單獨的旗標傳遞:
713
714 ```bash theme={null}
715 claude mcp add-json my-server \
716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
717 --client-secret
718 ```
719 </Tab>
720
721 <Tab title="claude mcp add-json (僅回呼連接埠)">
722 使用 `--callback-port` 而不使用用戶端 ID 來固定連接埠,同時使用動態用戶端註冊:
723
724 ```bash theme={null}
725 claude mcp add-json my-server \
726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
727 ```
728 </Tab>
729
730 <Tab title="CI / env var">
731 透過環境變數設定密碼以跳過互動式提示:
732
733 ```bash theme={null}
734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
735 --client-id your-client-id --client-secret --callback-port 8080 \
736 my-server https://mcp.example.com/mcp
737 ```
738 </Tab>
739 </Tabs>
740 </Step>
741
742 <Step title="在 Claude Code 中進行驗證">
743 在 Claude Code 中執行 `/mcp` 並按照瀏覽器登入流程。
744 </Step>
745</Steps>
746
747<Tip>
748 提示:
749
750 * 用戶端密碼安全地儲存在您的系統鑰匙圈 (macOS) 或認證檔案中,而不是在您的配置中
751 * 如果 server 使用沒有密碼的公開 OAuth 用戶端,請僅使用 `--client-id` 而不使用 `--client-secret`
752 * `--callback-port` 可以與或不與 `--client-id` 一起使用
753 * 這些旗標僅適用於 HTTP 和 SSE 傳輸。它們對 stdio servers 沒有影響
754 * 使用 `claude mcp get <name>` 驗證為 server 配置了 OAuth 認證
755</Tip>
756
757### 覆蓋 OAuth 中繼資料探索
758
759指向 Claude Code 特定的 OAuth 授權 server 中繼資料 URL 以繞過預設探索鏈。當 MCP server 的標準端點出錯時,或當您想要透過內部代理路由探索時,設定 `authServerMetadataUrl`。根據預設,Claude Code 首先檢查 RFC 9728 Protected Resource Metadata at `/.well-known/oauth-protected-resource`,然後回退到 RFC 8414 authorization server metadata at `/.well-known/oauth-authorization-server`。
760
761在 `.mcp.json` 中 server 配置的 `oauth` 物件中設定 `authServerMetadataUrl`:
762
763```json theme={null}
764{
765 "mcpServers": {
766 "my-server": {
767 "type": "http",
768 "url": "https://mcp.example.com/mcp",
769 "oauth": {
770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
771 }
772 }
773 }
774}
775```
776
777URL 必須使用 `https://`。`authServerMetadataUrl` 需要 Claude Code v2.1.64 或更新版本。中繼資料 URL 的 `scopes_supported` 會覆蓋上游 server 宣傳的範圍。
778
779### 限制 OAuth 範圍
780
781設定 `oauth.scopes` 以固定 Claude Code 在授權流程中要求的範圍。這是限制 MCP server 到安全團隊批准的子集的支援方式,當上游授權 server 宣傳的範圍超過您想要授予的範圍時。該值是單個空格分隔的字串,符合 RFC 6749 §3.3 中的 `scope` 參數格式。
782
783```json theme={null}
784{
785 "mcpServers": {
786 "slack": {
787 "type": "http",
788 "url": "https://mcp.slack.com/mcp",
789 "oauth": {
790 "scopes": "channels:read chat:write search:read"
791 }
792 }
793 }
794}
795```
796
797`oauth.scopes` 優先於 `authServerMetadataUrl` 和 server 在 `/.well-known` 發現的範圍。保持未設定以讓 MCP server 決定要求的範圍集。
798
799如果授權 server 在 `scopes_supported` 中宣傳 `offline_access`,Claude Code 會將其附加到固定範圍,以便可以在沒有新瀏覽器登入的情況下重新整理存取 token。
800
801如果 server 稍後為工具呼叫傳回 403 `insufficient_scope`,Claude Code 會使用相同的固定範圍重新驗證。當您需要的工具需要固定範圍外的範圍時,擴展 `oauth.scopes`。
802
803### 使用動態標頭進行自訂驗證
804
805如果您的 MCP server 使用 OAuth 以外的驗證方案 (例如 Kerberos、短期 tokens 或內部 SSO),請使用 `headersHelper` 在連接時產生請求標頭。Claude Code 執行命令並將其輸出合併到連接標頭中。
806
807```json theme={null}
808{
809 "mcpServers": {
810 "internal-api": {
811 "type": "http",
812 "url": "https://mcp.internal.example.com",
813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
814 }
815 }
816}
817```
818
819命令也可以內聯:
820
821```json theme={null}
822{
823 "mcpServers": {
824 "internal-api": {
825 "type": "http",
826 "url": "https://mcp.internal.example.com",
827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
828 }
829 }
830}
831```
832
833**需求:**
834
835* 命令必須將字串鍵值對的 JSON 物件寫入 stdout
836* 命令在 shell 中執行,逾時時間為 10 秒
837* 動態標頭會覆蓋任何具有相同名稱的靜態 `headers`
838
839helper 在每次連接時執行 (在 session 啟動和重新連接時)。沒有快取,因此您的指令碼負責任何 token 重複使用。
840
841Claude Code 在執行 helper 時設定這些環境變數:
842
843| 變數 | 值 |
844| :---------------------------- | :--------------- |
845| `CLAUDE_CODE_MCP_SERVER_NAME` | MCP server 的名稱 |
846| `CLAUDE_CODE_MCP_SERVER_URL` | MCP server 的 URL |
847
848使用這些來編寫為多個 MCP servers 服務的單一 helper 指令碼。
849
850<Note>
851 `headersHelper` 執行任意 shell 命令。在專案或本機範圍定義時,它僅在您接受工作區信任對話框後執行。
852</Note>
853
854## 從 JSON 配置新增 MCP servers
855
856如果您有 MCP server 的 JSON 配置,您可以直接新增它:
857
858<Steps>
859 <Step title="從 JSON 新增 MCP server">
860 ```bash theme={null}
861 # 基本語法
862 claude mcp add-json <name> '<json>'
863
864 # 範例:使用 JSON 配置新增 HTTP server
865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
866
867 # 範例:使用 JSON 配置新增 stdio server
868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
869
870 # 範例:使用預先配置的 OAuth 認證新增 HTTP server
871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
872 ```
873 </Step>
874
875 <Step title="驗證 server 已新增">
876 ```bash theme={null}
877 claude mcp get weather-api
878 ```
879 </Step>
880</Steps>
881
882<Tip>
883 提示:
884
885 * 確保 JSON 在您的 shell 中正確逸出
886 * JSON 必須符合 MCP server 配置架構
887 * 您可以使用 `--scope user` 將 server 新增到您的使用者配置,而不是專案特定的配置
888</Tip>
889
890## 從 Claude Desktop 匯入 MCP servers
891
892如果您已在 Claude Desktop 中配置了 MCP servers,您可以匯入它們:
893
894<Steps>
895 <Step title="從 Claude Desktop 匯入 servers">
896 ```bash theme={null}
897 # 基本語法
898 claude mcp add-from-claude-desktop
899 ```
900 </Step>
901
902 <Step title="選擇要匯入的 servers">
903 執行命令後,您會看到一個互動式對話框,允許您選擇要匯入的 servers。
904 </Step>
905
906 <Step title="驗證 servers 已匯入">
907 ```bash theme={null}
908 claude mcp list
909 ```
910 </Step>
911</Steps>
912
913<Tip>
914 提示:
915
916 * 此功能僅適用於 macOS 和 Windows Subsystem for Linux (WSL)
917 * 它從這些平台上的標準位置讀取 Claude Desktop 配置檔案
918 * 使用 `--scope user` 旗標將 servers 新增到您的使用者配置
919 * 匯入的 servers 將具有與 Claude Desktop 中相同的名稱
920 * 如果已存在相同名稱的 servers,它們將獲得數字尾碼 (例如,`server_1`)
921</Tip>
922
923## 使用來自 Claude.ai 的 MCP servers
924
925如果您已使用 [Claude.ai](https://claude.ai) 帳戶登入 Claude Code,您在 Claude.ai 中新增的 MCP servers 會自動在 Claude Code 中可用:
926
927<Steps>
928 <Step title="在 Claude.ai 中配置 MCP servers">
929 在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 新增 servers。在 Team 和 Enterprise 計畫上,只有管理員可以新增 servers。
930 </Step>
931
932 <Step title="驗證 MCP server">
933 在 Claude.ai 中完成任何必需的驗證步驟。
934 </Step>
935
936 <Step title="在 Claude Code 中檢視和管理 servers">
937 在 Claude Code 中,使用命令:
938
939 ```text theme={null}
940 /mcp
941 ```
942
943 Claude.ai servers 在列表中出現,並有指示器顯示它們來自 Claude.ai。
944 </Step>
945</Steps>
946
947若要在 Claude Code 中停用 claude.ai MCP servers,請將 `ENABLE_CLAUDEAI_MCP_SERVERS` 環境變數設定為 `false`:
948
949```bash theme={null}
950ENABLE_CLAUDEAI_MCP_SERVERS=false claude
951```
952
953## 使用 Claude Code 作為 MCP server
954
955您可以使用 Claude Code 本身作為其他應用程式可以連接到的 MCP server:
956
957```bash theme={null}
958# 啟動 Claude 作為 stdio MCP server
959claude mcp serve
960```
961
962您可以透過將此配置新增到 claude\_desktop\_config.json 在 Claude Desktop 中使用它:
963
964```json theme={null}
965{
966 "mcpServers": {
967 "claude-code": {
968 "type": "stdio",
969 "command": "claude",
970 "args": ["mcp", "serve"],
971 "env": {}
972 }
973 }
974}
975```
976
977<Warning>
978 **配置可執行檔路徑**:`command` 欄位必須參考 Claude Code 可執行檔。如果 `claude` 命令不在您的系統 PATH 中,您需要指定可執行檔的完整路徑。
979
980 若要找到完整路徑:
981
982 ```bash theme={null}
983 which claude
984 ```
985
986 然後在您的配置中使用完整路徑:
987
988 ```json theme={null}
989 {
990 "mcpServers": {
991 "claude-code": {
992 "type": "stdio",
993 "command": "/full/path/to/claude",
994 "args": ["mcp", "serve"],
995 "env": {}
996 }
997 }
998 }
999 ```
1000
1001 沒有正確的可執行檔路徑,您會遇到類似 `spawn claude ENOENT` 的錯誤。
1002</Warning>
1003
1004<Tip>
1005 提示:
1006
1007 * server 提供對 Claude 工具 (如 View、Edit、LS 等) 的存取
1008 * 在 Claude Desktop 中,嘗試要求 Claude 讀取目錄中的檔案、進行編輯等。
1009 * 請注意,此 MCP server 僅將 Claude Code 的工具公開給您的 MCP 用戶端,因此您自己的用戶端負責為個別工具呼叫實現使用者確認。
1010</Tip>
1011
1012## MCP 輸出限制和警告
1013
1014當 MCP 工具產生大型輸出時,Claude Code 可幫助管理 token 使用情況,以防止淹沒您的對話內容:
1015
1016* **輸出警告閾值**:當任何 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告
1017* **可配置限制**:您可以使用 `MAX_MCP_OUTPUT_TOKENS` 環境變數調整最大允許的 MCP 輸出 tokens
1018* **預設限制**:預設最大值為 25,000 個 tokens
1019* **範圍**:環境變數適用於未宣告自己限制的工具。設定 [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) 的工具使用該值代替文字內容,無論 `MAX_MCP_OUTPUT_TOKENS` 設定為什麼。傳回影像資料的工具仍受 `MAX_MCP_OUTPUT_TOKENS` 限制
1020
1021若要增加產生大型輸出的工具的限制:
1022
1023```bash theme={null}
1024export MAX_MCP_OUTPUT_TOKENS=50000
1025claude
1026```
1027
1028這在使用以下 MCP servers 時特別有用:
1029
1030* 查詢大型資料集或資料庫
1031* 產生詳細報告或文件
1032* 處理廣泛的日誌檔案或除錯資訊
1033
1034### 提高特定工具的限制
1035
1036如果您正在建立 MCP server,您可以透過在工具的 `tools/list` 回應項目中設定 `_meta["anthropic/maxResultSizeChars"]` 來允許個別工具傳回超過預設持久化到磁碟閾值的結果。Claude Code 將該工具的閾值提高到註解值,最高為 500,000 個字元的硬上限。
1037
1038這對於傳回本質上很大但必要的輸出的工具很有用,例如資料庫架構或完整檔案樹。沒有註解,超過預設閾值的結果會持久化到磁碟,並在對話中被檔案參考取代。
1039
1040```json theme={null}
1041{
1042 "name": "get_schema",
1043 "description": "Returns the full database schema",
1044 "_meta": {
1045 "anthropic/maxResultSizeChars": 200000
1046 }
1047}
1048```
1049
1050對於文字內容,註解獨立於 `MAX_MCP_OUTPUT_TOKENS` 應用,因此使用者無需提高環境變數來使用宣告它的工具。傳回影像資料的工具仍受 token 限制。
1051
1052<Warning>
1053 如果您經常遇到特定 MCP servers 的輸出警告,請考慮增加 `MAX_MCP_OUTPUT_TOKENS` 限制。您也可以要求 server 作者新增 `anthropic/maxResultSizeChars` 註解或分頁其回應。註解對傳回影像內容的工具沒有影響;對於這些,提高 `MAX_MCP_OUTPUT_TOKENS` 是唯一的選項。
1054</Warning>
1055
1056## 回應 MCP 引發請求
1057
1058MCP servers 可以使用引發在任務中途要求您提供結構化輸入。當 server 需要無法自行取得的資訊時,Claude Code 會顯示互動式對話框並將您的回應傳回給 server。您無需進行任何配置:當 server 要求時,引發對話框會自動出現。
1059
1060Servers 可以透過兩種方式要求輸入:
1061
1062* **表單模式**:Claude Code 顯示一個對話框,其中包含 server 定義的表單欄位 (例如,使用者名稱和密碼提示)。填入欄位並提交。
1063* **URL 模式**:Claude Code 開啟瀏覽器 URL 以進行驗證或批准。在瀏覽器中完成流程,然後在 CLI 中確認。
1064
1065若要自動回應引發請求而不顯示對話框,請使用 [`Elicitation` hook](/zh-TW/hooks#Elicitation)。
1066
1067如果您正在建立使用引發的 MCP server,請參閱 [MCP 引發規格](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation),了解協議詳細資訊和架構範例。
1068
1069## 使用 MCP 資源
1070
1071MCP servers 可以公開資源,您可以使用 @ 提及來參考,類似於您參考檔案的方式。
1072
1073### 參考 MCP 資源
1074
1075<Steps>
1076 <Step title="列出可用資源">
1077 在您的提示中輸入 `@` 以查看所有連接的 MCP servers 中的可用資源。資源與檔案一起出現在自動完成功能表中。
1078 </Step>
1079
1080 <Step title="參考特定資源">
1081 使用格式 `@server:protocol://resource/path` 來參考資源:
1082
1083 ```text theme={null}
1084 Can you analyze @github:issue://123 and suggest a fix?
1085 ```
1086
1087 ```text theme={null}
1088 Please review the API documentation at @docs:file://api/authentication
1089 ```
1090 </Step>
1091
1092 <Step title="多個資源參考">
1093 您可以在單個提示中參考多個資源:
1094
1095 ```text theme={null}
1096 Compare @postgres:schema://users with @docs:file://database/user-model
1097 ```
1098 </Step>
1099</Steps>
1100
1101<Tip>
1102 提示:
1103
1104 * 資源在參考時會自動取得並作為附件包含
1105 * 資源路徑在 @ 提及自動完成中可進行模糊搜尋
1106 * Claude Code 在 servers 支援時自動提供列出和讀取 MCP 資源的工具
1107 * 資源可以包含 MCP server 提供的任何類型的內容 (文字、JSON、結構化資料等)
1108</Tip>
1109
1110## 使用 MCP Tool Search 進行擴展
1111
1112Tool search 透過延遲工具定義直到 Claude 需要它們來保持 MCP 內容使用低。只有工具名稱在 session 啟動時載入,因此新增更多 MCP servers 對您的內容視窗的影響最小。
1113
1114### 工作原理
1115
1116Tool search 預設啟用。MCP 工具被延遲而不是預先載入到內容中,Claude 使用搜尋工具在任務需要時探索相關的工具。只有 Claude 實際使用的工具才會進入內容。從您的角度來看,MCP 工具的工作方式完全相同。
1117
1118如果您偏好基於閾值的載入,請設定 `ENABLE_TOOL_SEARCH=auto` 以在工具適合內容視窗的 10% 內時預先載入架構,並僅延遲溢出。請參閱 [配置 tool search](#configure-tool-search) 了解所有選項。
1119
1120### 對於 MCP server 作者
1121
1122如果您正在建立 MCP server,啟用 Tool Search 時 server 指示欄位會變得更有用。Server 指示可幫助 Claude 了解何時搜尋您的工具,類似於 [skills](/zh-TW/skills) 的工作方式。
1123
1124新增清晰、描述性的 server 指示,說明:
1125
1126* 您的工具處理的任務類別
1127* Claude 應何時搜尋您的工具
1128* 您的 server 提供的關鍵功能
1129
1130Claude Code 將工具描述和 server 指示截斷為每個 2KB。保持簡潔以避免截斷,並將關鍵詳細資訊放在開始處。
1131
1132### 配置 tool search
1133
1134Tool search 預設啟用:MCP 工具被延遲並按需探索。當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,tool search 預設停用,因為大多數代理不轉發 `tool_reference` 區塊。設定 `ENABLE_TOOL_SEARCH` 明確選擇加入。此功能需要支援 `tool_reference` 區塊的模型:Sonnet 4 及更新版本,或 Opus 4 及更新版本。Haiku 模型不支援 tool search。
1135
1136使用 `ENABLE_TOOL_SEARCH` 環境變數控制 tool search 行為:
1137
1138| 值 | 行為 |
1139| :--------- | :------------------------------------------------------- |
1140| (未設定) | 所有 MCP 工具被延遲並按需載入。當 `ANTHROPIC_BASE_URL` 是非第一方主機時回退到預先載入 |
1141| `true` | 所有 MCP 工具被延遲,包括在 Vertex AI 上和對於非第一方 `ANTHROPIC_BASE_URL` |
1142| `auto` | 閾值模式:如果工具適合內容視窗的 10% 內,則預先載入,否則延遲 |
1143| `auto:<N>` | 閾值模式,具有自訂百分比,其中 `<N>` 是 0-100 (例如,`auto:5` 表示 5%) |
1144| `false` | 所有 MCP 工具預先載入,無延遲 |
1145
1146```bash theme={null}
1147# 使用自訂 5% 閾值
1148ENABLE_TOOL_SEARCH=auto:5 claude
1149
1150# 完全停用 tool search
1151ENABLE_TOOL_SEARCH=false claude
1152```
1153
1154或在您的 [settings.json `env` 欄位](/zh-TW/settings#available-settings) 中設定值。
1155
1156您也可以特別停用 `ToolSearch` 工具:
1157
1158```json theme={null}
1159{
1160 "permissions": {
1161 "deny": ["ToolSearch"]
1162 }
1163}
1164```
1165
1166### 豁免伺服器延遲
1167
1168如果伺服器的工具應始終對 Claude 可見而無需搜尋步驟,請在該伺服器的配置中將 `alwaysLoad` 設定為 `true`。該伺服器的每個工具隨後都會在 session 啟動時載入到內容中,無論 `ENABLE_TOOL_SEARCH` 設定如何。對於 Claude 在每個回合都需要的少量工具,請使用此選項,因為每個預先載入的工具會消耗內容,否則這些內容將可用於您的對話。
1169
1170以下 `.mcp.json` 項目豁免一個 HTTP 伺服器,同時保持其他伺服器延遲:
1171
1172```json theme={null}
1173{
1174 "mcpServers": {
1175 "core-tools": {
1176 "type": "http",
1177 "url": "https://mcp.example.com/mcp",
1178 "alwaysLoad": true
1179 }
1180 }
1181}
1182```
1183
1184`alwaysLoad` 欄位在所有伺服器類型上可用,需要 Claude Code v2.1.121 或更新版本。MCP 伺服器也可以透過在工具的 `_meta` 物件中包含 `"anthropic/alwaysLoad": true` 來標記個別工具為始終載入,這對該工具只有相同的效果。
1185
1186## 使用 MCP 提示作為命令
1187
1188MCP servers 可以公開提示,這些提示在 Claude Code 中變成可用的命令。
1189
1190### 執行 MCP 提示
1191
1192<Steps>
1193 <Step title="探索可用提示">
1194 輸入 `/` 以查看所有可用命令,包括來自 MCP servers 的命令。MCP 提示以 `/mcp__servername__promptname` 的格式出現。
1195 </Step>
1196
1197 <Step title="執行沒有引數的提示">
1198 ```text theme={null}
1199 /mcp__github__list_prs
1200 ```
1201 </Step>
1202
1203 <Step title="執行帶有引數的提示">
1204 許多提示接受引數。在命令後以空格分隔的方式傳遞它們:
1205
1206 ```text theme={null}
1207 /mcp__github__pr_review 456
1208 ```
1209
1210 ```text theme={null}
1211 /mcp__jira__create_issue "Bug in login flow" high
1212 ```
1213 </Step>
1214</Steps>
1215
1216<Tip>
1217 提示:
1218
1219 * MCP 提示從連接的 servers 動態探索
1220 * 引數根據提示的定義參數進行解析
1221 * 提示結果直接注入到對話中
1222 * Server 和提示名稱已標準化 (空格變成底線)
1223</Tip>
1224
1225## 受管理的 MCP 配置
1226
1227對於需要對 MCP servers 進行集中控制的組織,Claude Code 支援兩個配置選項:
1228
12291. **使用 `managed-mcp.json` 的獨佔控制**:部署一組固定的 MCP servers,使用者無法修改或擴展
12302. **使用允許清單/拒絕清單的基於原則的控制**:允許使用者新增自己的 servers,但限制允許的 servers
1231
1232這些選項允許 IT 管理員:
1233
1234* **控制 MCP servers 員工可以存取的內容**:在整個組織中部署一組標準化的已批准 MCP servers
1235* **防止未授權的 MCP servers**:限制使用者新增未批准的 MCP servers
1236* **完全停用 MCP**:如果需要,完全移除 MCP 功能
1237
1238### 選項 1:使用 managed-mcp.json 的獨佔控制
1239
1240當您部署 `managed-mcp.json` 檔案時,它對所有 MCP servers 進行**獨佔控制**。使用者無法新增、修改或使用此檔案中定義的 MCP servers 以外的任何 MCP servers。這是希望完全控制的組織的最簡單方法。
1241
1242系統管理員將配置檔案部署到系統範圍的目錄:
1243
1244* macOS:`/Library/Application Support/ClaudeCode/managed-mcp.json`
1245* Linux 和 WSL:`/etc/claude-code/managed-mcp.json`
1246* Windows:`C:\Program Files\ClaudeCode\managed-mcp.json`
1247
1248<Note>
1249 這些是系統範圍的路徑 (不是像 `~/Library/...` 這樣的使用者主目錄),需要管理員權限。它們設計為由 IT 管理員部署。
1250</Note>
1251
1252`managed-mcp.json` 檔案使用與標準 `.mcp.json` 檔案相同的格式:
1253
1254```json theme={null}
1255{
1256 "mcpServers": {
1257 "github": {
1258 "type": "http",
1259 "url": "https://api.githubcopilot.com/mcp/"
1260 },
1261 "sentry": {
1262 "type": "http",
1263 "url": "https://mcp.sentry.dev/mcp"
1264 },
1265 "company-internal": {
1266 "type": "stdio",
1267 "command": "/usr/local/bin/company-mcp-server",
1268 "args": ["--config", "/etc/company/mcp-config.json"],
1269 "env": {
1270 "COMPANY_API_URL": "https://internal.company.com"
1271 }
1272 }
1273 }
1274}
1275```
1276
1277### 選項 2:使用允許清單和拒絕清單的基於原則的控制
1278
1279管理員可以允許使用者配置自己的 MCP servers,同時對允許的 servers 強制執行限制,而不是進行獨佔控制。此方法在 [受管理設定檔案](/zh-TW/settings#settings-files) 中使用 `allowedMcpServers` 和 `deniedMcpServers`。
1280
1281<Note>
1282 **在選項之間選擇**:當您想要部署一組固定的 servers 而不進行使用者自訂時,使用選項 1 (`managed-mcp.json`)。當您想要允許使用者在原則約束內新增自己的 servers 時,使用選項 2 (允許清單/拒絕清單)。
1283</Note>
1284
1285#### 限制選項
1286
1287允許清單或拒絕清單中的每個項目可以透過三種方式限制 servers:
1288
12891. **按 server 名稱** (`serverName`):符合 server 的已配置名稱
12902. **按命令** (`serverCommand`):符合用於啟動 stdio servers 的確切命令和引數
12913. **按 URL 模式** (`serverUrl`):符合遠端 server URLs,支援萬用字元
1292
1293**重要**:每個項目必須恰好有 `serverName`、`serverCommand` 或 `serverUrl` 之一。
1294
1295#### 配置範例
1296
1297```json theme={null}
1298{
1299 "allowedMcpServers": [
1300 // 按 server 名稱允許
1301 { "serverName": "github" },
1302 { "serverName": "sentry" },
1303
1304 // 按確切命令允許 (對於 stdio servers)
1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1307
1308 // 按 URL 模式允許 (對於遠端 servers)
1309 { "serverUrl": "https://mcp.company.com/*" },
1310 { "serverUrl": "https://*.internal.corp/*" }
1311 ],
1312 "deniedMcpServers": [
1313 // 按 server 名稱阻止
1314 { "serverName": "dangerous-server" },
1315
1316 // 按確切命令阻止 (對於 stdio servers)
1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1318
1319 // 按 URL 模式阻止 (對於遠端 servers)
1320 { "serverUrl": "https://*.untrusted.com/*" }
1321 ]
1322}
1323```
1324
1325#### 基於命令的限制如何工作
1326
1327**確切符合**:
1328
1329* 命令陣列必須**確切**符合 - 命令和所有引數的順序正確
1330* 範例:`["npx", "-y", "server"]` 將**不**符合 `["npx", "server"]` 或 `["npx", "-y", "server", "--flag"]`
1331
1332**Stdio server 行為**:
1333
1334* 當允許清單包含**任何** `serverCommand` 項目時,stdio servers **必須**符合其中一個命令
1335* Stdio servers 在存在命令限制時無法單獨按名稱通過
1336* 這確保管理員可以強制執行允許執行的命令
1337
1338**非 stdio server 行為**:
1339
1340* 遠端 servers (HTTP、SSE、WebSocket) 在允許清單中存在 `serverUrl` 項目時使用基於 URL 的符合
1341* 如果不存在 URL 項目,遠端 servers 會回退到基於名稱的符合
1342* 命令限制不適用於遠端 servers
1343
1344#### 基於 URL 的限制如何工作
1345
1346URL 模式使用 `*` 支援萬用字元以符合任何字元序列。這對於允許整個網域或子網域很有用。
1347
1348**萬用字元範例**:
1349
1350* `https://mcp.company.com/*` - 允許特定網域上的所有路徑
1351* `https://*.example.com/*` - 允許 example.com 的任何子網域
1352* `http://localhost:*/*` - 允許 localhost 上的任何連接埠
1353
1354**遠端 server 行為**:
1355
1356* 當允許清單包含**任何** `serverUrl` 項目時,遠端 servers **必須**符合其中一個 URL 模式
1357* 遠端 servers 在存在 URL 限制時無法單獨按名稱通過
1358* 這確保管理員可以強制執行允許的遠端端點
1359
1360<Accordion title="範例:僅 URL 允許清單">
1361 ```json theme={null}
1362 {
1363 "allowedMcpServers": [
1364 { "serverUrl": "https://mcp.company.com/*" },
1365 { "serverUrl": "https://*.internal.corp/*" }
1366 ]
1367 }
1368 ```
1369
1370 **結果**:
1371
1372 * `https://mcp.company.com/api` 上的 HTTP server:✅ 允許 (符合 URL 模式)
1373 * `https://api.internal.corp/mcp` 上的 HTTP server:✅ 允許 (符合萬用字元子網域)
1374 * `https://external.com/mcp` 上的 HTTP server:❌ 阻止 (不符合任何 URL 模式)
1375 * 任何命令的 Stdio server:❌ 阻止 (沒有名稱或命令項目可符合)
1376</Accordion>
1377
1378<Accordion title="範例:僅命令允許清單">
1379 ```json theme={null}
1380 {
1381 "allowedMcpServers": [
1382 { "serverCommand": ["npx", "-y", "approved-package"] }
1383 ]
1384 }
1385 ```
1386
1387 **結果**:
1388
1389 * 使用 `["npx", "-y", "approved-package"]` 的 Stdio server:✅ 允許 (符合命令)
1390 * 使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (不符合命令)
1391 * 名為「my-api」的 HTTP server:❌ 阻止 (沒有名稱項目可符合)
1392</Accordion>
1393
1394<Accordion title="範例:混合名稱和命令允許清單">
1395 ```json theme={null}
1396 {
1397 "allowedMcpServers": [
1398 { "serverName": "github" },
1399 { "serverCommand": ["npx", "-y", "approved-package"] }
1400 ]
1401 }
1402 ```
1403
1404 **結果**:
1405
1406 * 名為「local-tool」、使用 `["npx", "-y", "approved-package"]` 的 Stdio server:✅ 允許 (符合命令)
1407 * 名為「local-tool」、使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (存在命令項目但不符合)
1408 * 名為「github」、使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (存在命令限制時 stdio servers 必須符合命令)
1409 * 名為「github」的 HTTP server:✅ 允許 (符合名稱)
1410 * 名為「other-api」的 HTTP server:❌ 阻止 (名稱不符合)
1411</Accordion>
1412
1413<Accordion title="範例:僅名稱允許清單">
1414 ```json theme={null}
1415 {
1416 "allowedMcpServers": [
1417 { "serverName": "github" },
1418 { "serverName": "internal-tool" }
1419 ]
1420 }
1421 ```
1422
1423 **結果**:
1424
1425 * 名為「github」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)
1426 * 名為「internal-tool」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)
1427 * 名為「github」的 HTTP server:✅ 允許 (符合名稱)
1428 * 任何名為「other」的 server:❌ 阻止 (名稱不符合)
1429</Accordion>
1430
1431#### 允許清單行為 (`allowedMcpServers`)
1432
1433* `undefined` (預設):無限制 - 使用者可以配置任何 MCP server
1434* 空陣列 `[]`:完全鎖定 - 使用者無法配置任何 MCP servers
1435* 項目清單:使用者只能配置符合名稱、命令或 URL 模式的 servers
1436
1437#### 拒絕清單行為 (`deniedMcpServers`)
1438
1439* `undefined` (預設):沒有 servers 被阻止
1440* 空陣列 `[]`:沒有 servers 被阻止
1441* 項目清單:指定的 servers 在所有範圍中被明確阻止
1442
1443#### 重要注意事項
1444
1445* **選項 1 和選項 2 可以結合**:如果 `managed-mcp.json` 存在,它具有獨佔控制,使用者無法新增 servers。允許清單/拒絕清單仍然適用於受管理的 servers 本身。
1446* **拒絕清單具有絕對優先順序**:如果 server 符合拒絕清單項目 (按名稱、命令或 URL),即使它在允許清單上也會被阻止
1447* 基於名稱、基於命令和基於 URL 的限制一起工作:如果 server 符合**任何**名稱項目、命令項目或 URL 模式,它就會通過 (除非被拒絕清單阻止)
1448
1449<Note>
1450 **使用 `managed-mcp.json` 時**:使用者無法透過 `claude mcp add` 或配置檔案新增 MCP servers。`allowedMcpServers` 和 `deniedMcpServers` 設定仍然適用於篩選實際載入的受管理 servers。
1451</Note>