MySQL MCP Server
Fornece acesso direto a agentes de IA para consultar, pesquisar e analisar bancos de dados MySQL.
Documentação
MySQL MCP Server
Um servidor Model Context Protocol (MCP) que fornece a agentes de IA acesso direto a bancos de dados MySQL. Este servidor permite que modelos de IA consultem, pesquisem e analisem o conteúdo de bancos de dados MySQL por meio de um conjunto de ferramentas bem definidas.
Recursos
- Exploração de schemas - Lista todos os schemas/bancos de dados com paginação
- Descoberta de tabelas - Navega pelas tabelas em qualquer schema com metadados detalhados
- Inspeção de estrutura - Obtém definições de colunas, tipos e índices
- Consultas seguras - Executa consultas SELECT com limitação automática de resultados
- Busca em texto completo - Pesquisa valores em todas as colunas de texto de uma tabela
- Recuperação de DDL - Obtém declarações CREATE TABLE para qualquer tabela
Início Rápido com Docker
Executando com Docker (Recomendado)
A maneira mais fácil de executar o servidor MySQL MCP é usando o Docker:
# Pull the latest image (stdio mode by default)
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:latest
# Or pull a specific mode
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:http
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Exemplos de Uso com Docker
Modo Stdio (para Claude Desktop)
# Connect to MySQL on host machine
docker run -i --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
-e MYSQL_DATABASE=your_database \
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
Modo servidor HTTP
# Run HTTP server on port 8080
docker run -d \
--name mysql-mcp-http \
--network host \
-p 8080:8080 \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
ghcr.io/sagenkoder/go-mysql-mcp-server:http
Modo interativo (para testes)
# Run in interactive mode
docker run -it --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Conectando ao MySQL no Docker
Se o seu MySQL também estiver rodando no Docker, use a rede do Docker:
# Create a network
docker network create myapp
# Run MySQL (example)
docker run -d \
--name mysql \
--network myapp \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=mydb \
mysql:8
# Run MCP server
docker run -i --rm \
--network myapp \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=rootpass \
-e MYSQL_DATABASE=mydb \
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
Configuração do Claude Desktop
Usando Docker com Claude Desktop
Adicione isto ao seu arquivo de configuração do Claude Desktop:
{
"mcpServers": {
"mysql": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--network", "host",
"-e", "MYSQL_HOST=localhost",
"-e", "MYSQL_USER=your_user",
"-e", "MYSQL_PASSWORD=your_password",
"-e", "MYSQL_DATABASE=your_database",
"ghcr.io/sagenkoder/go-mysql-mcp-server:stdio"
]
}
}
}
Usando o Binário com Claude Desktop
Se preferir usar o binário diretamente:
{
"mcpServers": {
"mysql": {
"command": "/path/to/mysql-mcp-stdio",
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
Compilando a partir do Código-Fonte
Pré-requisitos
- Go 1.23 ou posterior
- Docker (opcional, para criar imagens Docker)
Etapas de Compilação
# Clone the repository
git clone https://github.com/sagenkoder/go-mysql-mcp-server.git
cd go-mysql-mcp-server
# Build all binaries
./build.sh
# Build Docker images
./build.sh docker
Isso criará:
- Binários:
mysql-mcp-stdio- Para comunicação MCP baseada em stdiomysql-mcp-http- Modo servidor HTTPmysql-mcp-interactive- Modo CLI interativo para testes
- Imagens Docker:
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio(também marcada comomysql-mcp:latest)ghcr.io/sagenkoder/go-mysql-mcp-server:httpghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Configuração
O servidor se conecta ao MySQL usando estas variáveis de ambiente:
MYSQL_HOST- Hostname do servidor MySQL (padrão: localhost)MYSQL_PORT- Porta do servidor MySQL (padrão: 3306)MYSQL_USER- Usuário do MySQL (padrão: root)MYSQL_PASSWORD- Senha do MySQL (obrigatória)MYSQL_DATABASE- Banco de dados padrão (opcional)
Ferramentas Disponíveis
list_schemas
Lista todos os schemas/bancos de dados disponíveis no servidor MySQL.
Parâmetros:
page(opcional): Número da página para paginação (padrão: 1)page_size(opcional): Número de itens por página (padrão: 20, máximo: 100)
list_tables
Lista todas as tabelas em um schema específico com metadados.
Parâmetros:
schema(obrigatório): O nome do schema/banco de dadospage(opcional): Número da página para paginaçãopage_size(opcional): Número de itens por página
get_table_structure
Obtém informações detalhadas de colunas e índices para uma tabela.
Parâmetros:
schema(obrigatório): O nome do schema/banco de dadostable(obrigatório): O nome da tabela
get_table_create
Obtém a declaração CREATE TABLE para uma tabela específica.
Parâmetros:
schema(obrigatório): O nome do schema/banco de dadostable(obrigatório): O nome da tabela
execute_query
Executa uma consulta SQL (apenas SELECT, SHOW, DESCRIBE, EXPLAIN).
Parâmetros:
query(obrigatório): A consulta SQL a ser executadalimit(opcional): Número máximo de linhas a retornar (padrão: 100)
search_table
Pesquisa um valor em todas as colunas de texto de uma tabela.
Parâmetros:
schema(obrigatório): O nome do schema/banco de dadostable(obrigatório): O nome da tabelasearch_term(obrigatório): O termo a ser pesquisadolimit(opcional): Número máximo de linhas a retornar (padrão: 100)
Testando a Conexão
Use o modo interativo para testar sua conexão:
# With Docker
docker run -it --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=test \
ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
# With binary
MYSQL_USER=test MYSQL_PASSWORD=test ./mysql-mcp-interactive
Considerações de Segurança
- Apenas consultas SELECT, SHOW, DESCRIBE e EXPLAIN são permitidas
- Todas as consultas são limitadas automaticamente para evitar grandes conjuntos de resultados
- As buscas em tabelas verificam apenas colunas baseadas em texto
- Os detalhes de conexão devem ser armazenados com segurança como variáveis de ambiente
- A imagem Docker é executada como um usuário não root por segurança
Solução de Problemas
Problemas de Conexão
- Certifique-se de que o MySQL está em execução e acessível
- Verifique se o usuário do MySQL tem as permissões adequadas
- Ao usar Docker, verifique a conectividade de rede (
--network hostpara MySQL local) - Teste primeiro com o cliente CLI mysql:
mysql -h localhost -u user -p
Problemas de Rede no Docker
- Use
--network hostpara conectar ao MySQL na máquina host - Para MySQL no Docker, crie uma rede compartilhada e use nomes de contêiner como hostnames
- Verifique as regras do firewall ao conectar a um MySQL remoto
Licença
Licença MIT - consulte o arquivo LICENSE para obter detalhes.