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

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

Live gateway: service:demo-bot in the query_read group reads customers, then the same account's INSERT is rejected as forbidden_sql — both calls commit as audit_calls rows before the response returns.

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

PilarO que significa
Credenciais nunca saem do gatewaySem URL de banco em laptop, nunca. Nenhuma ferramenta retorna uma. Nenhuma linha de log contém uma.
Identidade de ponta a pontaCada consulta rastreia usuário SSO → grupo → concessão → linha de auditoria.
Configuração como códigoPermissõ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.

PostgreSQLMongoDBMySQLMSSQL
Alvo de consulta — agentes podem consultarsimsimnão — rejeitado na inicializaçãonão — rejeitado na inicialização
Armazenamento de permissões — estado próprio do gatewaysimnão, por designapenas caminho de resolução, sem API administrativanã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_write permite 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/syslog opcionais 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 / SREAcesso de agentes a bancos sem exposição de credenciais, e um único lugar para revogar
Desenvolvedor backendConsultas de produção para depuração sem senha no seu laptop, cada uma atribuída a você
Engenheiros de dados / analyticsAcesso assistido por agente a alvos suportados por uma única interface, com limites de recursos já aplicados
Segurança / conformidadeAtribuição SSO por consulta, registro de motivo obrigatório e uma trilha de auditoria que você não precisou construir

Casos de uso detalhados →


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 é issowebsite/docs/initial-idea/01-overview.md
Um desenvolvedor cuja organização já usawebsite/docs/usage/first-query.md (walkthrough de 5 min) → website/docs/usage/claude-code.md (referência)
Uma plataforma/SRE implantandowebsite/docs/deployment/quickstart.md
Adicionando a um cliente MCP que não é Claudewebsite/docs/usage/other-agents.md
Fazendo um releasewebsite/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. planejadowebsite/docs/initial-idea/11-roadmap.md
Perguntando sobre desempenhowebsite/docs/benchmarks.md
Comparando com alternativaswebsite/docs/comparison.md

Construído com

PreocupaçãoEscolha
LinguagemRust (estável)
Runtime assíncronotokio
HTTPaxum
Driver de bancosqlx
Configuraçãoserde + YAML, validado na inicialização
Armazenamento de estadoPostgres (co-implantado)
DistribuiçãoImagem OCI — ghcr.io/developerz-ai/db-mcp-gateway

Licença

MIT. Veja LICENSE.