MySQL
Interaja e gerencie bancos de dados MySQL. Requer detalhes de conexão configurados por meio de variáveis de ambiente.
Documentação
Servidor MCP MySQL
Um servidor MCP para interagir com bancos de dados MySQL.
Este servidor suporta a execução de consultas somente leitura (query) e consultas de escrita que são, em última análise, revertidas (test_execute).
Configuração
Variáveis de Ambiente
Adicione as seguintes variáveis de ambiente ao ~/.mcp/.env:
MYSQL_HOST=host.docker.internal # Hostname to access host services from Docker container
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
Nota:
host.docker.internalé um nome DNS especial para acessar serviços da máquina host a partir de contêineres Docker. Use esta configuração ao conectar a um servidor MySQL em execução na sua máquina host. Se estiver conectando a um servidor MySQL diferente, altere para o nome de host apropriado.
Configuração do mcp.json
{
"mcpServers": {
"mysql": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--add-host=host.docker.internal:host-gateway",
"--env-file",
"/Users/username/.mcp/.env",
"ghcr.io/xiangma9712/mcp/mysql"
]
}
}
}
Uso
Iniciando o Servidor
docker run -i --rm --add-host=host.docker.internal:host-gateway --env-file ~/.mcp/.env ghcr.io/xiangma9712/mcp/mysql
Nota: Se você estiver usando OrbStack,
host.docker.internalé suportado automaticamente, então a opção--add-hostpode ser omitida. Embora o Docker Desktop também normalmente suporte isso automaticamente, adicionar a opção--add-hosté recomendado para maior confiabilidade.
Comandos Disponíveis
1. Executar Consulta Somente Leitura
{
"type": "query",
"payload": {
"sql": "SELECT * FROM your_table"
}
}
Resposta:
{
"success": true,
"data": [
{
"id": 1,
"name": "example"
}
]
}
2. Testar Execução de Consulta
{
"type": "test_execute",
"payload": {
"sql": "UPDATE your_table SET name = 'updated' WHERE id = 1"
}
}
Resposta:
{
"success": true,
"data": "The UPDATE SQL query can be executed."
}
3. Listar Tabelas
{
"type": "list_tables"
}
Resposta:
{
"success": true,
"data": ["table1", "table2", "table3"]
}
4. Descrever Tabela
{
"type": "describe_table",
"payload": {
"table": "your_table"
}
}
Resposta:
{
"success": true,
"data": [
{
"Field": "id",
"Type": "int(11)",
"Null": "NO",
"Key": "PRI",
"Default": null,
"Extra": ""
},
{
"Field": "name",
"Type": "varchar(255)",
"Null": "YES",
"Key": "",
"Default": null,
"Extra": ""
}
]
}
Detalhes de Implementação
- Implementado em TypeScript
- Usa o pacote mysql2
- Executa como um contêiner Docker
- Aceita comandos JSON por meio da entrada padrão
- Retorna respostas JSON por meio da saída padrão
- Usa
host.docker.internalpara conectar ao MySQL do host (compatível com OrbStack e Docker Desktop)
Considerações de Segurança
- Usa variáveis de ambiente para gerenciamento de informações sensíveis
- A prevenção de injeção de SQL é responsabilidade do implementador
- Configuração de rede adequada é necessária para uso em produção
- Configurações de firewall apropriadas são necessárias ao conectar a serviços da máquina host