Claude 的能力預設受限於它自己的知識和你給的資訊。MCP(Model Context Protocol) 打破這個限制——讓 Claude 直接連接外部工具:讀取你的資料庫、操作本地檔案系統、呼叫 API,甚至控制瀏覽器。
MCP 是 Anthropic 制定的開放標準,任何人都可以寫 MCP Server。這篇說明如何在 Claude Code 裡安裝和使用 MCP。
MCP 的運作原理
MCP Server 是一個跑在本地(或遠端)的程式,負責代理 Claude 和外部系統的溝通:
Claude Code ←→ MCP Server ←→ 外部工具(資料庫、API、檔案系統...)
Claude Code 透過標準化的 MCP 協議和 Server 溝通。MCP Server 收到請求後,執行對應操作,把結果回傳給 Claude。
這個設計讓 Claude 不需要知道每個服務的 API 細節,只需要說「幫我查資料庫裡的 X」,MCP Server 負責實際執行。
常用 MCP Servers
社群有大量現成的 MCP Server。官方維護的參考實作(reference servers)和常用的服務商官方 Server:
| Server | 功能 |
|---|---|
@modelcontextprotocol/server-filesystem |
讀寫本地檔案系統(只開放指定目錄) |
mcp-server-fetch |
抓取網頁並轉成適合 AI 閱讀的內容 |
mcp-server-git |
讀取、搜尋、操作本地 Git repo |
@modelcontextprotocol/server-memory |
以知識圖譜保存跨對話的資訊 |
mcp-server-time |
時間與時區轉換 |
@modelcontextprotocol/server-sequential-thinking |
引導逐步拆解問題 |
GitHub 官方 github-mcp-server |
操作 GitHub repo、PR、issue、Actions |
mcp-server-cloudflare |
操作 Cloudflare 服務 |
⚠️ 早期很多教學用的
@modelcontextprotocol/server-github、server-postgres、server-sqlite、server-brave-search、server-puppeteer、server-slack已被移到 servers-archived 封存(唯讀、不再修安全漏洞),新設定不要再用。GitHub 改用 GitHub 官方的github-mcp-server;資料庫、瀏覽器、Slack 等請找服務商或社群仍在維護的 Server。
完整清單:github.com/modelcontextprotocol/servers(fetch、git、time 是 Python 套件,用 uvx 執行;其餘用 npx)
安裝和設定
設定檔位置
Claude Code 的 MCP 設定不在 settings.json,而是:
- 專案(可分享):專案根目錄的
.mcp.json(可提交到 git,團隊共用;不要把密碼寫進去) - 個人(全域/本機):
~/.claude.json(user scope 所有專案都能用;local scope 只對當前專案、且不進 git)
最簡單的方式是用指令新增,不用手動改 JSON:
# 新增本地(stdio)Server;--scope 可選 local(預設)/ project / user
claude mcp add --scope user filesystem -- npx -y @modelcontextprotocol/server-filesystem /Users/myuser/projects
# 列出已設定的 Server
claude mcp list
如果你用的是 Claude Desktop(桌面 App),設定檔則是 claude_desktop_config.json(設定 → 開發者 → 編輯設定),格式同樣是 mcpServers。
基本設定格式(.mcp.json)
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-name"],
"env": {
"ENV_VAR": "value"
}
}
}
}
範例:設定 Filesystem Server
允許 Claude Code 讀寫指定目錄:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/myuser/projects",
"/Users/myuser/documents"
]
}
}
}
設定後,Claude Code 可以直接讀取這些目錄的檔案,不需要你複製貼上內容。
範例:設定 GitHub Server
使用 GitHub 官方的 github-mcp-server(遠端版,不用在本機跑程式)。需要先到 GitHub 建立 Personal Access Token(Settings → Developer settings → Personal access tokens,建議用 fine-grained token、只授權需要的 repo):
claude mcp add --transport http github https://api.githubcopilot.com/mcp \
--header "Authorization: Bearer YOUR_GITHUB_PAT"
GitHub 官方安裝說明對新版 Claude Code 也提供 claude mcp add-json 寫法,以 github-mcp-server 文件 為準。
範例:設定 Git Server
讓 Claude 讀取本機 repo 的歷史、diff 與分支(需先安裝 uv):
{
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "/Users/myuser/projects/blog"]
}
}
}
確認 MCP Server 運作
啟動 Claude Code 後,輸入:
/mcp
會列出所有已設定的 MCP Server 和它們的狀態。如果 Server 沒有正常啟動,這裡會顯示錯誤。
使用 MCP Server
設定完成後,在 Claude Code 對話裡直接說你要做什麼,Claude 會自動呼叫對應的 MCP Server:
幫我看 blog repo 最近 5 個 commit 改了什麼
讀取 ~/projects/blog/README.md 的內容
去 GitHub 看一下我最近有哪些 open PR
你不需要指定要用哪個 MCP Server,Claude 會根據任務選擇合適的工具。
撰寫自訂 MCP Server
如果現成的 Server 不符合需求,可以自己寫。MCP Server 支援 Node.js 和 Python。
最簡單的 Node.js MCP Server
先安裝套件(npm install @modelcontextprotocol/sdk zod),檔案存成 server.mjs(或在 package.json 設 "type": "module"):
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "my-server", version: "1.0.0" });
// 註冊工具:名稱、說明與參數 schema,加上實作
server.registerTool(
"get_data",
{
description: "從自訂來源取得資料",
inputSchema: { query: z.string().describe("查詢條件") }
},
async ({ query }) => {
// 在這裡實作你的邏輯
return { content: [{ type: "text", text: `查詢結果:${query}` }] };
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
以上是 SDK 1.x(@modelcontextprotocol/sdk)的寫法;新的 v2 改拆成 @modelcontextprotocol/server 等套件、import 路徑與 schema 寫法略有不同,以你安裝的版本文件為準。完整 MCP SDK 文件:modelcontextprotocol.io
安全注意事項
MCP Server 讓 Claude 有了操作外部系統的能力,要留意幾點:
最小權限原則:Filesystem Server 只給需要的目錄,不要開放整個硬碟。資料庫 Server 給唯讀帳號,除非確定要寫入。
API Key 管理:設定檔裡的 API Key 和密碼不要提交到 git。用環境變數或 .gitignore 排除設定檔。
確認操作:Claude Code 預設會在執行有副作用的操作(修改檔案、寫資料庫)前請你確認。不要關掉這個確認機制。
MCP vs Connectors:怎麼選
Anthropic 現在把 Claude App 裡連接外部服務的功能稱為 Connectors(連接器,早期稱 Integrations),背後其實也是 MCP——差別在於由誰架設、怎麼設定。
| 自己設定的 MCP Server | Connectors | |
|---|---|---|
| 設定難度 | 需要設定 JSON 或 claude mcp add |
在連接器目錄點選、幾步 OAuth 完成 |
| 服務範圍 | 任何服務(只要有 Server) | 連接器目錄清單,或自行加入的遠端 MCP(custom connector) |
| 適合 | 本機檔案、自架服務、自訂需求 | GitHub、Notion、Google Workspace 等主流服務 |
| 維護 | 自己負責 | 服務商/Anthropic 提供 |
主流服務優先用 Connectors,沒有的才考慮自己設定 MCP。
常見問題
Q:MCP Server 需要一直保持運行嗎? 不需要。Claude Code 在需要時會自動啟動 MCP Server(根據設定的 command),對話結束後停止。
Q:MCP Server 可以遠端運行嗎? 可以。除了 stdio(本地)模式,MCP 也支援遠端 Server,現行標準是 Streamable HTTP(舊的 SSE 傳輸已被棄用,新設定不要再用):
claude mcp add --transport http remote https://my-mcp-server.example.com/mcp
寫在 .mcp.json 則是:
{
"mcpServers": {
"remote": {
"type": "http",
"url": "https://my-mcp-server.example.com/mcp"
}
}
}
Q:一個專案可以設定多個 MCP Server 嗎? 可以,設定多個 key 就行,Claude 會根據任務選擇合適的 Server。
小結
MCP 是讓 Claude 從問答工具變成能直接動手的關鍵機制:
- 用
claude mcp add新增,或在專案的.mcp.json設定mcpServers - 指定 command 和 args 啟動對應的 Server
- 對話裡直接說要做什麼,Claude 自動呼叫
從 filesystem Server 開始是最好的入門——讓 Claude 直接讀你的專案檔案,不用再複製貼上。
🔗 延伸閱讀
- Claude Code 實戰:CLI 安裝、開發流程、多步驟任務
- Claude Integrations:官方內建連接 GitHub、Notion 等服務
- Claude Code Skills:安裝與自訂技能擴充
- Claude Code 三種模式總覽:Chat / Cowork / Code 怎麼選