/ 目錄 / 演練場 / DBHub
● 官方 bytebase 🔑 需要你的金鑰

DBHub

作者 bytebase · bytebase/dbhub

一個 MCP,多種資料庫 — Postgres、MySQL、SQL Server、SQLite、Oracle — 預設以唯讀介面進行查詢。

Bytebase 的 DBHub 是一個零依賴的 MCP,透過單一 npx @bytebase/dbhub 二進位檔與多種關聯式資料庫溝通。傳入你的資料庫 DSN,即可瀏覽結構、抽樣資料表並執行 SQL。預設以唯讀模式運行,適合在正式環境進行探索性作業。

為什麼要用

核心特性

即時演示

實際使用效果

dbhub.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "dbhub": {
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "dbhub": {
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "dbhub": {
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "dbhub": {
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "dbhub",
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "dbhub": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@bytebase/dbhub"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add dbhub -- npx -y @bytebase/dbhub

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: DBHub

在同一個工作階段查詢 3 種不同的資料庫

👤 技術棧中有超過 1 個關聯式資料庫的工程師 ⏱ ~20 min intermediate

何時使用: 你的技術棧使用 Postgres 作為主要資料庫、MySQL 作為舊有服務、SQL Server 作為報表副本,而你希望有一個 AI 助理橫跨所有資料庫。

前置條件
  • 每個資料庫的唯讀憑證 DSN — 支援 postgres://、mysql://、sqlserver://、sqlite://、oracle:// 格式
步驟
  1. 設定多組 DSN
    告訴我目前指向哪個資料庫。如有需要,請切換到 MySQL DSN。✓ 已複製
    → 清楚顯示目前作用中的資料庫
  2. 檢視結構
    列出目前資料庫中的所有資料表及其大約的資料列數。✓ 已複製
    → 資料表目錄
  3. 跨資料庫交叉比對
    從 Postgres 查詢使用者電子郵件,再從 MySQL legacy_users 查詢相同電子郵件,告訴我哪些人只存在於其中一個資料庫。✓ 已複製
    → 對帳報告

結果: 在異質資料庫之間建立單一工作流程,無需切換不同的 MCP 伺服器。

注意事項
  • SQL 方言差異會讓 Claude 混淆(例如 LIMIT 與 TOP) — 明確告知 Claude 目前查詢的目標資料庫類型,或將查詢分成各資料庫專屬的回合
搭配使用: filesystem

分析別人傳給你的 SQLite 檔案

👤 拿到不熟悉 .db 檔的工程師或分析師 ⏱ ~10 min beginner

何時使用: 客戶傳來一個 sqlite 備份檔並希望有人協助檢視。

步驟
  1. 將 DBHub 指向該檔案
    使用 DSN sqlite:///path/to/data.db,列出資料表及資料列數。✓ 已複製
    → 資料表清單
  2. 逐一抽樣
    對每個有意義的資料表,顯示 5 筆範例資料列並推測其用途。✓ 已複製
    → 各資料表摘要
  3. 回答客戶的問題
    客戶詢問:<question>。撰寫 SQL,執行後回傳答案。✓ 已複製
    → 查詢語句與結果

結果: 快速探索不熟悉的 sqlite 檔案,無需匯入其他工具。

注意事項
  • 大型 sqlite 資料表若無索引,全表掃描可能鎖住檔案 — 以唯讀模式開啟;避免單一查詢對超過 100 萬筆資料做聚合
搭配使用: filesystem

安全地對唯讀副本執行報表查詢

👤 商業智慧 / 資料分析人員 ⏱ ~15 min beginner

何時使用: 你有一個用於分析的副本資料庫,希望透過 AI 進行即席報表,同時不暴露主要資料庫。

前置條件
  • 針對副本資料庫的唯讀 DSN — 僅限副本的憑證;在 DSN 中設定 statement_timeout
步驟
  1. 確認連線至副本
    確認目前連線為唯讀模式,且指向副本主機。✓ 已複製
    → 已驗證主機字串與唯讀旗標
  2. 執行報表
    [貼上業務需求]。將需求轉換為 SQL,執行後回傳結果。✓ 已複製
    → 結果集
  3. 儲存以便重複使用
    將此 SQL 儲存至 /reports/<name>.sql,並加上說明此查詢用途的注釋。✓ 已複製
    → SQL 檔案已儲存

結果: 進行即席商業智慧分析,同時不危及正式主要資料庫。

注意事項
  • 重度查詢會拖慢副本並造成複寫延遲 — 設定 statement_timeout,並在離峰時段執行大型查詢
搭配使用: filesystem · antv-chart

稽核 SQL Server 預存程序以進行資料庫遷移

👤 正在從 SQL Server 遷移的團隊 ⏱ ~30 min advanced

何時使用: 你需要列出所有預存程序、其程式碼行數及最後修改日期。

步驟
  1. 列出預存程序
    查詢 sys.procedures 與 sys.sql_modules,列出所有預存程序的名稱、結構描述、行數及最後修改日期。✓ 已複製
    → 預存程序清單
  2. 依複雜度分類
    依行數將預存程序分桶:簡單(<50 行)、中等(50-300 行)、複雜(>300 行),並統計各桶數量。✓ 已複製
    → 複雜度分佈圖
  3. 找出 MSSQL 特有語法
    針對複雜的預存程序,標記使用到 MSSQL 特有語法的地方(CROSS APPLY、CTE 遞迴、TOP、GETDATE)— 這些是遷移時的高難度項目。✓ 已複製
    → 遷移風險清單

結果: 根據實際數據產出一份預存程序遷移計畫。

注意事項
  • 部分預存程序包含動態 SQL,難以自動分類 — 將任何使用 EXEC sp_executesql 的預存程序標記為需人工審閱
搭配使用: filesystem

組合

與其他 MCP 搭配,撬動十倍槓桿

dbhub + antv-chart

執行 SQL 後直接將結果視覺化

透過 DBHub 從 Postgres 副本查詢每週營收,再以 AntV 折線圖呈現。✓ 已複製
dbhub + filesystem

儲存查詢語句與結果以便重現

執行每週 KPI 查詢,將 SQL 儲存至 /sql/weekly.sql,結果 CSV 儲存至 /data/weekly-<date>.csv。✓ 已複製
dbhub + notion

將 SQL 查詢結果報表發佈至 Notion

執行頂級客戶查詢,在 Notion 建立一個頁面並以表格呈現結果。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_databases 探索的第一步 free
list_tables database? 查詢前先取得資料表目錄 free
describe_table table, schema? 查詢前先檢視資料表結構 free
execute_sql sql, params? 執行讀取或寫入 SQL(寫入需啟用旗標) depends on query
execute_read_sql sql, params? 明確以唯讀模式執行查詢 depends

成本與限制

運行它的成本

API 配額
受限於你的資料庫連線數上限
每次呼叫 Token 數
取決於結果資料量;請用 LIMIT 限制筆數
費用
免費 — 費用僅為你的資料庫主機成本
提示
在 DSN 中設定 statement_timeout;AI 產生的查詢有時會積極地進行全表掃描。

安全

權限、密鑰、影響範圍

最小權限: SELECT on target tables
憑證儲存: DSN 存放於環境變數(DSN 或各資料庫專屬的環境變數)
資料出站: 直接連線至你的資料庫;無第三方代理
切勿授予: CREATE/DROP/ALTER in the connection role unless needed for the session

故障排查

常見錯誤與修復

Authentication failed / access denied

DSN 憑證錯誤或缺乏 SELECT 權限。請重新確認各資料庫類型的 DSN 格式。

驗證: Connect with the DB's native client using the same DSN
Unsupported SQL feature / syntax error

資料庫方言不符 — 請告知 Claude 目前使用的資料庫類型,或重新確認 DSN 前綴。

Connection pool exhausted

降低並發數或增加連線池大小;長時間執行的查詢通常才是根本原因。

Writes rejected (read-only)

DBHub 預設為唯讀模式。若需寫入,請以 --readonly=false 重新啟動此工作階段。

替代方案

DBHub 對比其他方案

替代方案何時用它替代權衡
Postgres MCP只使用 Postgres,且需要更深入的 Postgres 專屬功能僅支援單一資料庫類型
MongoDB MCP需要在關聯式資料庫之外同時使用 Mongo不同的資料模型
Supabase MCP使用 Supabase 並需要同時管理專案與資料庫與 Supabase 平台綁定

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills