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
| Recurso | Driver | Descrição |
|---|---|---|
sqlite | rbdc-sqlite | Suporte a SQLite |
mysql | rbdc-mysql | Suporte a MySQL |
postgres | rbdc-pg | Suporte a PostgreSQL |
mssql | rbdc-mssql | Suporte a MSSQL/SQL Server |
duckdb | rbdc-duckdb | Suporte a DuckDB |
turso | rbdc-turso | Suporte 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:
| Plataforma | Download |
|---|---|
| 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 Dados | Formato da URL de Conexão |
|---|---|
| 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 |
⚙️ Opções de Configuração
| Parâmetro | Descrição | Padrão |
|---|---|---|
--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) |
--alias | Alias 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-connections | Tamanho máximo do pool de conexões | 1 |
--timeout | Tempo limite de conexão (segundos) | 30 |
--log-level | Nível de log (erro/aviso/informação/depuração) | info |
--read-only | Desabilitar sql_exec e impor validação SQL somente leitura | false |
🛠️ Ferramentas Disponíveis
sql_query: Executa uma única instrução SQL somente leitura. Passealiasopcional 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. Passealiasopcional 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. Passealiasopcional.test_connection: Envia um ping para um banco de dados registrado. Passealiasopcional.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 umaliase 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 reservadodefaultnã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:
add_database(alias="inventory", url="sqlite://./inventory.db")— registra um banco de dados.list_databases— confirma que ele agora está registrado.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 omitiraliasdas consultas subsequentes.
Inicialização Pré-declarada (Modo Estático)
Fluxo de ferramentas que a IA segue:
list_databases— vê todos os aliases atualmente registrados.add_database(alias="orders_mysql", url="mysql://user:pass@host/orders")— registra um novo banco de dados e inicia um pool para ele.sql_query({ alias: "orders_mysql", sql: "SELECT COUNT(*) FROM orders" })— roteia uma consulta para esse banco de dados. Omitaaliaspara usar o bancodefault.remove_database(alias="orders_mysql")— encerra o pool e remove o registro do alias quando terminar.
Duas maneiras de registrar bancos de dados
| Caminho | Quando | Como |
|---|---|---|
| Pré-declarado via CLI | Lista estável, você quer que a IA veja todos os bancos de dados na inicialização | Repita --database-url e emparelhe --alias (a primeira URL se torna default). |
add_database em tempo de execução | Ad-hoc / exploratório / inicialização sem URL | A 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 aliasdefaulté 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/orderse 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
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_databasee rotear consultas para qualquer banco de dados registrado por seualias— 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 viaadd_database). Repita para pré-registrar múltiplos bancos de dados na inicialização. |None(opcional) |

