AI自动化

萬物皆可連接:手綁 MCP 協議把 IDE、資料庫與本地 API 接到 Claude

Model Context Protocol 自訂伺服器連接資料庫 API 到 Claude 2026
披露聲明:KuzCloud 發布 Mac 託管相關指南;MCP 本身為 Anthropic 開放協議。本文為技術教學,非產品推銷。
快速結論:Model Context Protocol(MCP)讓主機(Claude Desktop、Cursor、Claude Code)呼叫獨立 MCP 伺服器行程所暴露的 tools、讀取 resources、使用 prompts。要「魔改」或擴展 MCP,你撰寫自訂伺服器包裝資料庫、內部 REST API 或 Shell 腳本,再在主機設定中註冊。本機單機環境用 stdio;伺服器跑在另一台主機(如常駐 Mac mini)時用 SSE/HTTP。本文以 8 步驟從 scaffold 到上線驗證,附具體路徑與設定片段。

為何 MCP 對進階使用者很重要

MCP 出現之前,每個 IDE 各自發明外掛格式。Anthropic 的 Model Context Protocol 標準化了 AI 用戶端如何探索能力:列出 tools → 以 JSON 參數呼叫 tool → 回傳結構化結果。這表示同一套 Postgres 唯讀伺服器可同時服務 Claude Desktop、Cursor 與其他 MCP 主機,無需為每個平台重寫整合。

硬核開發者關注 MCP,因為:

  • 資料庫成為可查詢的上下文,不必每次對話都貼 schema dump
  • 內部 API(帳務、功能旗標、部署狀態)以型別化 tools 呈現,取代脆弱的複製貼上
  • IDE + Agent 工具鏈可共用同一套 MCP 目錄——若你也在遠端 Mac 上跑 Claude Code 替代方案OpenClaw

官方參考:Model Context Protocol 規格Anthropic MCP 文件

MCP 架構 60 秒速覽

┌─────────────┐     JSON-RPC      ┌──────────────────┐
│  MCP Host   │ ◄──────────────► │  MCP Server       │
│ (Claude /   │   tools/resources │ (your custom code)│
│  Cursor)    │                   │  → DB / API / CLI │
└─────────────┘                   └──────────────────┘
角色範例職責
HostClaude Desktop、Cursor、Claude Code啟動伺服器、發送 tools/call、渲染結果
Server你的 Node/Python 二進位實作 list_toolscall_tool、可選的 resources/read
Transportstdio、SSE在主機與伺服器之間承載 JSON-RPC 訊息

深度規則:每個信任邊界一個伺服器。不要把正式環境寫入權限與實驗性 Shell tools 放在同一個伺服器二進位——拆成不同行程,這樣撤銷一個設定區塊時不會影響另一個。

傳輸方式決策矩陣

Transport延遲最適情境設定檔(典型)
stdio最低筆電本機 DB、單人使用claude_desktop_config.json、Cursor mcp.json
SSE (HTTP)+1 hopNAS、遠端 Mac、Docker sidecar 上的伺服器主機 URL http://host:port/sse
Streamable HTTP(較新主機)類似 SSE同 SSE;請確認主機版本依各主機文件
情境建議 transport
與 Claude Desktop 同機的 SQLite 檔案stdio
辦公室 LAN 上的 PostgreSQL跳板機上的 SSE 伺服器,或透過 SSH wrapper 的 stdio
5 個內部 REST 微服務一個閘道 MCP 伺服器,暴露命名空間化的 tools
團隊共用 tool 目錄常駐主機上的中央 MCP 伺服器(見遠端 Mac 部署

模式 1 — 資料庫 MCP 伺服器

目標:讓模型對 PostgreSQL、MySQL 或 SQLite 執行唯讀 SQL(或預定義查詢)。

設計約束:

  • 盡可能暴露具名 toolsquery_sales_summarylist_tables),而非任意原始 SQL
  • 強制列數上限(如最多 200 列)與語句逾時(如 5 秒)
  • 絕不讓模型傳遞連線字串——在伺服器環境變數中從 DATABASE_URL 載入

範例 tool 介面:

Tool 名稱輸入輸出
postgres_query_readonly{ "sql": "SELECT ..." }JSON 列 + 欄位名稱
describe_table{ "table": "orders" }來自 information_schema 的欄位型別

使用唯讀 DB 角色:GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_reader;

模式 2 — 本地 REST API 閘道

目標:將現有 HTTP 端點包裝為 MCP tools,讓 Claude 不必在對話視窗中持有長效 API 金鑰。

閘道模式:

Claude → MCP tool "deploy_status" → your server → GET https://internal/api/v1/deployments

實作要點:

  • 每個 tool 對應一個 HTTP 方法 + 路徑模板
  • 呼叫 fetch 前以 schema(Zod、Pydantic)驗證輸入
  • 回應過大時回傳截斷 JSON(前 8 KB)並附 truncated: true 旗標
  • 在伺服器端記錄 correlation ID;勿在 tool 結果中回顯機密

多智能體編排搭配時,OpenClaw worker 可透過 MCP 呼叫相同內部 API,取代 ad-hoc curl。

模式 3 — IDE 與 Repo 橋接

Cursor 與 Claude Code 已內建 MCP 用戶端支援。你的自訂伺服器可暴露:

  • Repo tools:git_diff_summaryrun_linter(沙箱化)
  • Doc resources:file://resources/read 讀取 AGENTS.md、OpenAPI 規格
  • ECC / 外掛 hooks:ECC 安裝後,新增 MCP tools 包裝團隊的 ecc 腳本

IDE 橋接建議維持 stdio-local,除非整個團隊共用同一台遠端開發機。

八步驟實戰手冊

步驟 1 — 安裝官方 SDK

Node(多數主機建議):

mkdir mcp-company-gateway && cd mcp-company-gateway
npm init -y
npm install @modelcontextprotocol/sdk zod pg

Python 替代方案:pip install mcp(見 MCP Python SDK)。

步驟 2 — 建立最小伺服器腳手架

建立 src/index.ts

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new McpServer({ name: "company-gateway", version: "1.0.0" });

server.tool("ping", {}, async () => ({
  content: [{ type: "text", text: "pong" }],
}));

const transport = new StdioServerTransport();
await server.connect(transport);

執行一次:npx tsx src/index.ts — 應阻塞等待 stdio(無輸出屬正常)。

步驟 3 — 新增唯讀 Postgres tool

export DATABASE_URL="postgresql://mcp_reader:****@127.0.0.1:5432/app"

註冊 postgres_query_readonly,以 Zod 驗證 SQL 必須以 SELECT 開頭(伺服器端拒絕 ; 與 DDL 關鍵字)。

步驟 4 — 在 Claude Desktop 註冊

編輯 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):

{
  "mcpServers": {
    "company-gateway": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/mcp-company-gateway/src/index.ts"],
      "env": { "DATABASE_URL": "postgresql://mcp_reader@127.0.0.1:5432/app" }
    }
  }
}

重新啟動 Claude Desktop。在新對話中確認錘子/tools 圖示列出 pingpostgres_query_readonly

步驟 5 — 在 Cursor 註冊

專案或全域 .cursor/mcp.json

{
  "mcpServers": {
    "company-gateway": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/mcp-company-gateway/src/index.ts"]
    }
  }
}

重新載入 Cursor 視窗。從 Agent 面板測試相同的 ping tool。

步驟 6 — 為遠端主機暴露 SSE(選用)

當 MCP 伺服器跑在遠端 Mac(團隊堡壘機或租用的 M4)時:

# Example: SDK HTTP/SSE transport on port 8787 — bind localhost only unless behind VPN
node dist/sse-server.js --port 8787 --host 127.0.0.1

透過 SSH tunnel 將主機設定指向 url: "http://127.0.0.1:8787/sse"

ssh -L 8787:127.0.0.1:8787 user@remote-mac

絕勿將未認證的 MCP SSE 埠暴露到公網。

步驟 7 — 機密與沙箱化

規則原因
機密僅放在伺服器 env,絕不放入 tool 參數防止 prompt injection 外洩
正式與 staging 使用不同伺服器避免跨環境誤查
子行程 tools 以 timeout 與 allowlist 限制阻擋 rm -rf 類失誤

步驟 8 — 以 MCP Inspector 驗證

npx @modelcontextprotocol/inspector npx tsx src/index.ts

在信任主機 UI 之前,手動呼叫 tools/listtools/call。記錄每次 tool 呼叫的時間戳與 OS 使用者(不含對話內容)以供稽核。

安全與沙箱檢查清單

  • 唯讀 DB 角色用於分析 tools;寫入 tools 僅放在開發機上的第二個伺服器
  • 每個 tool 都做輸入驗證;拒絕超過 32 KB 的巢狀物件
  • 包裝內部 API 時,從伺服器行程設定網路 egress allowlist(iptables 或 macOS 防火牆)
  • SaaS OAuth — 在伺服器內實作 token 刷新;對模型僅暴露不透明的 tool_ok

何時在專用 Mac 上跑 MCP

筆電休眠會終止 stdio 伺服器。希望共用 MCP 目錄(8 位工程師共用同一套 Postgres tools)的團隊,常將伺服器跑在常駐 Apple Silicon Mac——本機桌機或小型遠端節點——再透過 SSH tunnel 或 VPN 連線。

這是基礎設施選擇,非 MCP 硬性要求。16 GB M4 可舒適運行 3–5 個輕量 MCP 伺服器行程(各約 80–150 MB)加 Node 工具鏈;若同一台機器還跑 Docker 資料庫,請加 RAM。

疑難排解

錯誤:Connection closed 啟動後立即關閉

現象:Claude Desktop 日誌顯示伺服器 exit code 1。

修復:在 Terminal 執行相同的 command + args;修正缺少的 tsx、錯誤的絕對路徑,或啟動時拋出的例外。MCP 主機不會在 UI 中顯示 stderr。

錯誤:Tool not found / 工具列表為空

現象:設定 JSON 中伺服器名稱拼錯,或主機未重新載入。

修復:jq . claude_desktop_config.json 驗證 JSON;完全退出並重新開啟主機 App(非僅關閉視窗)。

錯誤:SSE 404 或 CORS 失敗

現象:遠端 URL 路徑錯誤(/sse vs /mcp)。

修復:對照 SDK HTTP transport 文件中的路徑;以 ssh -L tunnel,設定中使用 127.0.0.1

你的情境建議做法
獨立開發,DB 在筆電stdio + Claude Desktop + Cursor mcp.json
團隊內部 API一個閘道 MCP 伺服器,命名空間化 tools
DB 在 LAN,筆電在外跳板機上的 MCP 伺服器 + 到 SSE/stdio 的 SSH tunnel
重型 Agent + MCP 同一台機若 Docker DB 與 OpenClaw 扇出共用主機,建議 24 GB RAM
全新專案先以 Inspector + ping tool 起步,再上正式 SQL

若 X → Y:若資料在另一台機器,把 MCP 伺服器放在資料旁邊再 tunnel 到主機——不要讓 Claude 直接連公網上的資料庫埠。

常見問題

MCP 與 ChatGPT 外掛有何不同?

MCP 是開放、主機無關的 JSON-RPC 協議,有多語言 SDK。外掛是平台專屬格式。MCP 伺服器以你控制的本地或遠端行程執行;主機僅負責啟動或連線。

MySQL 或 SQLite 能否像 PostgreSQL 一樣連接?

可以。伺服器實作(驅動程式與 SQL 方言)不同,但 MCP 介面(list_toolscall_tool)相同。請使用唯讀連線與方言專屬防護(僅允許 SELECT)。

Claude Code 是否支援 MCP 自訂伺服器?

截至 2026 年,Claude Code 與 Cursor 皆支援類似 Claude Desktop 的 MCP 用戶端設定,路徑依產品而異——請查閱 Anthropic 與 Cursor 現行文件中的 mcpServers 位置。你撰寫的伺服器程式碼可在各主機間重用

一個 MCP 伺服器應暴露幾個工具?

每個伺服器建議維持在約 20 個工具以下,以確保模型路由可靠。目錄成長時拆成 billing-gatewaydata-gatewayops-gateway 等獨立伺服器——各在主機設定中顯示為獨立區塊。

暴露寫入工具(DELETE、deploy)是否安全?

僅在非正式環境伺服器上使用,並需明確的人工確認流程。共用設定優先使用唯讀 tools;寫入操作放在第二個 MCP 伺服器,僅資深開發者在個人設定中啟用。

繼續 MCP 與 Agent 實戰

本文聚焦手綁 MCP 自訂伺服器。若你需要遠端 Mac 常駐環境、Claude Code 替代方案,或 OpenClaw 多智能體編排,可從下列指南接續閱讀。