MCP 讓 Claude 從問答工具變成能直接操作你的系統。

MCP(Model Context Protocol)是 Claude 連接外部工具的標準。資料庫、自架服務、本地工具——只要有 MCP Server,Claude Code 就能直接存取。這篇說明如何安裝設定。

MCP 架構圖

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 從問答工具變成能直接動手的關鍵機制:

  1. 用 claude mcp add 新增,或在專案的 .mcp.json 設定 mcpServers
  2. 指定 command 和 args 啟動對應的 Server
  3. 對話裡直接說要做什麼,Claude 自動呼叫

從 filesystem Server 開始是最好的入門——讓 Claude 直接讀你的專案檔案,不用再複製貼上。


🔗 延伸閱讀

這篇有幫助嗎? MCP 讓 Claude 從問答工具變成能直接操作你的系統。
—