Simple MySQL MCP Server

A simple MCP server for MySQL, demonstrating fundamental MCP protocol concepts. Requires a MySQL database connection configured via environment variables.

Servidor MCP MySQL Otimizado

Servidor MCP (Model Context Protocol) para MySQL com arquitetura limpa e princípios SOLID.

🆕 Melhorias na v1.1.0

✨ Arquitetura Otimizada

  • Separação de Responsabilidades: Classes especializadas para cada função
  • SOLID Principles: Código mais maintível e extensível
  • Clean Architecture: Estrutura modular e testável

🔒 Segurança Aprimorada

  • Validação de Queries: Proteção contra operações perigosas
  • Sanitização: Nomes de tabelas validados
  • SQL Injection Protection: Parâmetros seguros

🚀 Performance e Confiabilidade

  • Conexão Reutilizada: Gerenciamento eficiente de recursos
  • Tratamento de Erros: Mensagens consistentes e informativas
  • Shutdown Gracioso: Encerramento controlado de conexões

🏗️ Arquitetura

MySQLMCPServer
├── DatabaseConfig (Configurações)
├── DatabaseConnection (Conexão MySQL)
├── QueryValidator (Validação e Segurança)
├── ResponseFormatter (Formatação)
├── ToolsHandler (Ferramentas)
├── ResourcesHandler (Recursos)
└── PromptsHandler (Templates)

🎯 Conceitos MCP Implementados

1. Tools (Ferramentas)

  • execute_query: Executa queries SQL com validação
  • describe_table: Descreve estrutura de tabelas

2. Resources (Recursos)

  • mysql://databases: Lista de bancos disponíveis
  • mysql://tables: Tabelas do banco atual
  • mysql://schema: Schema completo

3. Prompts (Templates)

  • analyze_table: Análise detalhada de tabela
  • find_large_tables: Tabelas com mais registros
  • database_overview: Visão geral do banco

🚀 Instalação e Uso

1. Instalar Dependências

npm install

2. Configurar MySQL

Crie um arquivo .env:

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=sua_senha
MYSQL_DATABASE=seu_banco

3. Compilar e Executar

# Compilar
npm run build

# Executar
npm start

# Desenvolvimento
npm run dev

4. Testar Conexão

npm run test:connection

🔧 Configuração Claude Desktop

Adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "mysql-optimized": {
      "command": "node",
      "args": ["/caminho/para/dist/index.js"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "sua_senha",
        "MYSQL_DATABASE": "seu_banco"
      }
    }
  }
}

🛡️ Segurança

Validações Implementadas:

  • ✅ Bloqueio de DROP DATABASE/TABLE
  • ✅ Proteção contra DELETE ... WHERE 1=1
  • ✅ Sanitização de nomes de tabelas
  • ✅ Validação de queries vazias
  • ✅ Tratamento seguro de parâmetros

Práticas de Segurança:

  • 🔒 Conexões controladas
  • 🔒 Logs de erro seguros
  • 🔒 Isolamento de responsabilidades
  • 🔒 Validação de entrada

📊 Exemplo de Uso

// Executar query segura
{
  "name": "execute_query",
  "arguments": {
    "query": "SELECT * FROM usuarios LIMIT 5",
    "database": "meu_banco"
  }
}

// Analisar tabela
{
  "name": "describe_table",
  "arguments": {
    "table_name": "usuarios"
  }
}

🔍 Debug e Logs

O servidor fornece logs informativos:

  • ✅ Conexão estabelecida
  • 🔄 Queries executadas
  • ❌ Erros com detalhes
  • 🔚 Shutdown gracioso

📈 Roadmap

  • Cache de resultados
  • Métricas de performance
  • Pool de conexões
  • Suporte a transações
  • Interface web de monitoramento

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📝 Changelog

v1.1.0 (2025-01-XX)

  • ✨ Arquitetura otimizada com SOLID
  • 🔒 Validação e segurança aprimoradas
  • 🚀 Performance melhorada
  • 📚 Documentação expandida

v1.0.0 (2025-01-XX)

  • 🎉 Versão inicial
  • 🔧 Implementação básica MCP
  • 🗄️ Suporte MySQL completo

📄 Licença

MIT License - veja o arquivo LICENSE para detalhes.


Criado com ❤️ para demonstrar o protocolo MCP da Anthropic

Related Servers