Skip to content

MCP 深入指南

MCP(Model Context Protocol)是 Anthropic 於 2024 年 11 月推出的開放標準,用於標準化 AI 系統與外部工具、資料的整合方式。目前已成為業界 de-facto 標準,獲得 OpenAI、Google DeepMind、Microsoft 等主要 AI 公司採用。

什麼是 MCP?

MCP 的靈感來自 Language Server Protocol (LSP)。就像 LSP 標準化了 IDE 與程式語言的溝通方式,MCP 標準化了 AI 與外部工具的溝通方式。

傳統方式:每個 AI 應用需要各自實作整合
┌──────────┐    ┌──────────┐    ┌──────────┐
│ Claude   │    │ ChatGPT  │    │ Cursor   │
└────┬─────┘    └────┬─────┘    └────┬─────┘
     │               │               │
     ▼               ▼               ▼
┌──────────┐    ┌──────────┐    ┌──────────┐
│ GitHub   │    │ GitHub   │    │ GitHub   │
│ 整合     │    │ 整合     │    │ 整合     │
└──────────┘    └──────────┘    └──────────┘
(重複實作 N 次)

MCP 方式:標準化協定,一次實作處處可用
┌──────────┐    ┌──────────┐    ┌──────────┐
│ Claude   │    │ ChatGPT  │    │ Cursor   │
└────┬─────┘    └────┬─────┘    └────┬─────┘
     │               │               │
     └───────────────┼───────────────┘

                     ▼ MCP
               ┌──────────┐
               │ GitHub   │
               │ MCP      │
               │ Server   │
               └──────────┘
(一次實作,所有 AI 都能用)

MCP 的歷史與現況

時間事件
2024 年 11 月Anthropic 發布 MCP 開放標準
2025 年初OpenAI、Google DeepMind 宣布採用
2025 年 6 月發布 OAuth 2.1 授權規範
2025 年 11 月發布 2025-11-25 版規範(非同步、無狀態、伺服器身份)
2025 年 12 月MCP 捐贈給 Linux Foundation 的 AAIF
2026 年97M+ 月下載量(Python + TypeScript SDK)

MCP 架構

MCP 採用 Client-Server 架構:

┌─────────────────────────────────────────────────────────────┐
│                        Host 應用程式                         │
│                 (Claude Code, Cursor, VS Code)              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │                     MCP Client                        │  │
│  │              (管理與 Server 的連線)                    │  │
│  └───────────┬───────────────────────────┬───────────────┘  │
└──────────────│───────────────────────────│──────────────────┘
               │ 1:1 連線                   │ 1:1 連線
               ▼                           ▼
        ┌──────────────┐            ┌──────────────┐
        │ MCP Server A │            │ MCP Server B │
        │  (Context7)  │            │ (Playwright) │
        └──────┬───────┘            └──────┬───────┘
               │                           │
               ▼                           ▼
        ┌──────────────┐            ┌──────────────┐
        │   外部資源    │            │   瀏覽器     │
        │  (文件 API)   │            │  (Chrome)    │
        └──────────────┘            └──────────────┘

關鍵角色

  • Host:使用者互動的應用程式(Claude Code、Cursor、VS Code)
  • Client:Host 內部的元件,管理與 MCP Server 的連線(1:1 關係)
  • Server:外部程式,透過標準 API 提供 Tools、Resources、Prompts

MCP 的六大能力

根據 2025-11-25 規範,MCP 提供六種核心能力:

1. Tools(工具)

讓 AI 執行動作的函數,需要使用者同意:

typescript
// MCP Server 定義的工具
{
  name: "search_docs",
  description: "搜尋文件庫",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "搜尋關鍵字" },
      limit: { type: "number", description: "回傳數量" }
    },
    required: ["query"]
  }
}

使用情境:資料庫查詢、API 呼叫、檔案操作、瀏覽器控制

2. Resources(資源)

靜態或半靜態的資料,AI 可以讀取但不會修改:

typescript
// MCP Server 提供的資源
{
  uri: "file:///project/README.md",
  name: "專案說明文件",
  mimeType: "text/markdown"
}

使用情境:設定檔、文件內容、API schema

3. Prompts(提示範本)

預先定義的指令模板,確保任務執行的一致性:

typescript
// MCP Server 提供的提示範本
{
  name: "code_review",
  description: "程式碼審查提示",
  arguments: [
    { name: "code", description: "要審查的程式碼", required: true }
  ]
}

使用情境:標準化工作流程、團隊最佳實踐

4. Sampling(取樣)

讓 Server 請求 Client 的 LLM 執行推理,不需要自己的 API key:

Server: "請幫我分析這段程式碼的問題"

Client: 使用 Host 的 LLM 處理

Server: 收到分析結果,繼續處理

使用情境:複雜的多步驟處理、需要 AI 判斷的工作流程

5. Elicitation(引出)

Server 向使用者請求缺少的資訊:

Server: "請提供你的 GitHub token"

Client: 顯示對話框請使用者輸入

Server: 收到資訊,繼續執行

使用情境:動態收集認證資訊、確認操作

6. Roots(根目錄)

告訴 Server 應該關注哪些資源和工作區:

typescript
// Client 告訴 Server 的根目錄
{
  roots: [
    { uri: "file:///project/src", name: "原始碼" },
    { uri: "file:///project/docs", name: "文件" }
  ]
}

使用情境:限定工作範圍、多專案管理

Claude Code MCP 設定

設定檔位置與優先順序

範圍位置用途
專案共享.mcp.json(專案根目錄)團隊共用,可 version control
專案私有.claude/settings.local.json個人專案設定
使用者全域~/.claude/settings.local.json所有專案通用

CLI 指令

bash
# 查看已安裝的 MCP
claude mcp list

# 新增 MCP Server(stdio transport)
claude mcp add <name> -- npx -y <package>

# 新增 MCP Server(HTTP transport)
claude mcp add --transport http <name> <url>

# 新增 MCP Server(SSE transport)
claude mcp add --transport sse <name> <url>

# 新增帶 header 的 MCP Server
claude mcp add --transport http <name> <url> --header "KEY: value"

# 使用 JSON 設定
claude mcp add-json "<name>" '<json-config>'

# 移除 MCP Server
claude mcp remove <name>

# 指定範圍
claude mcp add --scope user <name> -- npx -y <package>  # 使用者全域
claude mcp add --scope project <name> -- npx -y <package>  # 專案共享
claude mcp add --scope local <name> -- npx -y <package>  # 專案私有(預設)

Transport 類型

Transport適用情境範例
stdio本地執行的程式npx @playwright/mcp@latest
HTTP雲端服務(推薦)https://mcp.context7.com/mcp
SSE需要串流的服務https://mcp.context7.com/sse

設定檔範例

json
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp@latest"]
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"]
    },
    "shadcn": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.shadcn.io/api/mcp"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-token>"
      }
    }
  }
}

驗證與除錯

bash
# 在 Claude Code 中查看 MCP 狀態
/mcp

# 啟用除錯模式
claude --mcp-debug

# 管理工具權限
/permissions

安全性考量

重要安全提醒

MCP Server 可以執行程式碼、存取檔案、連接網路。請謹慎選擇信任的 Server。

已知風險

根據 OWASP GenAI Security Project 和安全研究:

風險說明防護措施
Prompt Injection惡意輸入被當成指令執行驗證所有輸入、限制工具權限
Tool Poisoning工具描述被竄改,誘導 AI 執行惡意操作只用可信來源的 MCP Server
資料外洩敏感資料被傳送到外部使用 read-only 模式、限制存取範圍
權限提升組合多個工具達成未授權操作最小權限原則、分離環境

最佳實踐

  1. 只安裝可信來源的 MCP Server

    • 官方維護(Anthropic、Microsoft、Google)
    • 知名開源專案(有活躍維護)
    • 企業級供應商
  2. 最小權限原則

    bash
    # Supabase:使用 read-only 模式
    npx @supabase/mcp-server --read-only
  3. 環境隔離

    • 開發環境與生產環境分開
    • 使用 Docker 容器隔離 MCP Server
    • 不要在 MCP 中使用生產資料
  4. 定期審查權限

    bash
    /permissions  # 查看已授權的工具

推薦 MCP Servers

開發必備

MCP用途維護者
Context7即時取得最新文件Upstash
Playwright瀏覽器自動化Microsoft
Chrome DevTools進階瀏覽器除錯Google
GitHubGitHub 操作GitHub

UI 開發

MCP用途維護者
shadcnshadcn/ui 元件查詢shadcn
FigmaFigma 設計稿存取Anthropic

資料庫

MCP用途維護者
SupabaseSupabase 資料庫操作Supabase
PostgreSQLPostgreSQL 操作MCP 官方

搜尋與知識

MCP用途維護者
Brave Search網頁搜尋Anthropic
Exa語意搜尋Anthropic

MCP 資源目錄

發現更多 MCP Servers:

平台說明連結
MCP.so3,000+ servers,有品質評分mcp.so
Smithery2,200+ servers,自動安裝指南smithery.ai
Claude MCP精選優質 serversclaudemcp.com
MCP MarketTop 100 排行榜mcpmarket.com
Awesome MCP ServersGitHub 社群整理GitHub

延伸閱讀

下一步

AI 時代的軟體工程工作坊教學手冊