MySQL Database Access
Fornece acesso somente leitura a bancos de dados MySQL.
Documentação
Servidor MCP de Acesso ao Banco de Dados MySQL
Este servidor MCP fornece acesso somente leitura a bancos de dados MySQL. Ele permite que você:
- Liste bancos de dados disponíveis
- Liste tabelas em um banco de dados
- Descreva esquemas de tabelas
- Execute consultas SQL somente leitura
Recursos de Segurança
- Acesso somente leitura: Apenas instruções SELECT, SHOW, DESCRIBE e EXPLAIN são permitidas
- Validação de consultas: Impede injeção de SQL e bloqueia qualquer tentativa de modificação de dados
- Tempo limite de consulta: Impede que consultas de longa duração consumam recursos
- Limite de linhas: Impede retorno excessivo de dados
Instalação
1. Instale usando um dos seguintes métodos:
Instalar a partir do NPM
# Install globally
npm install -g mysql-mcp-server
# Or install locally in your project
npm install mysql-mcp-server
Compilar a partir do código-fonte
# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
# Install dependencies and build
npm install
npm run build
Instalar via Smithery
Para instalar o Servidor MCP de Acesso ao Banco de Dados MySQL para Claude AI automaticamente via Smithery:
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
2. Configure as variáveis de ambiente
O servidor requer as seguintes variáveis de ambiente:
MYSQL_HOST: Hostname do servidor de banco de dadosMYSQL_PORT: Porta do servidor de banco de dados (padrão: 3306)MYSQL_USER: Nome de usuário do banco de dadosMYSQL_PASSWORD: Senha do banco de dados (opcional, mas recomendada para conexões seguras)MYSQL_DATABASE: Nome padrão do banco de dados (opcional)
3. Adicione às configurações do MCP
Adicione a seguinte configuração ao seu arquivo de configurações do MCP:
Se você instalou via npm (Opção 1):
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
Se você compilou a partir do código-fonte (Opção 2):
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/path/to/mysql-mcp-server/build/index.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
Ferramentas Disponíveis
list_databases
Lista todos os bancos de dados acessíveis no servidor MySQL.
Parâmetros: Nenhum
Exemplo:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
list_tables
Lista todas as tabelas em um banco de dados especificado.
Parâmetros:
database(opcional): Nome do banco de dados (usa o padrão se não for especificado)
Exemplo:
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
describe_table
Mostra o esquema de uma tabela específica.
Parâmetros:
database(opcional): Nome do banco de dados (usa o padrão se não for especificado)table(obrigatório): Nome da tabela
Exemplo:
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
execute_query
Executa uma consulta SQL somente leitura.
Parâmetros:
query(obrigatório): Consulta SQL (apenas instruções SELECT, SHOW, DESCRIBE e EXPLAIN são permitidas)database(opcional): Nome do banco de dados (usa o padrão se não for especificado)
Exemplo:
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
Configuração Avançada do Pool de Conexões
Para mais controle sobre o comportamento do pool de conexões MySQL, você pode configurar parâmetros adicionais:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
Essas opções avançadas permitem que você:
MYSQL_CONNECTION_LIMIT: Controle o número máximo de conexões no pool (padrão: 10)MYSQL_QUEUE_LIMIT: Defina o número máximo de solicitações de conexão na fila (padrão: 0, ilimitado)MYSQL_CONNECT_TIMEOUT: Ajuste o tempo limite de conexão em milissegundos (padrão: 10000)MYSQL_IDLE_TIMEOUT: Configure por quanto tempo uma conexão pode ficar ociosa antes de ser liberada (em milissegundos)MYSQL_MAX_IDLE: Defina o número máximo de conexões ociosas a serem mantidas no pool
Testes
O servidor inclui scripts de teste para verificar a funcionalidade com sua configuração MySQL:
1. Configurar Banco de Dados de Teste
Este script cria um banco de dados de teste, tabela e dados de exemplo:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run the setup script
npm run test:setup
2. Testar Ferramentas MCP
Este script testa cada uma das ferramentas MCP contra o banco de dados de teste:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db
# Run the tools test script
npm run test:tools
3. Executar Todos os Testes
Para executar tanto a configuração quanto os testes de ferramentas:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run all tests
npm test
Solução de Problemas
Se você encontrar problemas:
- Verifique os logs do servidor para mensagens de erro
- Verifique suas credenciais MySQL e detalhes de conexão
- Garanta que seu usuário MySQL tenha as permissões apropriadas
- Verifique se sua consulta é somente leitura e está formatada corretamente
Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.