1

Criei um servidor MCP em Go para conectar IAs a bancos relacionais (Oracle, SQL Server, Postgres e MySQL) com zero dependências de clients locais

Fala pessoal!

Com a popularização do Model Context Protocol (MCP) e o avanço de assistentes como Claude Desktop, Claude Code, Cursor e Codex, um dos casos de uso mais produtivos é dar à IA a capacidade de inspecionar tabelas, entender schemas e rodar consultas pontuais para nos ajudar a debugar ou desenvolver queries complexas.

No entanto, ao testar as soluções existentes na comunidade (a maioria em Python ou Node.js), esbarrei em três gargalos bem incômodos no dia a dia:

  1. O problema das dependências e drivers locais: Conectar em bancos corporativos como Oracle ou SQL Server costuma exigir instalação de runtimes pesados, Oracle Instant Client, DLLs de OCI ou variáveis de ambiente complexas.
  2. Risco de segurança real: Entregar uma tool de execução SQL para a IA sem restrições severas pode resultar em desastres (como um DROP TABLE ou DELETE em cascata não planejado), e filtros ingênuos baseados em regex simples são facilmente burlados por quebras de linha ou comentários SQL (/* ... */).
  3. Desperdício absurdo de tokens de contexto: Despejar dezenas de colunas, constraints e schemas inteiros em JSON bruto estala a janela de contexto da LLM e encarece desnecessariamente a chamada.

Para resolver essas dores de forma definitiva, desenvolvi e abri o código do DB Explorer MCP, feito 100% em Go.


💡 O que é o DB Explorer MCP?

É um servidor MCP de alta performance compilado em um único binário estático e autossuficiente, que implementa 8 ferramentas (tools) de inspeção e execução para Oracle, SQL Server, PostgreSQL e MySQL.

Principais Diferenciais Técnicos

1. Drivers 100% Nativos (Zero Client Dependency)

Diferente de soluções em C/Python/Node, o projeto utiliza drivers puros escritos em Go (go-ora/v2, go-mssqldb, pgx/v5 e go-sql-driver/mysql).

  • No caso do Oracle: Não precisa de Oracle Instant Client nem de bibliotecas C. Funciona direto do Oracle 10g até o 23c em Windows, Linux e macOS com um único executável.

2. Segurança com Análise Léxica/AST (Não apenas Regex)

O servidor conta com um verificador que remove comentários (--, /* */, #) e literais de texto antes da checagem para evitar bypasses, além de oferecer três modos de conexão configuráveis por banco:

  • readonly: Permite apenas comandos passivos (SELECT, DESCRIBE). Bloqueia qualquer tentativa de mutação ou encadeamento de comandos.
  • normal (padrão): Ideal para desenvolvimento. Permite CREATE, ALTER, INSERT e UPDATE, mas bloqueia estritamente comandos destrutivos como DROP, DELETE e TRUNCATE.
  • teste: Modo irrestrito para ambientes descartáveis.

Além disso, as senhas e strings de conexão são gerenciadas por um CLI separado (db-explorer-manager), ficando totalmente salvas fora do alcance da IA.

3. Economia de Tokens de Contexto

A IA pode escolher o formato de retorno e o nível de detalhamento do schema:

  • Níveis de Schema (detail_level):
    • basic: Apenas colunas essenciais, tipos, nullable e PK (formato super enxuto).
    • standard: Tipos, precisão, valores default e PK/FK/Unique.
    • detailed: Completo com regras de CHECK, validações e expressões.
  • Formatos de Saída: Além de json, xml, md e csv (com separador configurável), criei suporte ao formato toon, uma notação densa orientada a tokens que reduz expressivamente o payload de dados tabulares comparado ao JSON formatado.
  • Paginação Inteligente: Parâmetros limit, offset e flag explícita de truncamento para evitar que a IA tente ler 50.000 linhas de uma vez.

4. Catálogo Uniforme entre os 4 Bancos

Mapear constraints e rotinas em bancos diferentes costuma ser uma dor de cabeça por causa das diferenças nos catálogos de metadados (sys.all_tables, sys.tables, information_schema, pg_catalog). O MCP padronizou ferramentas para:

  • list_constraints: Lista PKs, FKs, Unique e Checks com suporte ao parâmetro direction: "referenced_by" (para descobrir quais tabelas externas apontam para a tabela atual).
  • list_indexes: Mostra unicidade, colunas incluídas (INCLUDE) e filtros parciais.
  • list_routines & get_routine_source: Extrai código-fonte de Procedures, Functions, Triggers e Packages (com aviso claro caso o objeto esteja criptografado ou em wrapped code).

🛠️ Como Instalar e Testar

Opção 1: Binários Prontos via Releases (Recomendado — Sem precisar instalar Go)

Você não precisa de runtime, Node.js, Python ou Go instalados na máquina. Basta baixar o pacote pronto:

  1. Acesse a Página de Releases do GitHub e baixe o arquivo para seu SO (Windows, Linux ou macOS - x64 e ARM64).
  2. Descompacte o pacote e execute o configurador interativo incluído:
    • No Windows: Abra o PowerShell na pasta e execute:
      .\configure.ps1
      
    • No Linux / macOS: Abra o terminal na pasta e execute:
      chmod +x configure.sh
      ./configure.sh
      
  3. O script detecta automaticamente e pergunta onde você deseja registrar o servidor:
    • Claude Code (CLI): Pergunta se deseja registrar em escopo global (user) ou local do projeto.
    • Claude Desktop: Adiciona automaticamente a entrada no claude_desktop_config.json.
    • Cursor IDE: Atualiza automaticamente o mcp.json.
    • Codex (CLI / Desktop): Registra via comando e atualiza o config.toml.

Opção 2: Compilando a partir do Código Fonte (Para quem tem Go >= 1.22)

Se preferir compilar por conta própria:

git clone https://github.com/rogick/db-explorer-mcp.git
cd db-explorer-mcp

# Windows:
.\install.ps1

# Linux / macOS:
chmod +x install.sh
./install.sh

Cadastrando suas Conexões

Depois de configurar, cadastre os bancos que a IA poderá enxergar usando o gerenciador interativo (a senha é inserida de forma oculta no terminal):

# Exemplos:
./db-explorer-manager add-postgres
./db-explorer-manager add-oracle
./db-explorer-manager add-sqlserver
./db-explorer-manager add-mysql

# Listar os bancos cadastrados:
./db-explorer-manager list

Ao cadastrar, você escolhe o apelido da conexão e o modo de segurança (readonly, normal ou teste). A partir daí, basta abrir o seu cliente de IA favorito e começar a explorar!


🤝 Repositório e Feedback

O projeto é 100% open source sob a licença MIT:
👉 GitHub: https://github.com/rogick/db-explorer-mcp

Fiz esse projeto para resolver um gargalo real no meu fluxo de trabalho com LLMs em bancos de dados corporativos. Gostaria muito de ouvir a experiência da comunidade:

  • Vocês já utilizam MCP conectado a bancos no dia a dia?
  • Que outras travas ou formatos de contexto acham essenciais ao dar autonomia de banco para um agente?

Bugs, sugestões e PRs são super bem-vindos!

Carregando publicação patrocinada...