MCP(Model Context Protocol)詳解:如何為你的 AI Agent 配置資料源?

AI 工程指南  ·   ·  約 14 分鐘閱讀

MCP Model Context Protocol 與 AI Agent 資料源連接示意

一句話導讀:Agent 能寫程式,卻讀不到你的 GitHub Issue、資料庫 schema 和內部文件——問題往往不在模型,而在「資料從哪來」沒人講清楚。 本文從 MCP 協定原理講起,涵蓋架構分層、Tools / Resources / Prompts 三大能力、stdio 與 HTTP 兩種傳輸,再到 Cursor 與 Claude Code 的設定寫法與驗收清單;讀完你能獨立把常用資料源接進 Agent,而不必為每個 SaaS 單獨寫膠水程式碼。

延伸閱讀:Claude Code MCP 安裝教學 · 20 個 MCP Server 推薦 · 權限最小暴露

3
能力原語
2
主流傳輸方式
設定多客戶端複用

MCP 是什麼?它解決什麼問題?

Model Context Protocol(MCP,模型上下文協定)是 Anthropic 在 2024 年底開源的開放標準,目標很直接:讓 AI 應用(Host)能以統一、可稽核的方式連接外部世界——程式碼儲存庫、資料庫、文件站、工單系統、瀏覽器——而不必為每個資料源各寫一套自訂整合。

在 MCP 出現之前,團隊常見兩條路:

  • 人工搬運上下文——把 Issue 連結、SQL 結果、API 回應複製進聊天框。準確但慢,且無法規模化。
  • 自研 Function Calling——為 GitHub、Postgres、Notion 各寫一套 tool schema 與鑑權。靈活但維護成本高,換客戶端(Cursor → Claude Code)往往要重寫。

MCP 走的是第三條路:把「資料源 ↔ Agent」的介面標準化。你設定一個 GitHub MCP Server,Cursor、Claude Code、VS Code Copilot、OpenAI Codex 都能複用;社群已有上千個現成 Server,涵蓋主流 SaaS 與開發工具。

一句話定位

MCP 不是大模型本身,而是 Agent 的「USB 介面」——Host 負責推理與規劃,MCP Server 負責把外部資料變成模型可呼叫的結構化能力。模型換哪家、客戶端換哪家,資料源設定可以跟著走。

三層架構:Host、Client、Server

理解 MCP 設定,先看清三個角色如何協作:

角色 典型實例 職責
Host(宿主) Cursor、Claude Code、Claude Desktop、VS Code 承載對話 UI,排程大模型,決定是否呼叫 MCP 工具
Client(客戶端) Host 內建的 MCP 連接器 維護與 Server 的會話,轉發 tools/list、tools/call 等 JSON-RPC 訊息
Server(服務端) GitHub MCP、Context7、Supabase MCP、自研 Server 暴露 Tools / Resources / Prompts,執行實際的資料讀寫與 API 呼叫

一次典型的呼叫鏈如下:你在 Cursor 裡問「PR #42 改了哪些檔案?」→ Host 把問題交給大模型 → 模型決定呼叫 mcp__github__get_pull_request → Client 透過 stdio 或 HTTP 把請求發給 GitHub MCP Server → Server 調 GitHub API 回傳結構化 JSON → 模型基於真實資料生成回答。

注意:你設定的是 Server 的連線方式(命令、URL、環境變數),Host 會自動發現它暴露了哪些工具。不需要在 prompt 裡手寫 API 文件——Server 啟動時會透過 tools/list 把能力清單推給 Client。

三大能力原語:Tools、Resources、Prompts

MCP Server 向 Agent 暴露三類能力,對應不同的資料源接入模式:

Tools(工具)——「讓 Agent 執行動作」

最常用。每個 Tool 有名稱、描述、輸入 schema(JSON Schema),Agent 在推理過程中按需呼叫。例如 GitHub MCP 的 search_code、Playwright MCP 的 browser_click、資料庫 MCP 的 execute_query

設定資料源時,90% 的場景都在選 Tool 型 Server:讀儲存庫、查表、發 HTTP、操作瀏覽器。

Resources(資源)——「讓 Agent 讀取靜態上下文」

Resources 是可定址的資料片段,類似「帶 URI 的唯讀檔案」。Server 宣告 file://docs/api.mddb://schema/users,Host 可在對話開始前或過程中拉取內容注入上下文,而無需 Agent 主動「猜」該調哪個 Tool。

適合:專案 README、OpenAPI spec、資料庫 schema 快照、設定模板等相對穩定、可列舉的知識。

Prompts(提示模板)——「預置工作流入口」

Server 可暴露命名 Prompt 模板(含參數),使用者在 Host 裡一鍵觸發「Code Review」「寫遷移腳本」等固定流程。社群 Server 採用率低於 Tools,但適合團隊把 SOP 封裝成可複用入口。

從資料源到 Agent:設定因果鏈

① 盤點資料源儲存庫 / DB / 文件 / SaaS
② 選 MCP Server官方 Remote 或本機 stdio
③ 驗收工具可見/mcp 或 Settings 確認連通

推薦順序

  • 先接 1 個唯讀資料源
  • 跑通一次真實任務
  • 再疊加寫權限 Server

常見失誤

  • 一次裝 10+ Server
  • 正式庫給可寫 DSN
  • 設完從不驗收
設定 MCP 的核心不是「裝最多」,而是「讓 Agent 在真實任務裡閉環」。先唯讀、再擴充。

資料源類型與常見 MCP Server 對應

下面這張表幫你把「我想接什麼」快速對應到「裝哪個 Server」。更完整的 20 款清單見 MCP Server 推薦

資料源類型 典型 MCP Server 主要能力(Tools) 鑑權方式
程式碼儲存庫(GitHub) GitHub MCP(官方) 讀檔案、搜程式碼、Issue/PR、CI 狀態 OAuth Remote 或細粒度 PAT
本機程式碼語意 CodeGraph MCP 符號跳轉、依賴影響面分析 本機索引,無遠端 token
函式庫 / 框架文件 Context7 按函式庫名版本拉官方文件 API Key(Remote)
關聯式資料庫 Supabase MCP / DBHub 查 schema、執行 SQL OAuth 或唯讀 DSN
網頁 / 公開 API Fetch MCP HTTP GET → Markdown 無(受控出站)
瀏覽器 / UI 驗證 Playwright MCP 點擊、填表、無障礙樹斷言 本機程序
工單 / 協作 Linear / Notion / Slack MCP 讀寫信件、搜頁面、發訊息 OAuth Remote
錯誤監控 Sentry MCP 拉堆疊、issue 狀態 OAuth Remote

選型原則

工作流選配,不按排行榜全裝。全端日常開發:Context7 + GitHub + Playwright 三件套即可涵蓋八成;後端再加 Supabase;團隊用 Linear 才裝 Linear MCP。同時啟用建議控制在 3–7 個 Server

傳輸層:stdio 與 HTTP,該選哪種?

MCP Client 與 Server 之間透過 JSON-RPC 2.0 通訊。2026 年主流有兩種傳輸:

stdio(標準輸入輸出)

Host 以子程序方式啟動 Server,例如 npx -y @modelcontextprotocol/server-github,透過 stdin/stdout 交換訊息。優點:設定簡單、無需開放連接埠、適合本機開發。缺點:每個 Server 佔一個程序;部分全量 Docker 版工具數過多,可能觸發 Cursor 約 40 工具上限。

Streamable HTTP / SSE(遠端)

Server 執行在遠端(或官方託管),Client 透過 HTTPS 連線,常用 OAuth 完成授權。GitHub、Supabase、Linear、Sentry 等官方均提供 Remote 版。優點:工具集精簡、無需本機裝 Node/Docker、token 由 OAuth 託管。缺點:依賴網路;企業內網需確認出站策略。

場景 推薦傳輸 原因
Cursor + GitHub Remote HTTP(OAuth) 避免本機版 40+ 工具撐爆上限
Claude Code + CodeGraph stdio(codegraph mcp 依賴本機儲存庫索引,必須同機
內網自研資料源 stdio 或內網 HTTP 資料不出境,可稽核
團隊統一 SaaS 接入 Remote HTTP 零本機依賴,權限集中管理

在 Cursor 裡設定資料源

Cursor 的 MCP 設定位於 Settings → MCP,或直接編輯 ~/.cursor/mcp.json。結構為 mcpServers 物件,每個 Server 一個條目。

範例 1:本機 stdio — Fetch MCP

~/.cursor/mcp.json(節選)
{
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-fetch"]
    }
  }
}

範例 2:本機 stdio — GitHub MCP(PAT)

~/.cursor/mcp.json(節選)
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
      }
    }
  }
}

更推薦在 Cursor UI 裡新增 GitHub 官方 Remote MCP(OAuth),工具更少、無需手填 PAT。PAT 務必細粒度唯讀,且不要提交到 git。

範例 3:Context7(文件資料源)

~/.cursor/mcp.json(節選)
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    }
  }
}

儲存後重啟 Cursor,在 Settings → MCP 面板查看 Server 狀態是否為綠色 Connected。Agent 模式下可直接問「查一下 Next.js 15 的 middleware 寫法」——若設定正確,模型會呼叫 Context7 而非幻覺 API。

在 Claude Code 裡設定資料源

Claude Code 使用 ~/.claude.json(使用者級)或專案根目錄 .mcp.json(專案級)。設定結構與 Cursor 類似,但欄位名與路徑略有差異。

~/.claude.json → mcpServers(節選)
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
      }
    },
    "codegraph": {
      "command": "codegraph",
      "args": ["mcp"]
    }
  }
}

修改設定後必須完全退出 Claude Code 再啟動;在儲存庫根目錄執行 claude,會話內輸入 /mcp 查看已連線 Server 與工具列表。成功標誌:出現 mcp__github__*mcp__codegraph__* 等前綴工具。

分步圖文見 Claude Code MCP 安裝教學;三連通架構見 MCP 總覽

專案級 vs 使用者級:設定寫在哪?

設定位置 Cursor Claude Code 適用場景
使用者級(全域) ~/.cursor/mcp.json ~/.claude.json 個人常用 Server:Context7、GitHub、Fetch
專案級(儲存庫) .cursor/mcp.json .mcp.json 團隊統一:CodeGraph、內網 API、專案專用 DB

最佳實務:憑證與使用者偏好放使用者級(不進 git);把與儲存庫綁定的資料源(CodeGraph 索引路徑、專案文件 Server)放專案級並提交 .mcp.json,讓隊友 clone 即用。敏感 token 用環境變數引用,例如 "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PAT}" },由 shell 或 CI 注入。

設定驗收:讓 Agent 真的用上資料源

設完不等於能用。按下面清單逐項驗收:

  1. 連通性 — Cursor:Settings → MCP 綠燈;Claude Code:/mcp 列出 Server 且無 error。
  2. 工具可見 — 確認目標 Tool 名稱存在(如 mcp__github__search_code)。
  3. 冒煙任務 — 用一句明確指令觸發工具,例如「用 GitHub MCP 列出本儲存庫 open issues」或「用 Context7 查 Prisma 最新 migrate 語法」。
  4. 失敗可觀測 — 若 Agent 沒呼叫工具,檢查是否工具過多、描述不清晰,或任務太模糊;必要時在 prompt 裡寫「請使用 GitHub MCP」。
  5. 權限邊界 — 故意問一個無權限操作(如刪儲存庫),確認 Server 回傳 403 而非靜默成功。

工具數量上限

Cursor 約有 40 個工具上限。單個 GitHub MCP 本機全量版可暴露 40+ 工具,建議換官方 Remote 精簡版,或關閉不用的 Server。工具過多還會讓 Agent「選錯工具」並白白消耗上下文 token。

權限與安全邊界

每接一個資料源,等於給 Agent 開了一扇通往外部系統的門。核心原則:預設唯讀,寫操作明確開啟,正式環境隔離。

  • GitHub PAT — 細粒度 token,僅授權目標儲存庫;Issues/Contents 唯讀即可涵蓋多數開發場景。
  • 資料庫 DSN — 開發庫用唯讀角色;絕不要把正式環境可寫連線串寫進專案級設定。
  • Filesystem MCPargs 裡限定專案根目錄,禁止指向 $HOME/
  • 內網 API — 用預發唯讀端點;Claude Code 工作區不載入正式環境 .env

完整策略矩陣與攻擊鏈分析見 MCP 權限最小暴露

常見故障排查

現象 可能原因 處理
工具列表為空 JSON 語法錯誤;未重啟 Host 校驗 JSON;完全退出 Cursor / Claude Code 再開
GitHub 401 / 403 PAT 過期或未授權儲存庫 重建 token,確認 repo 範圍
CodeGraph 回傳空 未在儲存庫根目錄啟動;索引未建 codegraph init -i;cwd 對齊
Agent 從不呼叫 MCP 工具過多;任務描述太模糊 減 Server 數量;prompt 點名工具
npx 啟動逾時 首次下載慢;Node 未裝 預裝依賴;檢查 node -v

常見問題

MCP 和 Function Calling 有什麼區別?

Function Calling 是單次 API 請求裡的工具宣告,通常與特定模型/廠商綁定。MCP 是持久化的 Server 連線與開放協定,一次設定多客戶端複用,並由社群維護生態。你可以把 MCP 理解為「標準化的、可插拔的 Function Calling 執行時」。

可以自己寫 MCP Server 嗎?

可以。官方提供 TypeScript(@modelcontextprotocol/sdk)、Python 等 SDK。典型場景:接入公司內部 Wiki、工單 API、專有資料湖。最小 Server 只需實作 tools/listtools/call,用 stdio 傳輸即可在 Cursor 裡除錯。

MCP 會把資料發給模型廠商嗎?

Tool 呼叫的結果會進入對話上下文,隨你的請求發給 Host 所使用的大模型 API——這是 Agent 工作的必要部分。MCP 本身不額外「上傳」資料;風險在於你給了 Server 什麼權限(能讀哪些儲存庫、能執行什麼 SQL)。按最小權限設定即可控制暴露面。

2026 年應該先接哪幾個資料源?

多數開發者從 Context7(文件)+ GitHub(儲存庫)+ Playwright(瀏覽器驗證)起步。寫後端加 Supabase 或 DBHub;團隊用 Linear/Notion 再按需疊加。詳見 20 個 MCP Server 推薦

ZavCloud Cloud Mac

在真實 macOS 上跑通 MCP + Agent 工作流

獨享 Mac mini 節點:本機 CodeGraph 索引、Claude Code 三連通、GitHub Runner CI——同一台機器完成開發、驗證與自動化。

查看 Cloud Mac 方案
Cloud Mac 線上租用 Mac mini