db-mcp-gateway
Dê acesso a banco de dados para agentes de IA, sem nunca fornecer a URL do banco de dados
Documentação
db-mcp-gateway
Seu agente de IA precisa ler o banco de dados de produção. A string de conexão é a única coisa que você não pode entregar a ele.
Dê a um agente uma URL de banco de dados e essa credencial passa a viver em um laptop, em um arquivo de configuração, no histórico do shell e em tudo o que o agente decidir repetir. Rotacioná-la significa encontrar cada cópia. E cada consulta que ele executa não é atribuída a ninguém.
O db-mcp-gateway guarda a credencial em seu lugar. É um servidor MCP auto-hospedado que sua equipe implanta uma vez. Desenvolvedores apontam o agente para uma única URL. O gateway os autentica por meio do SSO que você já usa, verifica cada consulta contra permissões revisadas por pull request e registra uma linha de auditoria somente de acréscimo antes de qualquer resultado voltar.
A negação é o produto
Instalação
v1.5.0 — estável, em uso em produção. Uma imagem, um arquivo YAML e um Postgres para o estado próprio do gateway:
docker pull ghcr.io/developerz-ai/db-mcp-gateway:1.5.0
Público no GHCR, sem necessidade de autenticação para baixar. Multi-arquitetura
(linux/amd64, linux/arm64), construído de forma reproduzível a partir de
uma tag git v*. :latest acompanha o lançamento mais recente;
fixe a versão em produção. Política de compatibilidade em
website/docs/deployment/releasing.md, implantação em
website/docs/deployment/quickstart.md.
No lado do cliente, essa é toda a configuração:
claude mcp add --transport http db-gateway --scope project https://db.internal.acme.com
A primeira chamada aciona o SSO em um navegador real — sem webview embutida, sem
colar tokens. Veja o fluxo completo de ponta a ponta em
website/docs/usage/first-query.md, ou use outro cliente MCP via
website/docs/usage/other-agents.md.
Três pilares
| Pilar | O que significa |
|---|---|
| Credenciais nunca saem do gateway | Sem URL de banco em laptop, nunca. Nenhuma ferramenta retorna uma. Nenhuma linha de log contém uma. |
| Identidade de ponta a ponta | Cada consulta rastreia usuário SSO → grupo → concessão → linha de auditoria. |
| Configuração como código | Permissões vivem em YAML, revisadas por PR. Sem UI administrativa em banda, por design. |
Bancos de dados suportados
"MySQL" significa duas coisas não relacionadas aqui, então ambas são declaradas uma vez, em uma única tabela. Alvos de consulta são o que um agente pode ler através do gateway. O armazenamento de permissões é onde o gateway mantém seus próprios metadados de concessão — um agente nunca o toca.
| PostgreSQL | MongoDB | MySQL | MSSQL | |
|---|---|---|---|---|
| Alvo de consulta — agentes podem consultar | sim | sim | não — rejeitado na inicialização | não — rejeitado na inicialização |
| Armazenamento de permissões — estado próprio do gateway | sim | não, por design | apenas caminho de resolução, sem API administrativa | não |
Uma server.kind de mysql ou mssql se recusa a iniciar em vez
de subir limpo e falhar em toda consulta, então uma configuração errada é
detectada no deploy e não por um usuário. Adaptadores de consulta MySQL e MSSQL
estão no roadmap.
Desempenho: não publicamos números de benchmark. Removemos os que tínhamos porque ninguém os havia medido — aqui está o que aconteceu e como medir você mesmo.
O que ele faz
- Superfície de ferramentas MCP —
list_servers,list_databases,describe_schema,sample_table,run_query,explain,get_query_history. - OIDC SSO — Qualquer provedor de identidade compatível com OIDC (ex.: Okta, Google Workspace, Entra, Authentik, Keycloak). Login por fluxo de navegador a partir do agente.
- Somente leitura por padrão, gravações opt-in por concessão — papéis de menor privilégio por banco; uma concessão
query_writepermite gravações de dados (INSERT/UPDATE/DELETE), nunca mudanças de esquema. Timeouts de declaração e limites de linhas aplicados no banco e na camada do gateway. - Permissões em YAML — grupo × servidor × banco × ação, com restrições por concessão (
require_reason,row_limit,statement_timeout_ms, esquemas permitir/negar, janelas de tempo). Revisado por PR, com todo o histórico de mudanças que o git já oferece. - Log de auditoria síncrono — usuário, SQL, motivo, contagem de linhas, duração, resultado. A gravação é confirmada antes de a resposta ser enviada; se falhar, a solicitação falha. Retido no Postgres do gateway com TTL configurável e um podador horário, com sumidouros de stream
stdout/syslogopcionais para alimentar um pipeline de log existente ou SIEM. Arquivamento em armazenamento de objetos e streaming OTLP são roadmap Fase 4, não enviados. - Implantação simples —
docker pull, um arquivo YAML e um Postgres para o estado próprio do gateway. Os bancos que seus agentes consultam são os seus existentes; o quickstart local também sobe um alvo descartável, para você testar de ponta a ponta sem apontar para nada real. Sem runtime de agente, sem construtor de consultas, sem cofre de credenciais para operar.
Documentação completa de recursos →
Para quem é
| Se você é… | O que você ganha |
|---|---|
| Plataforma / SRE | Acesso de agentes a bancos sem exposição de credenciais, e um único lugar para revogar |
| Desenvolvedor backend | Consultas de produção para depuração sem senha no seu laptop, cada uma atribuída a você |
| Engenheiros de dados / analytics | Acesso assistido por agente a alvos suportados por uma única interface, com limites de recursos já aplicados |
| Segurança / conformidade | Atribuição SSO por consulta, registro de motivo obrigatório e uma trilha de auditoria que você não precisou construir |
Como funciona
┌─────────┐ MCP/HTTPS ┌──────────────┐ pg wire ┌──────────┐
│ agent │ ──────────────▶ │ gateway │ ────────────▶ │ target │
│ (Claude │ bearer: jwt │ │ ro role per │ DBs │
│ Code) │ ◀────────────── │ authz+audit │ ◀──────────── │ │
└─────────┘ tool result └──────┬───────┘ result rows └──────────┘
│
▼
┌──────────────┐
│ state DB │
│ (sessions + │
│ audit log) │
└──────────────┘
Documentação
| Se você está… | Leia |
|---|---|
| Tentando entender o que é isso | website/docs/initial-idea/01-overview.md |
| Um desenvolvedor cuja organização já usa | website/docs/usage/first-query.md (walkthrough de 5 min) → website/docs/usage/claude-code.md (referência) |
| Uma plataforma/SRE implantando | website/docs/deployment/quickstart.md |
| Adicionando a um cliente MCP que não é Claude | website/docs/usage/other-agents.md |
| Fazendo um release | website/docs/deployment/releasing.md |
| Querendo saber o que ele não fará | website/docs/initial-idea/10-non-goals.md |
| Acompanhando o que está construído vs. planejado | website/docs/initial-idea/11-roadmap.md |
| Perguntando sobre desempenho | website/docs/benchmarks.md |
| Comparando com alternativas | website/docs/comparison.md |
Construído com
| Preocupação | Escolha |
|---|---|
| Linguagem | Rust (estável) |
| Runtime assíncrono | tokio |
| HTTP | axum |
| Driver de banco | sqlx |
| Configuração | serde + YAML, validado na inicialização |
| Armazenamento de estado | Postgres (co-implantado) |
| Distribuição | Imagem OCI — ghcr.io/developerz-ai/db-mcp-gateway |
Licença
MIT. Veja LICENSE.