MCP MySQL Server
🚀 MCP MySQL Server
Um servidor MCP (Model Context Protocol) robusto e profissional para interação com bancos MySQL através de agentes de IA. Este projeto demonstra implementação avançada de protocolos MCP com gerenciamento inteligente de conexões e ferramentas especializadas para análise de bancos de dados.
✨ Características Principais
🔐 Gerenciamento Inteligente de Conexões - Configuração dinâmica via tools MCP
🛡️ Segurança Robusta - Apenas operações SELECT permitidas, validação de entrada com Zod
🔄 Múltiplos Transportes - Suporte a stdio e SSE para diferentes cenários de uso
📊 Ferramentas Especializadas - Análise de schema, foreign keys e estrutura de tabelas
🚀 Configuração Automática - Descoberta inteligente de configurações MySQL
💡 Fallback Interativo - Solicita configuração quando necessário
🛠️ Ferramentas Disponíveis
🔧 Configuração de Conexão
mysql_configure_connection- Configuração dinâmica de conexão MySQLmysql_auto_configure_connection- Descoberta automática de configuraçãomysql_get_connection_status- Status atual da conexãomysql_check_connection- Teste de conectividade
📊 Operações no Banco
mysql_list_tables- Listagem de todas as tabelasmysql_get_table_info- Estrutura detalhada de tabelasmysql_execute_query- Execução de queries SELECTmysql_analyze_schema- Análise completa do schemamysql_list_foreign_keys- Mapeamento de relacionamentos
🚀 Instalação e Configuração
1. Clone e Instale
git clone https://github.com/efeabio/mcp-mysql-server.git
cd mcp-mysql-server
npm install
npm run build2. Configure o Cursor
Adicione a seguinte configuração no seu arquivo ~/.cursor/mcp.json:
{
"mcpServers": {
"mysql": {
"command": "/caminho/para/seu/projeto/start-mcp.sh"
}
}
}⚠️ Importante: Substitua /caminho/para/seu/projeto/ pelo caminho real onde você clonou o repositório.
3. Configure o start-mcp.sh
Edite o arquivo start-mcp.sh e altere o caminho para corresponder à sua instalação:
#!/bin/bash
node /caminho/para/seu/projeto/dist/index.js4. Configuração da Conexão MySQL
O projeto oferece 3 formas de configurar a conexão MySQL:
🔧 Configuração Manual via Tool (Recomendado)
Use a tool mysql_configure_connection para configurar dinamicamente:
await mysql_configure_connection({
host: "localhost",
port: 3306,
user: "root",
password: "sua_senha",
database: "seu_banco"
});📁 Configuração via Arquivo
Crie um arquivo config.json na raiz do projeto:
{
"mysql": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "sua_senha",
"database": "seu_banco"
}
}🔍 Descoberta Automática
Use a tool mysql_auto_configure_connection para tentar descobrir configuração automaticamente.
🎯 Casos de Uso
🔍 Análise de Banco de Dados
Auditoria de Schema - Mapeamento completo de estruturas
Análise de Relacionamentos - Identificação de foreign keys
Documentação Automática - Geração de documentação de banco
🤖 Integração com Agentes de IA
Consultas Inteligentes - Execução de queries via linguagem natural
Exploração Interativa - Descoberta de dados sem conhecimento prévio
Análise Automática - Insights sobre estrutura e relacionamentos
🚀 Desenvolvimento e DevOps
Migração de Dados - Análise de estrutura antes de migrações
Debugging - Investigação de problemas de banco
Monitoramento - Verificação de integridade de dados
🔒 Segurança e Boas Práticas
✅ Operações Somente Leitura - Apenas SELECT é permitido
✅ Validação de Entrada - Schema validation com Zod
✅ Teste de Conexão - Verificação antes de aceitar configurações
✅ Configuração via Tools - Interface segura para configuração
✅ Isolamento de Conexões - Gerenciamento seguro de múltiplas conexões
🚀 Execução
# Modo stdio (padrão para MCP)
./start-mcp.sh
# Modo SSE para desenvolvimento
node dist/index.js sse📚 Exemplos de Uso
Configuração Inicial
// Configure conexão dinamicamente
await mysql_configure_connection({
host: "localhost",
port: 3306,
user: "root",
password: "sua_senha",
database: "test"
});
// Verifique se funcionou
await mysql_check_connection();
// Explore o banco
await mysql_list_tables();Análise de Schema
// Análise completa
await mysql_analyze_schema();
// Relacionamentos
await mysql_list_foreign_keys();
// Estrutura específica
await mysql_get_table_info("users");Consultas Personalizadas
// Execute queries SELECT
await mysql_execute_query("SELECT COUNT(*) as total FROM users");
// Análise de dados
await mysql_execute_query("SELECT table_name, table_rows FROM information_schema.tables");🏗️ Arquitetura
O projeto utiliza uma arquitetura modular com:
MCP SDK - Implementação do protocolo Model Context Protocol
MySQL2 - Driver nativo e performático para MySQL
TypeScript - Tipagem estática e desenvolvimento robusto
Zod - Validação de schemas e entrada de dados
Express - Suporte opcional para transporte SSE
🔧 Desenvolvimento
# Build do projeto
npm run build
# Execução em modo desenvolvimento
npm start
# Execução com SSE
npm start sse📄 Licença
MIT License - veja o arquivo LICENSE para detalhes.
🤝 Contribuição
Contribuições são bem-vindas! Este projeto demonstra implementação profissional de protocolos MCP e serve como referência para desenvolvimento de servidores MCP robustos.
Desenvolvido com ❤️ para demonstrar expertise em protocolos MCP, integração com MySQL e desenvolvimento de ferramentas para agentes de IA.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/efeabio/mcp-mysql-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server