Skip to main content
Glama

🛡️ MCP Databases Server - Seguro e Robusto

Este projeto implementa um servidor MCP (Model Context Protocol) em Python para expor operações de banco de dados relacionais (SQL Server, MySQL, PostgreSQL) como ferramentas MCP, permitindo que aplicações LLM e agentes consultem e manipulem dados de forma segura e protegida contra SQL injection.

🎯 O que este MCP Server faz?

  • Expõe operações de banco de dados como ferramentas MCP (tools) para uso por LLMs, agentes e automações

  • Proteção multicamada contra SQL injection e comandos maliciosos

  • Configuração automática via arquivos .env com busca hierárquica

  • Validação rigorosa de todas as operações de banco de dados

  • Suporta integração com VS Code e Claude via arquivo mcp.json

  • Impossível contornar as proteções de segurança implementadas

🛠️ Tools Disponíveis

📊 Consulta de Dados (Somente Leitura)

  • execute_query: Executa queries SELECT com validação de segurança

  • list_tables: Lista todas as tabelas do banco de dados

  • expose_schema: Expõe o schema completo do banco de dados

🏗️ Operações DDL (Data Definition Language)

  • create_table: Cria tabelas com validação de nomes e tipos

  • alter_table: Modifica estrutura de tabelas (ADD, MODIFY, DROP COLUMN)

  • drop_table: Remove tabelas (⚠️ requer confirmação dupla)

📝 Operações DML (Data Manipulation Language)

  • insert_record: Insere um registro único com parâmetros seguros

  • bulk_insert: Inserção em lote com validação e limites de segurança

  • update_records: Atualiza registros com parâmetros e limites configuráveis

  • delete_records: Exclui registros (⚠️ requer confirmação e limites)

🛡️ Ferramentas de Segurança

  • security_check: Verifica se uma query é segura sem executá-la

  • get_security_config: Exibe configurações de segurança ativas

  • safe_query_prompt: Validação adicional de queries perigosas

🚨 Pontos de Atenção e Segurança

Comandos Bloqueados

O sistema bloqueia automaticamente:

  • DELETE, DROP, EXEC, EXECUTE, TRUNCATE

  • ALTER USER, GRANT, REVOKE, CREATE USER

  • xp_cmdshell, sp_*, OPENROWSET, BULK INSERT

  • Qualquer tentativa de SQL injection

🔒 Proteções Implementadas

  • Parâmetros obrigatórios: Impossível executar sem configuração adequada

  • Validação multicamada: Tool → Database → Prompt → Config

  • Queries parametrizadas: 100% dos valores são sanitizados

  • Confirmação dupla: Operações destrutivas exigem confirmação exata

  • Limites de segurança: Controle de quantos registros podem ser afetados

  • Nomes validados: Apenas caracteres alfanuméricos e underscore

⚠️ Operações que Requerem Cuidado

  • drop_table: Requer confirmação exata DELETE_TABLE_<nome_tabela>

  • delete_records: Requer confirmação DELETE_FROM_<tabela>_WHERE_<condição>

  • update_records: Limitado por safety_limit (padrão: 100 registros)

  • bulk_insert: Máximo de 10.000 registros por operação

🔧 Configuração Obrigatória

  • Arquivo .env: Busca automática na raiz → subpastas → solicitação ao usuário

  • Parâmetros obrigatórios: DB_TYPE, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME

  • Sem configuração = sem execução: Sistema não permite bypass

🚀 Instalação e Configuração

📁 Configuração do Ambiente (.env)

O sistema busca automaticamente arquivos .env na seguinte ordem:

  1. Diretório raiz do projeto

  2. Subpastas (config/, db/, local/, etc.)

  3. Solicitação interativa ao usuário

Exemplo de arquivo .env:

# PostgreSQL DB_TYPE=postgres DB_HOST=127.0.0.1 DB_PORT=5432 DB_USER=admin DB_PASSWORD=sua_senha_aqui DB_NAME=minha_base # MySQL DB_TYPE=mysql DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=sua_senha_aqui DB_NAME=minha_base # SQL Server DB_TYPE=mssql DB_HOST=localhost DB_PORT=1433 DB_USER=sa DB_PASSWORD=sua_senha_aqui DB_NAME=minha_base

📦 Instalação Local e Global (Linux)

Instalação local (ambiente virtual)

Na raiz do projeto crie uma pasta .mcpenv

  1. Crie e ative o ambiente virtual:

python3 -m venv .mcpenv source .mcpenv/bin/activate
  1. Instale as dependências:

pip install -r requirements.txt pip install .

🔧 Gerando o arquivo mcp.json

No diretório do projeto, crie um arquivo .vscode/mcp.json com o seguinte conteúdo:

📍 Para Instalação Local:

{ "servers": { "mcp-databases": { "type": "stdio", "command": ".mcpenv/bin/python", "args": ["server.py"] } } }

🌐 Para Instalação Global (pipx):

{ "servers": { "mcp-databases": { "transport": "stdio", "command": "/home/%USER%/.local/bin/mcp-databases", "tools": [ "execute_query", "list_tables", "expose_schema", "insert_record", "create_table", "alter_table", "drop_table", "update_records", "delete_records", "bulk_insert", "security_check", "get_security_config", "safe_query_prompt" ] } } }
  1. O comando mcp-databases estará disponível no terminal enquanto o ambiente estiver ativado.

Instalação global (pipx)

  1. Instale o pipx (se necessário):

sudo apt update sudo apt install pipx pipx ensurepath
  1. Instale o MCP globalmente:

pipx install /caminho/para/seu/projeto pipx inject mcp-databases python-dotenv
  1. O comando mcp-databases ficará disponível em qualquer terminal do sistema.

Crie uma pasta na raiz do projeto .vscode isso instala o mcp nas extensões do vscode

🔄 Atualização Global

Se atualizar o código, reinstale com:

pipx reinstall mcp-databases

📋 Dependências

🐍 Python e Frameworks

🗄️ Drivers de Banco de Dados

🔧 Drivers ODBC do Sistema

  • SQL Server: msodbcsql18

    sudo apt-get install msodbcsql18
  • MySQL: libmysqlclient-dev

    sudo apt-get install libmysqlclient-dev
  • PostgreSQL: libpq-dev

    sudo apt-get install libpq-dev

Instalação das Dependências

# Instalação local pip install -r requirements.txt # Instalação global com pipx (caso de erro de módulo não encontrado) pipx inject mcp-databases mysql-connector-python pipx inject mcp-databases psycopg2-binary pipx inject mcp-databases pyodbc pipx inject mcp-databases python-dotenv

🎮 Como Usar

1️⃣ Executar o Servidor MCP

# Local (ambiente virtual) source .mcpenv/bin/activate python server.py # Global (pipx) mcp-databases

2️⃣ Rodar através do VS Code

  1. Vá em Extensões → MCP SERVERS

  2. Selecione o servidor mcp-databases

  3. Use o GitHub Copilot Chat para interagir

3️⃣ Exemplos de Uso Seguro

📊 Consultas (100% Seguras)

@mcp listar todas as tabelas do banco @mcp mostrar a estrutura da tabela usuarios @mcp executar: SELECT nome, email FROM usuarios WHERE status = 'ativo'

🏗️ Criar Tabela

@mcp criar uma tabela chamada 'produtos' com colunas: id (int primary key), nome (varchar 255), preco (decimal)

📝 Inserção Segura

@mcp inserir um novo usuário: nome 'João Silva', email 'joao@empresa.com' @mcp fazer inserção em lote de 5 produtos na tabela produtos

⚠️ Operações com Confirmação

@mcp atualizar salário do usuário com id 123 para 5500.00 @mcp remover usuários inativos da tabela usuarios (confirmação necessária)

📈 Exemplos de Uso pelo Copilot

Listando Tabelas

alt text

Executando Queries Seguras

alt text

Analisando Procedures

alt text

🛡️ Garantias de Segurança

O que está PROTEGIDO:

  • SQL Injection: 100% bloqueado com parâmetros seguros

  • Comandos destrutivos: DELETE, DROP, EXEC bloqueados

  • Bypass de proteções: Impossível contornar validações

  • Configuração obrigatória: Sistema não executa sem .env

  • Validação multicamada: Tool + Database + Prompt + Config

O que está PERMITIDO:

  • Consultas (SELECT): Totalmente liberadas e seguras

  • Inserções: Com validação de parâmetros

  • Atualizações: Com limites e confirmação

  • Criação de estruturas: DDL com validação rigorosa

  • Operações administrativas: List tables, expose schema

O que está BLOQUEADO:

  • SQL Injection: Qualquer tentativa é detectada e bloqueada

  • Comandos maliciosos: DROP, DELETE, EXEC, TRUNCATE

  • Nomes inválidos: Caracteres especiais em tabelas/colunas

  • Bypass de confirmação: Operações destrutivas sem confirmação exata

  • Execução sem configuração: Parâmetros obrigatórios

📚 Documentação Adicional

🆘 Suporte e Contribuições

Para dúvidas, problemas ou contribuições:


🏆 Status do Projeto

✅ PRODUÇÃO - SISTEMA SEGURO

  • 🛡️ SQL Injection Proof - Proteção total implementada

  • 🔄 Multi-SGBD - PostgreSQL, MySQL, SQL Server

  • ⚙️ Auto-Config - Configuração automática via .env

  • 🧪 100% Testado - Testes abrangentes de segurança

Última atualização: Outubro 2025 - Sistema completamente reformulado com foco em segurança máxima.

-
security - not tested
F
license - not found
-
quality - not tested

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    An MCP server that integrates with MySQL databases, enabling secure read and write operations through LLM-driven interfaces with support for transaction handling and performance monitoring.
    Last updated -
    202
    17
    MIT License
  • -
    security
    A
    license
    -
    quality
    MCP-Server from your Database optimized for LLMs and AI-Agents. Supports PostgreSQL, MySQL, ClickHouse, Snowflake, MSSQL, BigQuery, Oracle Database, SQLite, ElasticSearch, DuckDB
    Last updated -
    501
    Apache 2.0
    • Linux
  • -
    security
    F
    license
    -
    quality
    A tool that connects to local MySQL databases and enables large language models (LLMs) to execute SQL queries through the Model Context Protocol (MCP).
    Last updated -
    452
    1
    • Linux
    • Apple
  • -
    security
    A
    license
    -
    quality
    A flexible Model Context Protocol server that enables LLMs to interact with database systems, supporting dynamic schema discovery and query execution across PostgreSQL and SQLite backends.
    Last updated -
    2
    MIT License

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fean-developer/mcp-databases'

If you have feedback or need assistance with the MCP directory API, please join our Discord server