关于 Rbdc Mcp
这是一个基于 MCP 的数据库服务,支持 SQLite、MySQL、PostgreSQL、MSSQL、DuckDB 和 Turso。适合希望通过 AI 助手查询和修改数据库的用户,可在单个进程中管理多个数据库。
主要功能
- 01统一接口访问六种数据库
- 02支持运行时动态注册和移除数据库
- 03通过 alias 将查询路由到不同数据库
- 04只读模式可禁用写入操作
- 05可按需选择驱动以缩短编译时间
适用场景
- 01用自然语言查询数据库中的表和数据
- 02对比两个数据库之间的行数
- 03在 Claude Desktop 或 Codex 中连接本地数据库
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端提供 sql_query、sql_exec、list_databases 等数据库操作工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
RBDC MCP 服务
一个基于 Model Context Protocol (MCP) 的数据库服务,支持 SQLite、MySQL、PostgreSQL、MSSQL、DuckDB 和 Turso 数据库。
🇨🇳 中文文档 / 中文文档:readme_cn.md
优势
- 支持多种数据库:通过统一的接口无缝使用 SQLite、MySQL、PostgreSQL、MSSQL、DuckDB 和 Turso
- AI 集成:通过 Model Context Protocol 原生集成 Claude AI
- 零配置:自动管理数据库连接和资源
- 安全性:通过 AI 驱动的自然语言查询控制对数据库的访问
- 简单易用:使用自然语言查询和修改数据库,无需编写 SQL
安装
🚀 方法 1:通过 Cargo 安装(推荐)
前提条件: 请先安装 Rust。
根据需要选择安装命令:
# All drivers (default, ~10-15 minutes build)
cargo install --git https://github.com/rbatis/rbdc-mcp.git
# Minimal: SQLite only (fastest build, ~2-3 minutes)
cargo install --git https://github.com/rbatis/rbdc-mcp.git --no-default-features --features sqlite
# Single driver (e.g., MySQL):
cargo install --git https://github.com/rbatis/rbdc-mcp.git --no-default-features --features mysql
# Multiple drivers:
cargo install --git https://github.com/rbatis/rbdc-mcp.git --no-default-features --features "mysql postgres"
**💡 提升构建速度的提示:**如果只需要一种数据库(例如 SQLite),请添加 --no-default-features --features sqlite,以跳过未使用驱动的编译,将构建时间从约 15 分钟缩短至约 2 分钟。
可用功能
| 功能 | 驱动 | 说明 |
|---|---|---|
sqlite | rbdc-sqlite | 支持 SQLite |
mysql | rbdc-mysql | 支持 MySQL |
postgres | rbdc-pg | 支持 PostgreSQL |
mssql | rbdc-mssql | 支持 MSSQL/SQL Server |
duckdb | rbdc-duckdb | 支持 DuckDB |
turso | rbdc-turso | 支持 Turso/libsql |
full | (以上全部) | 启用所有数据库驱动 |
📦 方法 2:下载预编译二进制文件
从 GitHub Releases 下载适用于你平台的最新版本:
| 平台 | 下载 |
|---|---|
| Windows (x64) | rbdc-mcp-windows-x86_64.exe |
| macOS (Intel) | rbdc-mcp-macos-x86_64 |
| macOS (Apple Silicon) | rbdc-mcp-macos-aarch64 |
| Linux (x64) | rbdc-mcp-linux-x86_64 |
下载后,将文件重命名为 rbdc-mcp(Windows 上为 rbdc-mcp.exe),并将其添加到系统 PATH 中。
🔧 Agent 客户端配置
将 rbdc-mcp 添加到 MCP 服务列表,即可在兼容 MCP 的客户端中配置它。
Claude Desktop
配置文件位置:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
基本配置:
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": []
}
}
}
使用 args: [] 时,服务启动时不会预配置任何数据库。
AI 会在运行时使用 add_database 工具注册数据库(参见下文的
动态多数据库)。
要在启动时预配置数据库:
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": ["--database-url", "sqlite://./database.db"]
}
}
}
数据库示例:
单服务多数据库配置
一个 rbdc-mcp 进程可以托管多个数据库。第一个 --database-url 会注册为 default 别名;将额外的 URL 与 --alias 配对,以声明一组固定数据库,AI 可在启动时立即通过 list_databases 查看(参见 动态多数据库)。AI 也可以在运行时通过 add_database MCP 工具注册更多数据库。
启动一个 default 数据库(由 AI 在运行时注册其余数据库):
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": [
"--database-url", "sqlite://./database.db"
]
}
}
}
预先声明多个带显式别名的数据库(一个进程,多个连接池):
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": [
"--database-url", "sqlite://./local.db", "--alias", "local",
"--database-url", "mysql://user:password@db1:3306/orders", "--alias", "orders",
"--database-url", "postgres://user:password@db2:5432/bi", "--alias", "bi",
"--database-url", "duckdb://./warehouse.duckdb", "--alias", "warehouse"
]
}
}
}
第一个 --alias 值会被忽略(第一个 URL 始终成为 default)。对于第一个 URL 之后的每个 URL,别名都必须唯一、非空,且不能是 default。
旧版方式——每个数据库使用一个进程(仍然可用,但多数据库访问已不再需要):
{
"mcpServers": {
"rbdc-mcp-sqlite": {
"command": "rbdc-mcp",
"args": ["--database-url", "sqlite://./database.db"]
},
"rbdc-mcp-mysql": {
"command": "rbdc-mcp",
"args": ["--database-url", "mysql://user:password@localhost:3306/database"]
},
"rbdc-mcp-postgres": {
"command": "rbdc-mcp",
"args": ["--database-url", "postgres://user:password@localhost:5432/database"]
},
"rbdc-mcp-mssql": {
"command": "rbdc-mcp",
"args": ["--database-url", "mssql://user:password@localhost:1433/database"]
},
"rbdc-mcp-duckdb": {
"command": "rbdc-mcp",
"args": ["--database-url", "duckdb://path/to/database.duckdb"]
},
"rbdc-mcp-turso": {
"command": "rbdc-mcp",
"args": ["--database-url", "turso://database-url?token=your-token"]
}
}
}
Windows 完整路径(如果不在 PATH 中)
{
"mcpServers": {
"rbdc-mcp": {
"command": "C:\\tools\\rbdc-mcp.exe",
"args": ["--database-url", "sqlite://C:\\path\\to\\database.db"]
}
}
}
**重启:**保存后,重启 Claude Desktop 以加载 MCP 服务。
**测试:**在 Claude Desktop 中尝试提问:
- “显示数据库连接状态”
- “我的数据库中有哪些表?”
Codex
配置文件位置:
- 全局:
~/.codex/mcp.toml - 项目级:
.codex/mcp.toml(放在项目根目录中)
基本配置(.codex/mcp.toml 或 ~/.codex/mcp.toml):
[mcp_servers.rbdc-mcp]
command = "rbdc-mcp"
args = ["--database-url", "sqlite://./database.db"]
type = "stdio"
enabled = true
数据库示例(单个进程,多个数据库):
# Pre-declare several databases with explicit aliases
[mcp_servers.rbdc-mcp]
command = "rbdc-mcp"
args = [
"--database-url", "sqlite://./local.db", "--alias", "local",
"--database-url", "mysql://user:password@db1:3306/orders", "--alias", "orders",
"--database-url", "postgres://user:password@db2:5432/bi", "--alias", "bi",
"--database-url", "duckdb://./warehouse.duckdb", "--alias", "warehouse",
]
type = "stdio"
enabled = true
第一个 URL 会成为 default 别名(如果指定了 --alias,则会被忽略)。后续 URL 必须按声明顺序与 --alias 配对。AI 可在启动时通过 list_databases MCP 工具查看所有已注册的别名,也可以在运行时通过 add_database 注册更多数据库。
**重启:**保存配置文件后,重启 Codex 以加载 MCP 服务。如果 Codex 已在运行,请运行 codex reconnect 强制重新加载。
**测试:**在 Codex 聊天中尝试提问:
- “显示数据库连接状态”
- “我的数据库中有哪些表?”
📊 使用示例
自然语言数据库操作
- 查询数据:“显示数据库中的所有用户”
- 修改数据:“添加一位名为 John、邮箱为 [email protected] 的新用户”
- 获取状态:“数据库连接状态如何?”
- 架构信息:“我的数据库中有哪些表?”
- 多数据库:“连接到我的 MySQL 订单数据库,并将其行数与本地 SQLite 缓存进行比较”
🗄️ 数据库支持
| 数据库 | 连接 URL 格式 |
|---|---|
| SQLite | sqlite://path/to/database.db |
| MySQL | mysql://user:password@host:port/database |
| PostgreSQL | postgres://user:password@host:port/database |
| MSSQL | mssql://user:password@host:port/database |
| DuckDB | duckdb://path/to/database.duckdb |
| Turso | turso://database-url?token=your-token |
⚙️ 配置选项
| 参数 | 描述 | 默认值 |
|---|---|---|
--database-url, -d | 数据库连接 URL。不填写则以空配置启动(运行时通过 add_database 添加数据库)。重复填写可在启动时预先注册多个数据库。 | None(可选) |
--alias | 对应 --database-url 的别名(按声明顺序对应)。第一个会被忽略;后续别名必须唯一、非空且不能是 default。 | 自动(db2、db3、……) |
--max-connections | 连接池的最大大小 | 1 |
--timeout | 连接超时时间(秒) | 30 |
--log-level | 日志级别(error/warn/info/debug) | info |
--read-only | 禁用 sql_exec 并强制执行只读 SQL 验证 | false |
🛠️ 可用工具
sql_query:执行单条只读 SQL 语句。可传入可选的alias,以指定非默认数据库;默认值为default。sql_exec:当服务未处于只读模式时,执行 INSERT/UPDATE/DELETE 操作。可传入可选的alias,以指定非默认数据库。db_status:检查数据库的连接池状态。可传入可选的alias。test_connection:对已注册的数据库进行 ping 测试。可传入可选的alias。list_databases:列出所有已注册的数据库别名及其 URL 和检测到的类型。add_database:在运行时使用alias注册新的数据库连接并启动连接池。支持的 URL 方案:sqlite://、mysql://、pg:///postgres://、mssql:///sqlserver://、duckdb://、turso:///libsql://。remove_database:注销之前添加的别名。保留别名default无法移除。
🔌 动态多数据库
rbdc-mcp 是一个单进程多数据库服务。你可以在完全不提供数据库 URL 的情况下启动它(在 MCP 客户端配置中设置 args: []),让 AI 通过 MCP 工具即时注册数据库。通过 --database-url 提供 URL 时,该数据库会成为 default 别名;之后 AI 可以在运行时注册更多数据库,并通过 alias 将查询路由到其中任意一个。
零 URL 启动(动态模式)
服务在未提供 --database-url 的情况下启动时,list_databases 工具会返回空列表,任何针对 default 别名的操作都会提示先使用 add_database。AI 可以使用任意自选别名注册第一个(或任意)数据库:
add_database(alias="inventory", url="sqlite://./inventory.db")— 注册数据库。list_databases— 确认数据库现已注册。sql_query({ alias: "inventory", sql: "SELECT * FROM products" })— 查询该数据库。
提示:如果你希望后续查询省略
alias,也可以使用alias="default"注册数据库。
预声明启动(静态模式)
AI 遵循的工具流程:
list_databases— 查看所有当前已注册的别名。add_database(alias="orders_mysql", url="mysql://user:pass@host/orders")— 注册新数据库并为其启动连接池。sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" })— 将查询路由到该数据库。省略alias可使用default数据库。remove_database(alias="orders_mysql")— 完成后关闭连接池并注销该别名。
注册数据库的两种方式
| 路径 | 适用场景 | 方法 |
|---|---|---|
| CLI 预声明 | 数据库列表稳定,并且希望 AI 在启动时看到所有数据库 | 重复指定 --database-url,并为每个 URL 配对指定 --alias(第一个 URL 会成为 default)。 |
运行时 add_database | 临时探索,或以零 URL 启动 | AI 调用 add_database MCP 工具。 |
两种方式都会写入同一个内存中的 别名 → 连接池 注册表,因此从 AI 的角度来看结果完全相同:无论别名通过哪种方式注册,list_databases 都会返回所有别名。
为什么这很重要
- 一个 MCP 服务进程可连接多个数据库,无需为每个数据库启动一个
rbdc-mcp-mysql、rbdc-mcp-postgres等进程。 - 所有别名都可以通过
list_databases发现,因此 AI 可以针对每个查询动态选择合适的目标。 - 提供
--database-url时,default别名会保留给它,且无法移除。 - 每个别名都有独立的连接池;针对不同别名的并发查询不会互相阻塞。
可以提供给 AI 的示例提示词
“连接到我的 MySQL 订单数据库
mysql://root:[email protected]/orders,告诉我每月的总收入。”
AI 会调用 add_database(...),然后针对该别名调用 sql_query(...),无需重启 MCP 服务——无论你是否在启动时提供了 --database-url,都可以使用相同方式。
只读模式
--read-only 会禁用 sql_exec 工具,阻止任何数据修改。此外,sql_query 会验证提交的 SQL,并拒绝包含写入关键字(INSERT、UPDATE、DELETE 等)的语句或多语句输入。
📸 截图
步骤 1:配置

步骤 2:在 Claude 中使用

许可证
Apache-2.0
- 单个服务连接多个数据库:AI 可以在运行时通过
add_database工具注册其他数据库连接,并通过其alias将查询路由到任意已注册的数据库,无需启动额外的 MCP 服务进程 |--database-url, -d| 数据库连接 URL。省略此项可空启动(通过add_database在运行时添加数据库)。重复指定可在启动时预注册多个数据库。 |None(可选) |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。