Database Server

Um servidor Model Context Protocol (MCP) que fornece capacidades de execução de consultas em múltiplos bancos de dados, com suporte para bancos de dados SQLite, PostgreSQL e MySQL. Inclui uma interface web integrada para gerenciar conexões de banco de dados.

Documentação

MCP Database Server

Um servidor Model Context Protocol (MCP) que fornece capacidades de execução de consultas em múltiplos bancos de dados com suporte para SQLite, PostgreSQL e MySQL. Inclui uma Web UI integrada para gerenciar conexões de banco de dados.

Pacote NPM

Disponível no NPM: @ahmetbarut/mcp-database-server

# Use with npx (no installation required)
npx @ahmetbarut/mcp-database-server

# Or install globally
npm install -g @ahmetbarut/mcp-database-server

Recursos

  • Suporte a Múltiplos Bancos de Dados: SQLite, PostgreSQL e MySQL com conexões reais
  • Web UI: Interface de navegador integrada para gerenciar conexões de banco de dados
  • Armazenamento de Configuração SQLite: Todas as configurações de conexão persistidas localmente em ~/.mcp-database-server/connections.db
  • Conformidade com o Protocolo MCP: Implementação JSON-RPC completa com suporte total a ferramentas
  • Detecção Automática Inteligente: Seleciona automaticamente a conexão ativa única para consultas
  • Recuperação de Conexão: Tenta novamente conexões com falha com relatórios de erro detalhados
  • Segurança em Primeiro Lugar: Consultas parametrizadas, proteção contra injeção de SQL, registro de auditoria
  • Suporte a SSL: SSL configurável por conexão
  • Segurança de Tipos: Implementação TypeScript completa com validação Zod
  • Compatível com Node.js v23: Funciona com as versões mais recentes do Node.js

Início Rápido

npx @ahmetbarut/mcp-database-server

O servidor inicia e a Web UI abre em http://localhost:3693. Adicione suas conexões de banco de dados pelo navegador.

Web UI

A Web UI integrada fornece uma interface visual para gerenciar conexões de banco de dados:

  • Adicionar/Editar/Excluir conexões de banco de dados (SQLite, PostgreSQL, MySQL)
  • Testar conexões antes de salvar
  • Alternância de SSL para bancos de dados de rede
  • Armazenamento persistente — as conexões sobrevivem a reinicializações do servidor

Acesse em http://localhost:3693 quando o servidor estiver em execução.

Variáveis de Ambiente

VariávelPadrãoDescrição
WEB_UI_PORT3693Porta da Web UI
WEB_UI_ENABLEDtrueAtivar/desativar Web UI
LOG_LEVELinfoNível de registro (debug, info, warn, error)

Configuração do Cliente MCP

Claude Desktop

Adicione ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "@ahmetbarut/mcp-database-server"]
    }
  }
}

Cursor IDE

Adicione ao ~/.cursor/mcp.json:

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "@ahmetbarut/mcp-database-server"]
    }
  }
}

Porta Personalizada

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "@ahmetbarut/mcp-database-server"],
      "env": {
        "WEB_UI_PORT": "4000"
      }
    }
  }
}

Após iniciar, abra a Web UI no seu navegador para adicionar conexões de banco de dados.

Ferramentas MCP

execute_query

Execute consultas SQL em uma conexão de banco de dados com suporte a consultas parametrizadas.

{
  "connection_name": "my-postgres",
  "query": "SELECT * FROM users WHERE status = $1",
  "parameters": ["active"]
}

list_databases

Lista bancos de dados de uma conexão específica ou de todas as conexões configuradas. Suporta detecção automática inteligente quando apenas uma conexão está ativa.

{
  "connection_name": "my-postgres"
}

list_connections

Lista todas as conexões de banco de dados com status e detalhes.

{
  "include_credentials": false
}

retry_failed_connections

Tenta novamente conexões de banco de dados com falha.

{
  "connection_name": "my-postgres"
}

Configuração de Conexão

Todas as conexões de banco de dados são gerenciadas através da Web UI e armazenadas em um banco de dados SQLite local em ~/.mcp-database-server/connections.db.

Tipos de Banco de Dados Suportados

SQLite

  • Caminho para o arquivo do banco de dados

PostgreSQL

  • Host, porta, banco de dados, usuário, senha
  • Suporte a SSL (opcional)

MySQL

  • Host, porta, banco de dados, usuário, senha
  • Suporte a SSL (opcional)

Configurações de Conexão

ConfiguraçãoPadrãoDescrição
maxConnections10Tamanho máximo do pool de conexões
timeout30000Tempo limite de conexão em milissegundos
sslfalseAtivar SSL para a conexão

Desenvolvimento

# Clone the repository
git clone https://github.com/ahmetbarut/mcp-database-server.git
cd mcp-database-server

# Install dependencies
npm install

# Development mode (hot-reload)
npm run dev

# Build
npm run build

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint
npm run lint

# Type check
npm run type-check

Estrutura do Projeto

mcp-database-server/
├── src/
│   ├── index.ts              # CLI entry point
│   ├── server/
│   │   └── mcp-server.ts     # MCP server, tool handlers
│   ├── database/
│   │   ├── base.ts           # Abstract base driver
│   │   ├── factory.ts        # Driver factory & connection manager
│   │   └── drivers/          # SQLite, PostgreSQL, MySQL drivers
│   ├── config/
│   │   ├── settings.ts       # Config manager (loads from SQLite store)
│   │   └── config-store.ts   # SQLite-backed connection storage
│   ├── web/
│   │   ├── web-server.ts     # HTTP server for Web UI
│   │   ├── routes.ts         # REST API endpoints
│   │   └── ui.ts             # Embedded HTML/CSS/JS interface
│   ├── types/                # TypeScript types & Zod schemas
│   └── utils/                # Logger, exceptions, helpers
├── tests/unit/               # Jest test suites
└── dist/                     # Compiled output

Arquitetura

npx @ahmetbarut/mcp-database-server
    │
    ├── MCPDatabaseServer
    │   ├── MCP stdio transport (JSON-RPC)
    │   ├── DatabaseConnectionManager
    │   └── WebUIServer (http://localhost:3693)
    │
    └── ConnectionConfigStore (~/.mcp-database-server/connections.db)
        └── SQLite database with connection configs
  1. Armazenamento de Configuração carrega conexões salvas do banco SQLite local
  2. Gerenciador de Conexões inicializa os drivers de banco de dados para cada configuração
  3. Servidor MCP expõe ferramentas via JSON-RPC sobre stdio
  4. Web UI fornece CRUD baseado em navegador para conexões via API REST

Segurança

  • Consultas parametrizadas — previne injeção de SQL
  • Mascaramento de credenciais — senhas ocultas na saída de list_connections
  • Registro de auditoria — todas as operações registradas via Winston
  • Validação de entrada — esquemas Zod para toda a configuração

Testes

Test Suites: 2 passed, 2 total
Tests:       23 passed, 23 total
npm test               # Run all tests
npm run test:watch     # Watch mode
npm run test:coverage  # Coverage report

Solução de Problemas

Web UI inacessível

  • Verifique se a porta 3693 já está em uso
  • Tente uma porta diferente: WEB_UI_PORT=4000

Falha na conexão

  • Use o botão "Testar Conexão" na Web UI antes de salvar
  • Verifique se o servidor de banco de dados está em execução e acessível
  • Verifique as credenciais e a conectividade de rede
  • Para PostgreSQL: desative o SSL se o servidor não o suportar

O cliente MCP não consegue conectar

  • Garanta que npx @ahmetbarut/mcp-database-server seja executado sem erros
  • Reinicie o cliente MCP após alterações de configuração
  • Verifique os logs do cliente MCP para detalhes do erro

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes.

Contribuição

  1. Siga os padrões de codificação TypeScript
  2. Adicione testes para novas funcionalidades
  3. Atualize a documentação para alterações de API
  4. Siga as diretrizes de segurança

Suporte

Para problemas e dúvidas, use o rastreador de problemas do GitHub.