RBDC MCP Server
Un servidor de base de datos basado en MCP con soporte para SQLite, MySQL, PostgreSQL y MSSQL.
Documentación
RBDC MCP Server
Un servidor de base de datos basado en Model Context Protocol (MCP), que soporta bases de datos SQLite, MySQL, PostgreSQL, MSSQL, DuckDB y Turso.
🇨🇳 中文文档 / Documentación en chino: readme_cn.md
Ventajas
- Soporte de múltiples bases de datos: Trabaje sin problemas con SQLite, MySQL, PostgreSQL, MSSQL, DuckDB y Turso mediante una interfaz unificada
- Integración con IA: Integración nativa con Claude AI a través del Model Context Protocol
- Cero configuración: Gestión automática de conexiones y recursos de base de datos
- Seguridad: Acceso controlado a su base de datos mediante consultas en lenguaje natural impulsadas por IA
- Simplicidad: Use lenguaje natural para consultar y modificar su base de datos sin escribir SQL
Instalación
Requisitos previos: Instale Rust primero.
Elija el comando de instalación según sus necesidades:
# 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"
💡 Consejo de velocidad de compilación: Si solo necesita una base de datos (por ejemplo, SQLite), agregue --no-default-features --features sqlite para omitir la compilación de controladores no utilizados, reduciendo el tiempo de compilación de ~15 minutos a ~2 minutos.
Características disponibles
| Característica | Controlador | Descripción |
|---|---|---|
sqlite | rbdc-sqlite | Soporte para SQLite |
mysql | rbdc-mysql | Soporte para MySQL |
postgres | rbdc-pg | Soporte para PostgreSQL |
mssql | rbdc-mssql | Soporte para MSSQL/SQL Server |
duckdb | rbdc-duckdb | Soporte para DuckDB |
turso | rbdc-turso | Soporte para Turso/libsql |
full | (todos los anteriores) | Habilita todos los controladores de base de datos |
📦 Método 2: Descargar binarios precompilados
Descargue la última versión para su plataforma desde GitHub Releases:
| Plataforma | Descarga |
|---|---|
| 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 |
Después de descargar, renombre el archivo a rbdc-mcp (o rbdc-mcp.exe en Windows) y agréguelo a su PATH del sistema.
🔧 Configuración del cliente agente
Configure rbdc-mcp en su cliente compatible con MCP agregándolo a la lista de servidores MCP.
Claude Desktop
Ubicación del archivo de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Configuración básica:
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": []
}
}
}
Con args: [], el servidor se inicia sin base de datos preconfigurada. La IA registra bases de datos en tiempo de ejecución usando la herramienta add_database (consulte Multi-base de datos dinámica más abajo).
Para preconfigurar una base de datos al inicio:
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": ["--database-url", "sqlite://./database.db"]
}
}
}
Ejemplos de bases de datos:
Configuración de múltiples bases de datos en un solo servidor
Un proceso rbdc-mcp puede alojar muchas bases de datos. El primer --database-url se registra como el alias default; empareje URLs adicionales con --alias para declarar un conjunto fijo que la IA pueda ver inmediatamente al inicio mediante list_databases (consulte Multi-base de datos dinámica). La IA también puede registrar más bases de datos en tiempo de ejecución a través de la herramienta MCP add_database.
Inicie una sola base de datos default (la IA registra el resto en tiempo de ejecución):
{
"mcpServers": {
"rbdc-mcp": {
"command": "rbdc-mcp",
"args": [
"--database-url", "sqlite://./database.db"
]
}
}
}
Predeclare varias bases de datos con alias explícitos (un proceso, múltiples pools):
{
"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"
]
}
}
}
El primer valor de --alias se ignora (la primera URL siempre se convierte en default). Los alias deben ser únicos, no vacíos y no iguales a default para cualquier URL después de la primera.
Estilo heredado: un proceso por base de datos (aún funciona, pero ya no es necesario para acceso a múltiples bases de datos):
{
"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"]
}
}
}
Ruta completa de Windows (si no está en PATH)
{
"mcpServers": {
"rbdc-mcp": {
"command": "C:\\tools\\rbdc-mcp.exe",
"args": ["--database-url", "sqlite://C:\\path\\to\\database.db"]
}
}
}
Reinicio: Después de guardar, reinicie Claude Desktop para cargar el servidor MCP.
Prueba: En Claude Desktop, intente preguntar:
- "Muéstrame el estado de la conexión de la base de datos"
- "¿Qué tablas hay en mi base de datos?"
Codex
Ubicación del archivo de configuración:
- Global:
~/.codex/mcp.toml - Nivel de proyecto:
.codex/mcp.toml(colóquelo en la raíz de su proyecto)
Configuración básica (.codex/mcp.toml o ~/.codex/mcp.toml):
[mcp_servers.rbdc-mcp]
command = "rbdc-mcp"
args = ["--database-url", "sqlite://./database.db"]
type = "stdio"
enabled = true
Ejemplos de bases de datos (un solo proceso, múltiples bases de datos):
# 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
La primera URL se convierte en el alias default (su --alias, si existe, se ignora). Las URLs adicionales deben emparejarse con --alias en orden de declaración. La IA puede ver todos los alias registrados al inicio a través de la herramienta MCP list_databases, y también puede registrar más bases de datos en tiempo de ejecución mediante add_database.
Reinicio: Después de guardar el archivo de configuración, reinicie Codex para cargar el servidor MCP. Si Codex ya está en ejecución, ejecute codex reconnect para forzar una recarga.
Prueba: En el chat de Codex, intente preguntar:
- "Muéstrame el estado de la conexión de la base de datos"
- "¿Qué tablas hay en mi base de datos?"
📊 Ejemplos de uso
Operaciones de base de datos en lenguaje natural
- Consultar datos: "Muéstrame todos los usuarios en la base de datos"
- Modificar datos: "Agrega un nuevo usuario llamado John con correo john@example.com "
- Obtener estado: "¿Cuál es el estado de la conexión de la base de datos?"
- Información de esquema: "¿Qué tablas existen en mi base de datos?"
- Multi-base de datos: "Conéctate a mi base de datos de pedidos MySQL y compara sus recuentos de filas con la caché SQLite local"
🗄️ Soporte de bases de datos
| Base de datos | Formato de URL de conexión |
|---|---|
| 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 |
⚙️ Opciones de configuración
| Parámetro | Descripción | Predeterminado |
|---|---|---|
--database-url, -d | URL de conexión de la base de datos. Omita para iniciar vacío (las bases de datos se agregan en tiempo de ejecución mediante add_database). Repita para pre-registrar múltiples bases de datos al inicio. | None (opcional) |
--alias | Alias para el --database-url correspondiente (orden de declaración). El primero se ignora; los alias posteriores deben ser únicos, no vacíos y no default. | automático (db2, db3,...) |
--max-connections | Tamaño máximo del pool de conexiones | 1 |
--timeout | Tiempo de espera de conexión (segundos) | 30 |
--log-level | Nivel de registro (error/warn/info/debug) | info |
--read-only | Deshabilitar sql_exec y forzar validación de SQL de solo lectura | false |
🛠️ Herramientas disponibles
sql_query: Ejecuta una sola declaración SQL de solo lectura. Pasealiasopcional para apuntar a una base de datos no predeterminada; por defecto usadefault.sql_exec: Ejecuta operaciones INSERT/UPDATE/DELETE cuando el servidor no está en modo de solo lectura. Pasealiasopcional para apuntar a una base de datos no predeterminada.db_status: Inspecciona el estado del pool de conexiones de una base de datos. Pasealiasopcional.test_connection: Hace ping a una base de datos registrada. Pasealiasopcional.list_databases: Lista todos los alias de bases de datos registrados junto con su URL y tipo detectado.add_database: Registra una nueva conexión de base de datos bajo unaliase inicia un pool en tiempo de ejecución. Esquemas de URL admitidos:sqlite://,mysql://,pg:///postgres://,mssql:///sqlserver://,duckdb://,turso:///libsql://.remove_database: Anula el registro de un alias previamente agregado. El alias reservadodefaultno se puede eliminar.
🔌 Multi-base de datos dinámica
rbdc-mcp es un servidor de múltiples bases de datos desde un solo proceso. Puede iniciarlo sin URL de base de datos en absoluto (args: [] en la configuración de su cliente MCP) y dejar que la IA registre bases de datos sobre la marcha a través de herramientas MCP. Cuando se proporciona una URL mediante --database-url, se convierte en el alias default; la IA puede entonces registrar más bases de datos en tiempo de ejecución y enrutar consultas a cualquiera de ellas mediante alias.
Inicio sin URL (modo dinámico)
Cuando el servidor se inicia sin --database-url, la herramienta list_databases devuelve una lista vacía y cualquier operación dirigida al alias default sugerirá usar add_database primero. La IA puede registrar la primera (o cualquier) base de datos bajo cualquier alias que elija:
add_database(alias="inventory", url="sqlite://./inventory.db")— registrar una base de datos.list_databases— confirmar que ahora está registrada.sql_query({ alias: "inventory", sql: "SELECT * FROM products" })— consultarla.
Consejo: También puede registrar una base de datos con
alias="default"si prefiere omitiraliasen consultas posteriores.
Inicio predeclarado (modo estático)
Flujo de herramientas que sigue la IA:
list_databases— ver todos los alias actualmente registrados.add_database(alias="orders_mysql", url="mysql://user:pass@host/orders")— registrar una nueva base de datos e iniciar un pool para ella.sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" })— enrutar una consulta a esa base de datos. Omitaaliaspara usar ladefault.remove_database(alias="orders_mysql")— desmontar el pool y anular el registro del alias cuando termine.
Dos formas de registrar bases de datos
| Ruta | Cuándo | Cómo |
|---|---|---|
| Predeclarado por CLI | Lista estable, desea que la IA vea cada base de datos al arrancar | Repita --database-url y empareje --alias (la primera URL se convierte en default). |
add_database en tiempo de ejecución | Ad-hoc / exploratorio / inicio sin URL | La IA llama a la herramienta MCP add_database. |
Ambas rutas escriben en el mismo registro alias → pool en memoria, por lo que el resultado es idéntico desde el punto de vista de la IA: list_databases devuelve todos los alias sin importar dónde se registraron.
Por qué esto importa
- Un proceso de servidor MCP, muchas bases de datos — no es necesario generar
rbdc-mcp-mysql,rbdc-mcp-postgres, etc. para cada base de datos. - Todos los alias son descubribles mediante
list_databases, por lo que la IA puede elegir dinámicamente el objetivo correcto por consulta. - Cuando se proporciona un
--database-url, el aliasdefaultestá reservado para él y no se puede eliminar. - Cada alias tiene su propio pool de conexiones independiente — las consultas concurrentes contra diferentes alias no se bloquean entre sí.
Ejemplo de prompt que puede dar a la IA
"Conéctate a mi base de datos de pedidos MySQL en
mysql://root:pwd@10.0.0.5/ordersy dime los ingresos totales por mes."
La IA llamará a add_database(...), luego sql_query(...) contra ese alias sin reiniciar el servidor MCP — funciona igual si proporcionó un --database-url al inicio o no.
Modo de solo lectura
--read-only deshabilita la herramienta sql_exec, evitando cualquier modificación de datos. Además, sql_query valida el SQL enviado y rechaza declaraciones que contengan palabras clave de escritura (INSERT, UPDATE, DELETE, etc.) o entrada de múltiples declaraciones.
📸 Capturas de pantalla
Licencia
Apache-2.0
- Multi-base de datos en un solo servidor: La IA puede registrar conexiones de base de datos adicionales en tiempo de ejecución mediante la herramienta
add_databasey enrutar consultas a cualquier base de datos registrada por sualias— no es necesario generar procesos de servidor MCP adicionales |--database-url, -d| URL de conexión de la base de datos. Omita para iniciar vacío (las bases de datos se agregan en tiempo de ejecución medianteadd_database). Repita para pre-registrar múltiples bases de datos al inicio. |None(opcional) |

