MySQL Database Access

Fornece acesso somente leitura a bancos de dados MySQL.

Documentação

mysql-mcp-server MCP server

npm version smithery badge

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 dados
  • MYSQL_PORT: Porta do servidor de banco de dados (padrão: 3306)
  • MYSQL_USER: Nome de usuário do banco de dados
  • MYSQL_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:

  1. Verifique os logs do servidor para mensagens de erro
  2. Verifique suas credenciais MySQL e detalhes de conexão
  3. Garanta que seu usuário MySQL tenha as permissões apropriadas
  4. 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.