mcpField
R
Rbdc Mcp

Rbdc Mcp

本地服务
github.com/rbatis数据库229 周前更新

关于 Rbdc Mcp

这是一个基于 MCP 的数据库服务,支持 SQLite、MySQL、PostgreSQL、MSSQL、DuckDB 和 Turso。适合希望通过 AI 助手查询和修改数据库的用户,可在单个进程中管理多个数据库。

主要功能

  1. 01统一接口访问六种数据库
  2. 02支持运行时动态注册和移除数据库
  3. 03通过 alias 将查询路由到不同数据库
  4. 04只读模式可禁用写入操作
  5. 05可按需选择驱动以缩短编译时间

适用场景

  1. 01用自然语言查询数据库中的表和数据
  2. 02对比两个数据库之间的行数
  3. 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 分钟。

可用功能
功能驱动说明
sqliterbdc-sqlite支持 SQLite
mysqlrbdc-mysql支持 MySQL
postgresrbdc-pg支持 PostgreSQL
mssqlrbdc-mssql支持 MSSQL/SQL Server
duckdbrbdc-duckdb支持 DuckDB
tursorbdc-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 格式
SQLitesqlite://path/to/database.db
MySQLmysql://user:password@host:port/database
PostgreSQLpostgres://user:password@host:port/database
MSSQLmssql://user:password@host:port/database
DuckDBduckdb://path/to/database.duckdb
Tursoturso://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 可以使用任意自选别名注册第一个(或任意)数据库:

  1. add_database(alias="inventory", url="sqlite://./inventory.db") — 注册数据库。
  2. list_databases — 确认数据库现已注册。
  3. sql_query({ alias: "inventory", sql: "SELECT * FROM products" }) — 查询该数据库。

提示:如果你希望后续查询省略 alias,也可以使用 alias="default" 注册数据库。

预声明启动(静态模式)

AI 遵循的工具流程:

  1. list_databases — 查看所有当前已注册的别名。
  2. add_database(alias="orders_mysql", url="mysql://user:pass@host/orders") — 注册新数据库并为其启动连接池。
  3. sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" }) — 将查询路由到该数据库。省略 alias 可使用 default 数据库。
  4. 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(可选) |

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。