站点公告

中转查汇总站点公开资料、价格政策与已有探测记录。

站点资料均标注来源;未取得有效监测结果时显示暂无数据。充值、退款及模型支持以服务商最新公告为准。

查看站点目录
返回 MCP Server 列表
DBHub 图标

DBHub

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

数据库SQL多数据库只读模式
内容更新于 2026-08-09 19:25

关于

作者
bytebase
分类
数据库
仓库
GitHub

安装

# 连接与只读防护写在 dbhub.toml(见下方「安全防护配置」)
npx -y @bytebase/dbhub@latest --transport stdio --config ./dbhub.toml
  • 上方是「服务器命令」,不能直接在对话里使用:CLI 客户端用 <客户端> mcp add <名称> -- <此命令> 挂载(如 claude mcp add)
  • 配置文件类客户端把命令拆成 command / args 填进配置的 mcpServers 块
  • 挂载并重启客户端会话后,对话中 AI 会自动调用它提供的工具
卸载命令
命令行
# 按接入方式选对应命令:
claude mcp remove dbhub   # Claude Code
codex mcp remove dbhub    # Codex
grok mcp remove dbhub     # Grok
# 配置文件接入:从 mcpServers 配置删除 dbhub 条目并重启客户端

场景示例

  • 「昨天新注册了多少用户?」——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 接入。