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).

MySQL Server MCP server

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-host pode 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.internal para 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