使用 MCP 可以做什麼
連接 MCP servers 後,您可以要求 Claude Code:- 從問題追蹤器實現功能:“新增 JIRA 問題 ENG-4521 中描述的功能,並在 GitHub 上建立 PR。”
- 分析監控資料:“檢查 Sentry 和 Statsig,以檢查 ENG-4521 中描述的功能使用情況。”
- 查詢資料庫:“根據我們的 PostgreSQL 資料庫,找到 10 個使用功能 ENG-4521 的隨機使用者的電子郵件。”
- 整合設計:“根據在 Slack 中發佈的新 Figma 設計更新我們的標準電子郵件範本”
- 自動化工作流程:“建立 Gmail 草稿,邀請這 10 個使用者參加關於新功能的回饋會議。”
- 回應外部事件:MCP server 也可以充當 channel,將訊息推送到您的 session 中,因此當您不在時,Claude 可以回應 Telegram 訊息、Discord 聊天或 webhook 事件。
熱門 MCP servers
以下是一些您可以連接到 Claude Code 的常用 MCP servers:需要特定的整合? 在 GitHub 上找到數百個更多 MCP servers,或使用 MCP SDK 建立您自己的。
安裝 MCP servers
MCP servers 可以根據您的需求以三種不同的方式進行配置:選項 1:新增遠端 HTTP server
HTTP servers 是連接到遠端 MCP servers 的推薦選項。這是雲端服務最廣泛支援的傳輸方式。選項 2:新增遠端 SSE server
選項 3:新增本機 stdio server
Stdio servers 在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。重要:選項順序所有選項(
--transport、--env、--scope、--header)必須在 server 名稱之前。然後 -- (雙破折號) 將 server 名稱與傳遞給 MCP server 的命令和引數分開。例如:claude mcp add --transport stdio myserver -- npx server→ 執行npx serverclaude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080→ 執行python server.py --port 8080,環境中有KEY=value
管理您的 servers
配置後,您可以使用這些命令管理您的 MCP servers:動態工具更新
Claude Code 支援 MCPlist_changed 通知,允許 MCP servers 動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP server 傳送 list_changed 通知時,Claude Code 會自動重新整理該 server 的可用功能。
使用 channels 推送訊息
MCP server 也可以直接將訊息推送到您的 session 中,以便 Claude 可以回應外部事件,例如 CI 結果、監控警報或聊天訊息。若要啟用此功能,您的 server 宣告claude/channel 功能,並在啟動時使用 --channels 旗標選擇加入。請參閱 Channels 以使用官方支援的 channel,或 Channels reference 以建立您自己的。
Plugin 提供的 MCP servers
Plugins 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。 Plugin MCP servers 的工作方式:- Plugins 在 plugin 根目錄的
.mcp.json中或在plugin.json中內聯定義 MCP servers - 啟用 plugin 時,其 MCP servers 會自動啟動
- Plugin MCP 工具與手動配置的 MCP 工具一起出現
- Plugin servers 透過 plugin 安裝進行管理 (不是
/mcp命令)
.mcp.json 中:
plugin.json 中內聯:
- 自動生命週期:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行
/reload-plugins以連接或斷開其 MCP servers - 環境變數:使用
${CLAUDE_PLUGIN_ROOT}表示 plugin 相對路徑,以及${CLAUDE_PLUGIN_DATA}表示 persistent state 在 plugin 更新後仍然存在 - 使用者環境存取:存取與手動配置的 servers 相同的環境變數
- 多種傳輸類型:支援 stdio、SSE 和 HTTP 傳輸 (傳輸支援可能因 server 而異)
- 捆綁分發:工具和 servers 一起打包
- 自動設定:無需手動 MCP 配置
- 團隊一致性:安裝 plugin 時,每個人都會獲得相同的工具
MCP 安裝範圍
MCP servers 可以在三個不同的範圍級別進行配置,每個級別都用於管理 server 可存取性和共享的不同目的。了解這些範圍可幫助您確定為特定需求配置 servers 的最佳方式。本機範圍
本機範圍的 servers 代表預設配置級別,儲存在您專案路徑下的~/.claude.json 中。這些 servers 對您保持私密,只有在專案目錄中工作時才可存取。此範圍非常適合個人開發 servers、實驗配置或包含不應共享的敏感認證的 servers。
MCP servers 的「本機範圍」術語與一般本機設定不同。MCP 本機範圍的 servers 儲存在
~/.claude.json (您的主目錄) 中,而一般本機設定使用 .claude/settings.local.json (在專案目錄中)。請參閱 Settings 了解設定檔案位置的詳細資訊。專案範圍
專案範圍的 servers 透過在專案根目錄中儲存配置在.mcp.json 檔案中來啟用團隊協作。此檔案設計為簽入版本控制,確保所有團隊成員都能存取相同的 MCP 工具和服務。新增專案範圍的 server 時,Claude Code 會自動建立或更新此檔案,使用適當的配置結構。
.mcp.json 檔案遵循標準化格式:
.mcp.json 檔案的專案範圍 servers 之前會提示批准。如果您需要重設這些批准選擇,請使用 claude mcp reset-project-choices 命令。
使用者範圍
使用者範圍的 servers 儲存在~/.claude.json 中,並提供跨專案可存取性,使其在您機器上的所有專案中可用,同時對您的使用者帳戶保持私密。此範圍非常適合個人公用程式 servers、開發工具或您在不同專案中經常使用的服務。
選擇正確的範圍
根據以下條件選擇您的範圍:- 本機範圍:個人 servers、實驗配置或特定於一個專案的敏感認證
- 專案範圍:團隊共享的 servers、專案特定的工具或協作所需的服務
- 使用者範圍:跨多個專案所需的個人公用程式、開發工具或經常使用的服務
MCP servers 儲存在哪裡?
- 使用者和本機範圍:
~/.claude.json(在mcpServers欄位或專案路徑下) - 專案範圍:專案根目錄中的
.mcp.json(簽入原始碼控制) - 受管理:系統目錄中的
managed-mcp.json(請參閱 受管理 MCP 配置)
範圍階層和優先順序
MCP server 配置遵循清晰的優先順序階層。當相同名稱的 servers 存在於多個範圍時,系統透過優先考慮本機範圍的 servers 來解決衝突,其次是專案範圍的 servers,最後是使用者範圍的 servers。此設計確保個人配置可以在需要時覆蓋共享配置。.mcp.json 中的環境變數擴展
Claude Code 支援 .mcp.json 檔案中的環境變數擴展,允許團隊共享配置,同時保持機器特定路徑和 API 金鑰等敏感值的靈活性。
支援的語法:
${VAR}- 擴展為環境變數VAR的值${VAR:-default}- 如果設定了VAR,則擴展為VAR,否則使用default
command- server 可執行檔路徑args- 命令列引數env- 傳遞給 server 的環境變數url- 對於 HTTP server 類型headers- 對於 HTTP server 驗證
實用範例
範例:使用 Sentry 監控錯誤
範例:連接到 GitHub 進行程式碼審查
範例:查詢您的 PostgreSQL 資料庫
使用遠端 MCP servers 進行驗證
許多雲端 MCP servers 需要驗證。Claude Code 支援 OAuth 2.0 以進行安全連接。使用固定的 OAuth 回呼連接埠
某些 MCP servers 需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用--callback-port 固定連接埠,使其符合 http://localhost:PORT/callback 形式的預先註冊重新導向 URI。
您可以單獨使用 --callback-port (使用動態用戶端註冊) 或與 --client-id 一起使用 (使用預先配置的認證)。
使用預先配置的 OAuth 認證
某些 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 時提供認證。使用 server 註冊 OAuth 應用程式
透過 server 的開發人員入口網站建立應用程式,並記下您的用戶端 ID 和用戶端密碼。許多 servers 也需要重新導向 URI。如果是這樣,請選擇一個連接埠並以
http://localhost:PORT/callback 的格式註冊重新導向 URI。在下一步中使用該相同連接埠搭配 --callback-port。使用您的認證新增 server
選擇以下方法之一。用於
--callback-port 的連接埠可以是任何可用的連接埠。它只需要符合您在上一步中註冊的重新導向 URI。- claude mcp add
- claude mcp add-json
- claude mcp add-json (僅回呼連接埠)
- CI / env var
使用
--client-id 傳遞您應用程式的用戶端 ID。--client-secret 旗標會提示輸入帶有遮罩輸入的密碼:覆蓋 OAuth 中繼資料探索
如果您的 MCP server 在標準 OAuth 中繼資料端點 (/.well-known/oauth-authorization-server) 上返回錯誤,但公開了工作的 OIDC 端點,您可以告訴 Claude Code 直接從您指定的 URL 取得 OAuth 中繼資料,繞過標準探索鏈。
在 .mcp.json 中 server 配置的 oauth 物件中設定 authServerMetadataUrl:
https://。此選項需要 Claude Code v2.1.64 或更新版本。
使用動態標頭進行自訂驗證
如果您的 MCP server 使用 OAuth 以外的驗證方案 (例如 Kerberos、短期 tokens 或內部 SSO),請使用headersHelper 在連接時產生請求標頭。Claude Code 執行命令並將其輸出合併到連接標頭中。
- 命令必須將字串鍵值對的 JSON 物件寫入 stdout
- 命令在 shell 中執行,逾時時間為 10 秒
- 動態標頭會覆蓋任何具有相同名稱的靜態
headers
headersHelper 執行任意 shell 命令。在專案或本機範圍定義時,它僅在您接受工作區信任對話框後執行。從 JSON 配置新增 MCP servers
如果您有 MCP server 的 JSON 配置,您可以直接新增它:從 Claude Desktop 匯入 MCP servers
如果您已在 Claude Desktop 中配置了 MCP servers,您可以匯入它們:使用來自 Claude.ai 的 MCP servers
如果您已使用 Claude.ai 帳戶登入 Claude Code,您在 Claude.ai 中新增的 MCP servers 會自動在 Claude Code 中可用:在 Claude.ai 中配置 MCP servers
在 claude.ai/settings/connectors 新增 servers。在 Team 和 Enterprise 計畫上,只有管理員可以新增 servers。
ENABLE_CLAUDEAI_MCP_SERVERS 環境變數設定為 false:
使用 Claude Code 作為 MCP server
您可以使用 Claude Code 本身作為其他應用程式可以連接到的 MCP server:MCP 輸出限制和警告
當 MCP 工具產生大型輸出時,Claude Code 可幫助管理 token 使用情況,以防止淹沒您的對話內容:- 輸出警告閾值:當任何 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告
- 可配置限制:您可以使用
MAX_MCP_OUTPUT_TOKENS環境變數調整最大允許的 MCP 輸出 tokens - 預設限制:預設最大值為 25,000 個 tokens
- 查詢大型資料集或資料庫
- 產生詳細報告或文件
- 處理廣泛的日誌檔案或除錯資訊
回應 MCP 引發請求
MCP servers 可以在任務中途使用引發來要求您提供結構化輸入。當 server 需要無法自行取得的資訊時,Claude Code 會顯示互動式對話框並將您的回應傳回給 server。您無需進行任何配置:當 server 要求時,引發對話框會自動出現。 Servers 可以透過兩種方式要求輸入:- 表單模式:Claude Code 顯示一個對話框,其中包含 server 定義的表單欄位 (例如,使用者名稱和密碼提示)。填入欄位並提交。
- URL 模式:Claude Code 開啟瀏覽器 URL 以進行驗證或批准。在瀏覽器中完成流程,然後在 CLI 中確認。
Elicitation hook。
如果您正在建立使用引發的 MCP server,請參閱 MCP 引發規格,了解協議詳細資訊和架構範例。
使用 MCP 資源
MCP servers 可以公開資源,您可以使用 @ 提及來參考,類似於您參考檔案的方式。參考 MCP 資源
使用 MCP Tool Search 進行擴展
當您配置了許多 MCP servers 時,工具定義可能會消耗您內容視窗的很大一部分。MCP Tool Search 透過動態按需載入工具而不是預先載入所有工具來解決此問題。工作原理
當您的 MCP 工具描述會消耗超過 10% 的內容視窗時,Claude Code 會自動啟用 Tool Search。您可以 調整此閾值 或完全停用 tool search。觸發時:- MCP 工具被延遲而不是預先載入到內容中
- Claude 使用搜尋工具在需要時探索相關的 MCP 工具
- 只有 Claude 實際需要的工具才會載入到內容中
- MCP 工具從您的角度繼續完全正常工作
對於 MCP server 作者
如果您正在建立 MCP server,啟用 Tool Search 時 server 指示欄位會變得更有用。Server 指示可幫助 Claude 了解何時搜尋您的工具,類似於 skills 的工作方式。 新增清晰、描述性的 server 指示,說明:- 您的工具處理的任務類別
- Claude 應何時搜尋您的工具
- 您的 server 提供的關鍵功能
配置 tool search
Tool search 預設啟用:MCP 工具被延遲並按需探索。當ANTHROPIC_BASE_URL 指向非第一方主機時,tool search 預設停用,因為大多數代理不轉發 tool_reference 區塊。如果您的代理執行此操作,請明確設定 ENABLE_TOOL_SEARCH。此功能需要支援 tool_reference 區塊的模型:Sonnet 4 及更新版本,或 Opus 4 及更新版本。Haiku 模型不支援 tool search。
使用 ENABLE_TOOL_SEARCH 環境變數控制 tool search 行為:
| 值 | 行為 |
|---|---|
| (未設定) | 預設啟用。當 ANTHROPIC_BASE_URL 是非第一方主機時停用 |
true | 始終啟用,包括對於非第一方 ANTHROPIC_BASE_URL |
auto | 當 MCP 工具超過 10% 的內容時啟動 |
auto:<N> | 在自訂閾值啟動,其中 <N> 是百分比 (例如,auto:5 表示 5%) |
false | 停用,所有 MCP 工具預先載入 |
env 欄位 中設定值。
您也可以使用 disallowedTools 設定特別停用 MCPSearch 工具:
使用 MCP 提示作為命令
MCP servers 可以公開提示,這些提示在 Claude Code 中變成可用的命令。執行 MCP 提示
受管理的 MCP 配置
對於需要對 MCP servers 進行集中控制的組織,Claude Code 支援兩個配置選項:- 使用
managed-mcp.json的獨佔控制:部署一組固定的 MCP servers,使用者無法修改或擴展 - 使用允許清單/拒絕清單的基於原則的控制:允許使用者新增自己的 servers,但限制允許的 servers
- 控制 MCP servers 員工可以存取的內容:在整個組織中部署一組標準化的已批准 MCP servers
- 防止未授權的 MCP servers:限制使用者新增未批准的 MCP servers
- 完全停用 MCP:如果需要,完全移除 MCP 功能
選項 1:使用 managed-mcp.json 的獨佔控制
當您部署managed-mcp.json 檔案時,它對所有 MCP servers 進行獨佔控制。使用者無法新增、修改或使用此檔案中定義的 MCP servers 以外的任何 MCP servers。這是希望完全控制的組織的最簡單方法。
系統管理員將配置檔案部署到系統範圍的目錄:
- macOS:
/Library/Application Support/ClaudeCode/managed-mcp.json - Linux 和 WSL:
/etc/claude-code/managed-mcp.json - Windows:
C:\Program Files\ClaudeCode\managed-mcp.json
這些是系統範圍的路徑 (不是像
~/Library/... 這樣的使用者主目錄),需要管理員權限。它們設計為由 IT 管理員部署。managed-mcp.json 檔案使用與標準 .mcp.json 檔案相同的格式:
選項 2:使用允許清單和拒絕清單的基於原則的控制
管理員可以允許使用者配置自己的 MCP servers,同時對允許的 servers 強制執行限制,而不是進行獨佔控制。此方法在 受管理設定檔案 中使用allowedMcpServers 和 deniedMcpServers。
在選項之間選擇:當您想要部署一組固定的 servers 而不進行使用者自訂時,使用選項 1 (
managed-mcp.json)。當您想要允許使用者在原則約束內新增自己的 servers 時,使用選項 2 (允許清單/拒絕清單)。限制選項
允許清單或拒絕清單中的每個項目可以透過三種方式限制 servers:- 按 server 名稱 (
serverName):符合 server 的已配置名稱 - 按命令 (
serverCommand):符合用於啟動 stdio servers 的確切命令和引數 - 按 URL 模式 (
serverUrl):符合遠端 server URLs,支援萬用字元
serverName、serverCommand 或 serverUrl 之一。
配置範例
基於命令的限制如何工作
確切符合:- 命令陣列必須確切符合 - 命令和所有引數的順序正確
- 範例:
["npx", "-y", "server"]將不符合["npx", "server"]或["npx", "-y", "server", "--flag"]
- 當允許清單包含任何
serverCommand項目時,stdio servers 必須符合其中一個命令 - Stdio servers 在存在命令限制時無法單獨按名稱通過
- 這確保管理員可以強制執行允許執行的命令
- 遠端 servers (HTTP、SSE、WebSocket) 在允許清單中存在
serverUrl項目時使用基於 URL 的符合 - 如果不存在 URL 項目,遠端 servers 會回退到基於名稱的符合
- 命令限制不適用於遠端 servers
基於 URL 的限制如何工作
URL 模式使用* 支援萬用字元以符合任何字元序列。這對於允許整個網域或子網域很有用。
萬用字元範例:
https://mcp.company.com/*- 允許特定網域上的所有路徑https://*.example.com/*- 允許 example.com 的任何子網域http://localhost:*/*- 允許 localhost 上的任何連接埠
- 當允許清單包含任何
serverUrl項目時,遠端 servers 必須符合其中一個 URL 模式 - 遠端 servers 在存在 URL 限制時無法單獨按名稱通過
- 這確保管理員可以強制執行允許的遠端端點
範例:僅 URL 允許清單
範例:僅 URL 允許清單
https://mcp.company.com/api上的 HTTP server:✅ 允許 (符合 URL 模式)https://api.internal.corp/mcp上的 HTTP server:✅ 允許 (符合萬用字元子網域)https://external.com/mcp上的 HTTP server:❌ 阻止 (不符合任何 URL 模式)- 任何命令的 Stdio server:❌ 阻止 (沒有名稱或命令項目可符合)
範例:僅命令允許清單
範例:僅命令允許清單
- 使用
["npx", "-y", "approved-package"]的 Stdio server:✅ 允許 (符合命令) - 使用
["node", "server.js"]的 Stdio server:❌ 阻止 (不符合命令) - 名為「my-api」的 HTTP server:❌ 阻止 (沒有名稱項目可符合)
範例:混合名稱和命令允許清單
範例:混合名稱和命令允許清單
- 名為「local-tool」、使用
["npx", "-y", "approved-package"]的 Stdio server:✅ 允許 (符合命令) - 名為「local-tool」、使用
["node", "server.js"]的 Stdio server:❌ 阻止 (存在命令項目但不符合) - 名為「github」、使用
["node", "server.js"]的 Stdio server:❌ 阻止 (存在命令限制時 stdio servers 必須符合命令) - 名為「github」的 HTTP server:✅ 允許 (符合名稱)
- 名為「other-api」的 HTTP server:❌ 阻止 (名稱不符合)
範例:僅名稱允許清單
範例:僅名稱允許清單
- 名為「github」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)
- 名為「internal-tool」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)
- 名為「github」的 HTTP server:✅ 允許 (符合名稱)
- 任何名為「other」的 server:❌ 阻止 (名稱不符合)
允許清單行為 (allowedMcpServers)
undefined(預設):無限制 - 使用者可以配置任何 MCP server- 空陣列
[]:完全鎖定 - 使用者無法配置任何 MCP servers - 項目清單:使用者只能配置符合名稱、命令或 URL 模式的 servers
拒絕清單行為 (deniedMcpServers)
undefined(預設):沒有 servers 被阻止- 空陣列
[]:沒有 servers 被阻止 - 項目清單:指定的 servers 在所有範圍中被明確阻止
重要注意事項
- 選項 1 和選項 2 可以結合:如果
managed-mcp.json存在,它具有獨佔控制,使用者無法新增 servers。允許清單/拒絕清單仍然適用於受管理的 servers 本身。 - 拒絕清單具有絕對優先順序:如果 server 符合拒絕清單項目 (按名稱、命令或 URL),即使它在允許清單上也會被阻止
- 基於名稱、基於命令和基於 URL 的限制一起工作:如果 server 符合任何名稱項目、命令項目或 URL 模式,它就會通過 (除非被拒絕清單阻止)
使用
managed-mcp.json 時:使用者無法透過 claude mcp add 或配置檔案新增 MCP servers。allowedMcpServers 和 deniedMcpServers 設定仍然適用於篩選實際載入的受管理 servers。