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 stdio
    • mysql-mcp-http - Modo servidor HTTP
    • mysql-mcp-interactive - Modo CLI interativo para testes
  • Imagens Docker:
    • ghcr.io/sagenkoder/go-mysql-mcp-server:stdio (também marcada como mysql-mcp:latest)
    • ghcr.io/sagenkoder/go-mysql-mcp-server:http
    • ghcr.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 dados
  • page (opcional): Número da página para paginação
  • page_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 dados
  • table (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 dados
  • table (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 executada
  • limit (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 dados
  • table (obrigatório): O nome da tabela
  • search_term (obrigatório): O termo a ser pesquisado
  • limit (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 host para MySQL local)
  • Teste primeiro com o cliente CLI mysql: mysql -h localhost -u user -p

Problemas de Rede no Docker

  • Use --network host para 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.