一句話導讀:Agent 能寫程式,卻讀不到你的 GitHub Issue、資料庫 schema 和內部文件——問題往往不在模型,而在「資料從哪來」沒人講清楚。 本文從 MCP 協定原理講起,涵蓋架構分層、Tools / Resources / Prompts 三大能力、stdio 與 HTTP 兩種傳輸,再到 Cursor 與 Claude Code 的設定寫法與驗收清單;讀完你能獨立把常用資料源接進 Agent,而不必為每個 SaaS 單獨寫膠水程式碼。
延伸閱讀:Claude Code MCP 安裝教學 · 20 個 MCP Server 推薦 · 權限最小暴露
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.md 或 db://schema/users,Host 可在對話開始前或過程中拉取內容注入上下文,而無需 Agent 主動「猜」該調哪個 Tool。
適合:專案 README、OpenAPI spec、資料庫 schema 快照、設定模板等相對穩定、可列舉的知識。
Prompts(提示模板)——「預置工作流入口」
Server 可暴露命名 Prompt 模板(含參數),使用者在 Host 裡一鍵觸發「Code Review」「寫遷移腳本」等固定流程。社群 Server 採用率低於 Tools,但適合團隊把 SOP 封裝成可複用入口。
從資料源到 Agent:設定因果鏈
推薦順序
- 先接 1 個唯讀資料源
- 跑通一次真實任務
- 再疊加寫權限 Server
常見失誤
- 一次裝 10+ Server
- 正式庫給可寫 DSN
- 設完從不驗收
資料源類型與常見 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
{
"mcpServers": {
"fetch": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-fetch"]
}
}
}
範例 2:本機 stdio — GitHub MCP(PAT)
{
"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(文件資料源)
{
"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 類似,但欄位名與路徑略有差異。
{
"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 真的用上資料源
設完不等於能用。按下面清單逐項驗收:
- 連通性 — Cursor:Settings → MCP 綠燈;Claude Code:
/mcp列出 Server 且無 error。 - 工具可見 — 確認目標 Tool 名稱存在(如
mcp__github__search_code)。 - 冒煙任務 — 用一句明確指令觸發工具,例如「用 GitHub MCP 列出本儲存庫 open issues」或「用 Context7 查 Prisma 最新 migrate 語法」。
- 失敗可觀測 — 若 Agent 沒呼叫工具,檢查是否工具過多、描述不清晰,或任務太模糊;必要時在 prompt 裡寫「請使用 GitHub MCP」。
- 權限邊界 — 故意問一個無權限操作(如刪儲存庫),確認 Server 回傳 403 而非靜默成功。
工具數量上限
Cursor 約有 40 個工具上限。單個 GitHub MCP 本機全量版可暴露 40+ 工具,建議換官方 Remote 精簡版,或關閉不用的 Server。工具過多還會讓 Agent「選錯工具」並白白消耗上下文 token。
權限與安全邊界
每接一個資料源,等於給 Agent 開了一扇通往外部系統的門。核心原則:預設唯讀,寫操作明確開啟,正式環境隔離。
- GitHub PAT — 細粒度 token,僅授權目標儲存庫;Issues/Contents 唯讀即可涵蓋多數開發場景。
- 資料庫 DSN — 開發庫用唯讀角色;絕不要把正式環境可寫連線串寫進專案級設定。
- Filesystem MCP —
args裡限定專案根目錄,禁止指向$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/list 與 tools/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 方案