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ísticaControladorDescripción
sqliterbdc-sqliteSoporte para SQLite
mysqlrbdc-mysqlSoporte para MySQL
postgresrbdc-pgSoporte para PostgreSQL
mssqlrbdc-mssqlSoporte para MSSQL/SQL Server
duckdbrbdc-duckdbSoporte para DuckDB
tursorbdc-tursoSoporte 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:

PlataformaDescarga
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 datosFormato de URL de conexión
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

⚙️ Opciones de configuración

ParámetroDescripciónPredeterminado
--database-url, -dURL 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)
--aliasAlias 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-connectionsTamaño máximo del pool de conexiones1
--timeoutTiempo de espera de conexión (segundos)30
--log-levelNivel de registro (error/warn/info/debug)info
--read-onlyDeshabilitar sql_exec y forzar validación de SQL de solo lecturafalse

🛠️ Herramientas disponibles

  • sql_query: Ejecuta una sola declaración SQL de solo lectura. Pase alias opcional para apuntar a una base de datos no predeterminada; por defecto usa default.
  • sql_exec: Ejecuta operaciones INSERT/UPDATE/DELETE cuando el servidor no está en modo de solo lectura. Pase alias opcional para apuntar a una base de datos no predeterminada.
  • db_status: Inspecciona el estado del pool de conexiones de una base de datos. Pase alias opcional.
  • test_connection: Hace ping a una base de datos registrada. Pase alias opcional.
  • 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 un alias e 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 reservado default no 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:

  1. add_database(alias="inventory", url="sqlite://./inventory.db") — registrar una base de datos.
  2. list_databases — confirmar que ahora está registrada.
  3. sql_query({ alias: "inventory", sql: "SELECT * FROM products" }) — consultarla.

Consejo: También puede registrar una base de datos con alias="default" si prefiere omitir alias en consultas posteriores.

Inicio predeclarado (modo estático)

Flujo de herramientas que sigue la IA:

  1. list_databases — ver todos los alias actualmente registrados.
  2. add_database(alias="orders_mysql", url="mysql://user:pass@host/orders") — registrar una nueva base de datos e iniciar un pool para ella.
  3. sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" }) — enrutar una consulta a esa base de datos. Omita alias para usar la default.
  4. remove_database(alias="orders_mysql") — desmontar el pool y anular el registro del alias cuando termine.

Dos formas de registrar bases de datos

RutaCuándoCómo
Predeclarado por CLILista estable, desea que la IA vea cada base de datos al arrancarRepita --database-url y empareje --alias (la primera URL se convierte en default).
add_database en tiempo de ejecuciónAd-hoc / exploratorio / inicio sin URLLa 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 alias default está 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/orders y 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

Paso 1: Configuración Configuration

Paso 2: Uso en Claude Usage

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_database y enrutar consultas a cualquier base de datos registrada por su alias — 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 mediante add_database). Repita para pre-registrar múltiples bases de datos al inicio. | None (opcional) |