主題
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 模式、限制存取範圍 |
| 權限提升 | 組合多個工具達成未授權操作 | 最小權限原則、分離環境 |
最佳實踐
只安裝可信來源的 MCP Server
- 官方維護(Anthropic、Microsoft、Google)
- 知名開源專案(有活躍維護)
- 企業級供應商
最小權限原則
bash# Supabase:使用 read-only 模式 npx @supabase/mcp-server --read-only環境隔離
- 開發環境與生產環境分開
- 使用 Docker 容器隔離 MCP Server
- 不要在 MCP 中使用生產資料
定期審查權限
bash/permissions # 查看已授權的工具
推薦 MCP Servers
開發必備
| MCP | 用途 | 維護者 |
|---|---|---|
| Context7 | 即時取得最新文件 | Upstash |
| Playwright | 瀏覽器自動化 | Microsoft |
| Chrome DevTools | 進階瀏覽器除錯 | |
| GitHub | GitHub 操作 | GitHub |
UI 開發
| MCP | 用途 | 維護者 |
|---|---|---|
| shadcn | shadcn/ui 元件查詢 | shadcn |
| Figma | Figma 設計稿存取 | Anthropic |
資料庫
| MCP | 用途 | 維護者 |
|---|---|---|
| Supabase | Supabase 資料庫操作 | Supabase |
| PostgreSQL | PostgreSQL 操作 | MCP 官方 |
搜尋與知識
| MCP | 用途 | 維護者 |
|---|---|---|
| Brave Search | 網頁搜尋 | Anthropic |
| Exa | 語意搜尋 | Anthropic |
MCP 資源目錄
發現更多 MCP Servers:
| 平台 | 說明 | 連結 |
|---|---|---|
| MCP.so | 3,000+ servers,有品質評分 | mcp.so |
| Smithery | 2,200+ servers,自動安裝指南 | smithery.ai |
| Claude MCP | 精選優質 servers | claudemcp.com |
| MCP Market | Top 100 排行榜 | mcpmarket.com |
| Awesome MCP Servers | GitHub 社群整理 | GitHub |
延伸閱讀
下一步
- Context7 MCP - 即時取得最新文件
- Playwright MCP - 瀏覽器自動化測試
- shadcn MCP - UI 元件開發
- Supabase MCP - 資料庫操作