RBDC MCP Server

Um servidor de banco de dados baseado em MCP com suporte para SQLite, MySQL, PostgreSQL e MSSQL.

Documentação

Servidor MCP RBDC

Um servidor de banco de dados baseado no Model Context Protocol (MCP), com suporte aos bancos de dados SQLite, MySQL, PostgreSQL, MSSQL, DuckDB e Turso.

🇨🇳 Documentação em Chinês: readme_cn.md

Vantagens

  • Suporte a Múltiplos Bancos de Dados: Trabalhe facilmente com SQLite, MySQL, PostgreSQL, MSSQL, DuckDB e Turso usando uma interface unificada
  • Integração com IA: Integração nativa com Claude AI através do Model Context Protocol
  • Zero Configuração: Gerenciamento automático de conexões e recursos de banco de dados
  • Segurança: Acesso controlado ao seu banco de dados através de consultas em linguagem natural orientadas por IA
  • Simplicidade: Use linguagem natural para consultar e modificar seu banco de dados sem escrever SQL

Instalação

Pré-requisitos: Instale Rust primeiro.

Escolha o comando de instalação com base nas suas necessidades:

# 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"

💡 Dica de velocidade de compilação: Se você precisar apenas de um banco de dados (ex.: SQLite), adicione --no-default-features --features sqlite para pular a compilação de drivers não utilizados, reduzindo o tempo de compilação de ~15 minutos para ~2 minutos.

Recursos Disponíveis

RecursoDriverDescrição
sqliterbdc-sqliteSuporte a SQLite
mysqlrbdc-mysqlSuporte a MySQL
postgresrbdc-pgSuporte a PostgreSQL
mssqlrbdc-mssqlSuporte a MSSQL/SQL Server
duckdbrbdc-duckdbSuporte a DuckDB
tursorbdc-tursoSuporte a Turso/libsql
full(todos acima)Habilita todos os drivers de banco de dados

📦 Método 2: Baixar Binários Pré-compilados

Baixe a versão mais recente para sua plataforma em GitHub Releases:

PlataformaDownload
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

Após o download, renomeie o arquivo para rbdc-mcp (ou rbdc-mcp.exe no Windows) e adicione-o ao PATH do seu sistema.

🔧 Configuração do Cliente Agente

Configure o rbdc-mcp no seu cliente compatível com MCP adicionando-o à lista de servidores MCP.

Claude Desktop

Localização do Arquivo de Configuração:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Configuração Básica:

{
  "mcpServers": {
    "rbdc-mcp": {
      "command": "rbdc-mcp",
      "args": []
    }
  }
}

Com args: [], o servidor inicia sem banco de dados pré-configurado. A IA registra bancos de dados em tempo de execução usando a ferramenta add_database (veja Multi-Banco de Dados Dinâmico abaixo).

Para pré-configurar um banco de dados na inicialização:

{
  "mcpServers": {
    "rbdc-mcp": {
      "command": "rbdc-mcp",
      "args": ["--database-url", "sqlite://./database.db"]
    }
  }
}

Exemplos de Banco de Dados:

Configuração Multi-Banco de Dados em Servidor Único

Um processo rbdc-mcp pode hospedar vários bancos de dados. O primeiro --database-url é registrado como o alias default; emparelhe URLs extras com --alias para declarar um conjunto fixo que a IA pode ver imediatamente na inicialização via list_databases (veja Multi-Banco de Dados Dinâmico). A IA também pode registrar mais bancos de dados em tempo de execução através da ferramenta MCP add_database.

Inicie um único banco de dados default (a IA registra o restante em tempo de execução):

{
  "mcpServers": {
    "rbdc-mcp": {
      "command": "rbdc-mcp",
      "args": [
        "--database-url", "sqlite://./database.db"
      ]
    }
  }
}

Pré-declare vários bancos de dados com aliases explícitos (um processo, múltiplos 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"
      ]
    }
  }
}

O primeiro valor de --alias é ignorado (a primeira URL sempre se torna default). Os aliases devem ser únicos, não vazios e não iguais a default para qualquer URL após a primeira.

Estilo legado — um processo por banco de dados (ainda funciona, mas não é mais necessário para acesso multi-banco de dados):

{
  "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"]
    }
  }
}

Caminho Completo no Windows (se não estiver no PATH)

{
  "mcpServers": {
    "rbdc-mcp": {
      "command": "C:\\tools\\rbdc-mcp.exe",
      "args": ["--database-url", "sqlite://C:\\path\\to\\database.db"]
    }
  }
}

Reiniciar: Após salvar, reinicie o Claude Desktop para carregar o servidor MCP.

Testar: No Claude Desktop, tente perguntar:

  • "Mostre-me o status da conexão do banco de dados"
  • "Quais tabelas existem no meu banco de dados?"

Codex

Localização do Arquivo de Configuração:

  • Global: ~/.codex/mcp.toml
  • Nível do projeto: .codex/mcp.toml (coloque na raiz do seu projeto)

Configuração Básica (.codex/mcp.toml ou ~/.codex/mcp.toml):

[mcp_servers.rbdc-mcp]
command = "rbdc-mcp"
args = ["--database-url", "sqlite://./database.db"]
type = "stdio"
enabled = true

Exemplos de Banco de Dados (processo único, múltiplos bancos de dados):

# 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

A primeira URL se torna o alias default (seu --alias, se houver, é ignorado). URLs adicionais devem ser emparelhadas com --alias na ordem de declaração. A IA pode ver todos os aliases registrados na inicialização através da ferramenta MCP list_databases, e também pode registrar mais bancos de dados em tempo de execução através de add_database.

Reiniciar: Após salvar o arquivo de configuração, reinicie o Codex para carregar o servidor MCP. Se o Codex já estiver em execução, execute codex reconnect para forçar um recarregamento.

Testar: No chat do Codex, tente perguntar:

  • "Mostre-me o status da conexão do banco de dados"
  • "Quais tabelas existem no meu banco de dados?"

📊 Exemplos de Uso

Operações de Banco de Dados em Linguagem Natural

  • Consultar Dados: "Mostre-me todos os usuários no banco de dados"
  • Modificar Dados: "Adicione um novo usuário chamado João com email joao@exemplo.com "
  • Obter Status: "Qual é o status da conexão do banco de dados?"
  • Informações de Esquema: "Quais tabelas existem no meu banco de dados?"
  • Multi-Banco de Dados: "Conecte-se ao meu banco de dados MySQL de pedidos e compare suas contagens de linhas com o cache SQLite local"

🗄️ Suporte a Banco de Dados

Banco de DadosFormato da URL de Conexão
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

⚙️ Opções de Configuração

ParâmetroDescriçãoPadrão
--database-url, -dURL de conexão do banco de dados. Omita para iniciar vazio (bancos de dados adicionados em tempo de execução via add_database). Repita para pré-registrar múltiplos bancos de dados na inicialização.None (opcional)
--aliasAlias para o --database-url correspondente (ordem de declaração). O primeiro é ignorado; aliases posteriores devem ser únicos, não vazios e não default.automático (db2, db3,...)
--max-connectionsTamanho máximo do pool de conexões1
--timeoutTempo limite de conexão (segundos)30
--log-levelNível de log (erro/aviso/informação/depuração)info
--read-onlyDesabilitar sql_exec e impor validação SQL somente leiturafalse

🛠️ Ferramentas Disponíveis

  • sql_query: Executa uma única instrução SQL somente leitura. Passe alias opcional para direcionar um banco de dados não padrão; o padrão é default.
  • sql_exec: Executa operações INSERT/UPDATE/DELETE quando o servidor não está no modo somente leitura. Passe alias opcional para direcionar um banco de dados não padrão.
  • db_status: Inspeciona o estado do pool de conexões de um banco de dados. Passe alias opcional.
  • test_connection: Envia um ping para um banco de dados registrado. Passe alias opcional.
  • list_databases: Lista todos os aliases de banco de dados registrados junto com sua URL e tipo detectado.
  • add_database: Registra uma nova conexão de banco de dados sob um alias e inicia um pool em tempo de execução. Esquemas de URL suportados: sqlite://, mysql://, pg:// / postgres://, mssql:// / sqlserver://, duckdb://, turso:// / libsql://.
  • remove_database: Remove o registro de um alias adicionado anteriormente. O alias reservado default não pode ser removido.

🔌 Multi-Banco de Dados Dinâmico

rbdc-mcp é um servidor multi-banco de dados a partir de um único processo. Você pode iniciá-lo sem nenhuma URL de banco de dados (args: [] na configuração do seu cliente MCP) e deixar a IA registrar bancos de dados dinamicamente através das ferramentas MCP. Quando uma URL é fornecida via --database-url, ela se torna o alias default; a IA pode então registrar mais bancos de dados em tempo de execução e rotear consultas para qualquer um deles por alias.

Inicialização Sem URL (Modo Dinâmico)

Quando o servidor inicia sem --database-url, a ferramenta list_databases retorna uma lista vazia e qualquer operação direcionada ao alias default sugerirá usar add_database primeiro. A IA pode registrar o primeiro (ou qualquer) banco de dados sob qualquer alias que escolher:

  1. add_database(alias="inventory", url="sqlite://./inventory.db") — registra um banco de dados.
  2. list_databases — confirma que ele agora está registrado.
  3. sql_query({ alias: "inventory", sql: "SELECT * FROM products" }) — consulta-o.

Dica: Você também pode registrar um banco de dados com alias="default" se preferir omitir alias das consultas subsequentes.

Inicialização Pré-declarada (Modo Estático)

Fluxo de ferramentas que a IA segue:

  1. list_databases — vê todos os aliases atualmente registrados.
  2. add_database(alias="orders_mysql", url="mysql://user:pass@host/orders") — registra um novo banco de dados e inicia um pool para ele.
  3. sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" }) — roteia uma consulta para esse banco de dados. Omita alias para usar o banco default.
  4. remove_database(alias="orders_mysql") — encerra o pool e remove o registro do alias quando terminar.

Duas maneiras de registrar bancos de dados

CaminhoQuandoComo
Pré-declarado via CLILista estável, você quer que a IA veja todos os bancos de dados na inicializaçãoRepita --database-url e emparelhe --alias (a primeira URL se torna default).
add_database em tempo de execuçãoAd-hoc / exploratório / inicialização sem URLA IA chama a ferramenta MCP add_database.

Ambos os caminhos gravam no mesmo registro alias → pool em memória, então o resultado é idêntico do ponto de vista da IA: list_databases retorna todos os aliases, independentemente de onde foram registrados.

Por que isso importa

  • Um processo de servidor MCP, muitos bancos de dados — sem necessidade de iniciar rbdc-mcp-mysql, rbdc-mcp-postgres, etc. para cada banco de dados.
  • Todos os aliases são descobertos via list_databases, então a IA pode escolher dinamicamente o alvo certo para cada consulta.
  • Quando um --database-url é fornecido, o alias default é reservado para ele e não pode ser removido.
  • Cada alias tem seu próprio pool de conexões independente — consultas simultâneas contra aliases diferentes não se bloqueiam mutuamente.

Exemplo de prompt que você pode dar à IA

"Conecte-se ao meu banco de dados MySQL de pedidos em mysql://root:pwd@10.0.0.5/orders e me diga a receita total por mês."

A IA chamará add_database(...), depois sql_query(...) contra esse alias sem reiniciar o servidor MCP — funciona da mesma forma, quer você tenha fornecido um --database-url na inicialização ou não.

Modo Somente Leitura

--read-only desabilita a ferramenta sql_exec, impedindo qualquer modificação de dados. Além disso, sql_query valida o SQL enviado e rejeita instruções contendo palavras-chave de escrita (INSERT, UPDATE, DELETE, etc.) ou entrada com múltiplas instruções.

📸 Capturas de Tela

Passo 1: Configuração Configuration

Passo 2: Uso no Claude Usage

Licença

Apache-2.0

  • Multi-Banco de Dados em Um Servidor: A IA pode registrar conexões adicionais de banco de dados em tempo de execução via ferramenta add_database e rotear consultas para qualquer banco de dados registrado por seu alias — sem necessidade de iniciar processos extras de servidor MCP | --database-url, -d | URL de conexão do banco de dados. Omita para iniciar vazio (bancos de dados adicionados em tempo de execução via add_database). Repita para pré-registrar múltiplos bancos de dados na inicialização. | None (opcional) |