DBHub — 讓 AI 直接查資料庫的 MCP Server 安裝與使用指南
寫 SQL、跑查詢、複製結果、貼給 AI、等回覆、發現少撈了一個欄位、再跑一次。這個迴圈跑過三輪以上的人,大概都會冒出同一個念頭:讓 AI 自己去查不就好了?
DBHub 就是幹這件事的。Bytebase 團隊開源的資料庫 MCP Server,裝上去之後 AI 直接透過 MCP 協定存取資料庫——查結構、跑 SQL 都行,你不用再當中間人搬運資料。
支援的資料庫
MSSQL、MySQL、PostgreSQL、MariaDB、SQLite、Oracle,涵蓋範圍比預期廣。安裝走 npx 或 Docker 都行。
安裝方式
專案級安裝
連線資訊只在當前專案目錄下生效,不會跨專案污染。
MSSQL:
1 | claude mcp add dbhub --scope project -- npx @bytebase/dbhub --transport stdio --dsn "sqlserver://user:password@host:port/database" |
MySQL:
1 | claude mcp add dbhub --scope project -- npx @bytebase/dbhub --transport stdio --dsn "mysql://user:password@host:port/database" |
PostgreSQL:
1 | claude mcp add dbhub --scope project -- npx @bytebase/dbhub --transport stdio --dsn "postgresql://user:password@host:port/database" |
裝完要重啟 AI 工具,MCP 連線才會生效。
全域安裝
所有專案共用同一個資料庫連線,不加 --scope:
1 | claude mcp add dbhub -- npx @bytebase/dbhub --transport stdio --dsn "sqlserver://user:password@host:port/database" |
Docker 方式
1 | docker run --rm --init --name dbhub \ |
DSN 格式對照表
| DB | DSN 格式 | 預設 Port |
|---|---|---|
| MSSQL | sqlserver://user:pwd@host:1433/database |
1433 |
| MySQL | mysql://user:pwd@host:3306/database |
3306 |
| PostgreSQL | postgresql://user:pwd@host:5432/database |
5432 |
| MariaDB | mysql://user:pwd@host:3306/database |
3306 |
| SQLite | sqlite:///path/to/database.db |
– |
| Oracle | oracle://user:pwd@host:1521/service |
1521 |
裝好後能做什麼
安裝完成後 AI 拿到幾個 MCP 工具:
- **
execute_sql**:執行 SQL 查詢,預設可讀寫(建議改唯讀) - **
search_objects**:搜尋 tables、columns、indexes、procedures 等結構 - 自訂工具:透過
dbhub.toml定義參數化 SQL
用自然語言下指令就行了。「列出所有資料表」、「查看 user_info 的結構」、「撈最近 10 筆訂單」——AI 會自己組 SQL 去跑。
權限管理:預設讀寫全開
這點要注意。DBHub 出廠設定是讀寫全開的,沒調整的話 AI 有權限對你的資料庫做 INSERT、UPDATE、DELETE。在正式環境不設防,等於給 AI 一把沒上鎖的刀。
用 dbhub.toml 把讀寫拆開:
1 | [[sources]] |
安裝時指定設定檔:
1 | claude mcp add dbhub --scope project -- npx @bytebase/dbhub --transport stdio --config ./dbhub.toml |
日常操作只開
readonly = true的那支。就算 AI 判斷失誤,唯讀模式下也改不了東西。
把 SQL 鎖死在你定義的範圍
連「能跑什麼 SQL」都要控制的話,可以自訂具名工具:
1 | [[tools]] |
AI 能做的事被框在你定義好的 SQL 裡面,不會有意外。
TOML 設定選項
| 設定 | 說明 | 預設值 |
|---|---|---|
readonly |
true 限制為 SELECT;false 允許全部 |
false |
max_rows |
SELECT 結果最大行數 | 無限制 |
query_timeout |
查詢超時秒數 | 無限制 |
connection_timeout |
連線超時秒數 | 無限制 |
lazy |
延遲連線(首次查詢才連) | false |
DSN 裡可以用 ${DB_USER}、${DB_PASSWORD} 讀取環境變數,不用把密碼硬寫進檔案。HTTP 模式改 TOML 會自動 Hot Reload,STDIO 要重啟。
拿來做效能分析
DBHub 本身沒有效能分析功能。但它打開了一條路——讓 AI 直接去查資料庫內建的效能視圖(DMV)。排查慢查詢、檢查索引狀況的時候特別有用。不用記那些 sys.dm_exec_query_stats 的欄位名稱,跟 AI 說「找出目前最慢的 10 條 SQL」它就去撈了。
MSSQL 效能查詢範例
Top 10 最耗資源的查詢:
1 | SELECT TOP 10 |
缺少索引建議:
1 | SELECT TOP 10 |
索引使用狀況:
1 | SELECT |
MySQL
1 | -- 慢查詢(需開啟 slow_query_log) |
PostgreSQL
1 | -- Top 10 最慢查詢(需啟用 pg_stat_statements) |
管理指令
1 | # 查看已安裝的 MCP |
跟其他資料庫 MCP Server 的比較
| 名稱 | 支援 DB | 特點 |
|---|---|---|
| DBHub | 全部主流 | 零依賴、Bytebase 維護、MIT 授權 |
| mcp-alchemy | 全部主流 | 基於 SQLAlchemy(需 Python) |
| server-postgres(官方) | 僅 PostgreSQL | Anthropic 官方維護 |
| server-sqlite(官方) | 僅 SQLite | Anthropic 官方維護 |
| mcp-server-mysql | 僅 MySQL | 社群最受歡迎的 MySQL 專用 |
如果你的專案只用單一種資料庫,官方的 server-postgres 或社群的 mcp-server-mysql 也夠用。但需要跨多個 DB 的話,DBHub 的泛用性最高——支援種類多、不吃 Python、Bytebase 團隊持續更新。
參考來源:Claude Code in Action - Anthropic Academy 的 MCP Server 整合單元也有介紹類似的資料庫連接方式。
踩過的坑
- 預設可讀寫:不設
readonly = true就是在賭。 - 密碼存放位置:
--scope project會把 DSN 存進.claude/settings.local.json,這個檔案要加進.gitignore。密碼推上 Git 不是開玩笑的。 - H2 不支援:某些 Java 專案會用 H2 做嵌入式資料庫(Quartz 排程常見),DBHub 連不上。
- 要有 Node.js:走
npx就需要 Node.js 環境,Docker 方式則不受影響。











