跳转到主要内容
返回 MCP Server 列表
DBHub 图标

DBHub

通用数据库 MCP Server——一个 DSN 连通 PostgreSQL/MySQL/MariaDB/SQL Server/SQLite,让 AI 直接查询和分析数据库

databaseSQL多数据库只读模式
场景示例
  • 「昨天新注册了多少用户?」——AI 自己写 SQL 查询并解读结果
  • 「这条 SQL 为什么慢?」——开启 explain_sql 看执行计划、给优化建议
  • 「订单表和用户表是怎么关联的?」——search_objects 检索表结构、字段与索引
  • 「五个库各建一个 MCP 太乱」——一份 TOML 配多个 source,一个进程接管全部数据库
使用注意

AI 会直接对数据库执行 SQL——生产库务必加只读防护:

  • 新版 --readonly flag 已废弃(传了直接报错退出),改在 dbhub.toml 的 [[tools]] 里配 readonly = true
  • 同处配 max_rows 限制返回行数,防大表全量查询拖垮库
  • DSN 用只读账号双保险,别把有写权限的账号交给模型

提供的工具

工具注册说明
execute_sql默认执行 SQL 并返回结果
search_objects默认按名称/类型检索库、表、字段、索引等对象
explain_sql / health_check按需执行计划与健康检查,TOML 里开启

接入要点

  • 单库:--dsn "mysql://user:pass@host:3306/db";多库:--config dbhub.toml,每个 [[sources]] 一个连接
  • 支持 postgres / mysql / mariadb / sqlserver / sqlite 五种 DSN;--demo 内置示例库可先试玩
  • 多 source 时每个连接生成一套独立工具(如 execute_sql_订单库),AI 按工具名选库,不会串库

避坑清单

  • --readonly 已废弃:新版传了直接报错退出(--max-rows 同)。只读防护改在 dbhub.toml 的 [[tools]] 块:
toml
[[sources]]
id = "default"
dsn = "mysql://readonly_user:pass@host:3306/db"

[[tools]]
name = "execute_sql"
source = "default"
readonly = true
max_rows = 1000
  • DSN 密码含特殊字符(@ : / #)必须 URL 编码,否则解析错主机/库名,而且报错信息看不出原因
  • 本地库连不上先查 sslmode:官方示例带 ?sslmode=require,本地无 TLS 的库要改 sslmode=disable
  • max_rows 一定要配:AI 很喜欢 SELECT *,大表全量拉取会同时拖垮数据库和上下文窗口
  • DSN 用只读账号,与 readonly = true 双保险——别把有写权限的账号交给模型

高级用法:改「服务器命令」这半截

各客户端命令 = 客户端前缀 + 服务器命令(如 claude mcp add dbhub -- <服务器命令>),换连接方式只改后半截。需要远程共享一个实例时改 --transport http --port 8080,客户端用 URL 接入。