MySQL MCP Server

Proporciona acceso a una base de datos MySQL, permitiendo a los agentes ejecutar consultas SQL.

Documentación

MySQL MCP Server

Este es un servidor de Model Context Protocol (MCP) que proporciona acceso a una base de datos MySQL. Permite al agente ejecutar consultas SQL contra una base de datos MySQL.

Características

  • Ejecutar consultas SQL contra una base de datos MySQL:
    • Leer datos (sentencias SELECT)
    • Crear tablas (sentencias CREATE TABLE)
    • Insertar datos (sentencias INSERT INTO)
    • Actualizar datos (sentencias UPDATE)
    • Eliminar datos (sentencias DELETE FROM)
  • Devuelve los resultados de las consultas en formato JSON
  • Configuración de conexión a la base de datos configurable
  • Registro de transacciones con IDs únicos

Requisitos previos

  • Node.js (v14 o superior)
  • Servidor MySQL
  • MCP SDK

Instalación

  1. Clona o descarga este repositorio
  2. Instala las dependencias:
cd mysql-mcp-server
npm install
  1. Compila el servidor:
npm run build

Configuración

El servidor MySQL MCP utiliza las siguientes variables de entorno para su configuración:

  • MYSQL_HOST: Nombre de host del servidor MySQL (predeterminado: 'localhost')
  • MYSQL_PORT: Puerto del servidor MySQL (predeterminado: 3306)
  • MYSQL_USER: Nombre de usuario de MySQL (predeterminado: 'mcp101')
  • MYSQL_PASSWORD: Contraseña de MySQL (predeterminada: '123qwe')
  • MYSQL_DATABASE: Nombre de la base de datos MySQL (predeterminado: 'mcpdb')

Configuración de la base de datos

  1. Crea una base de datos MySQL:
CREATE DATABASE mcpdb;
  1. Crea un usuario de MySQL con acceso a la base de datos:
CREATE USER 'mcp101'@'localhost' IDENTIFIED BY '123qwe';
GRANT ALL PRIVILEGES ON mcpdb.* TO 'mcp101'@'localhost';
FLUSH PRIVILEGES;
  1. Crea una tabla de prueba con datos de ejemplo:
USE mcpdb;
CREATE TABLE test_users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO test_users (name, email) VALUES
  ('John Doe', 'john@example.com'),
  ('Jane Smith', 'jane@example.com'),
  ('Bob Johnson', 'bob@example.com');

Configuración de MCP

Añade el servidor MySQL MCP a tu archivo de configuración de MCP:

VSCode (Claude Extension)

Archivo: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Cambia los argumentos según tu configuración de MySQL

{
  "mcpServers": {
    "mysql-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "node",
      "args": [
        "/path/to/mysql-mcp-server/build/index.js"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp101",
        "MYSQL_PASSWORD": "123qwe",
        "MYSQL_DATABASE": "mcpdb"
      },
      "transportType": "stdio"
    }
  }
}

Claude Desktop App

Archivo: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mysql-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "node",
      "args": [
        "/path/to/mysql-mcp-server/build/index.js"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp101",
        "MYSQL_PASSWORD": "123qwe",
        "MYSQL_DATABASE": "mcpdb"
      },
      "transportType": "stdio"
    }
  }
}

Uso

Una vez configurado, puedes usar el servidor MySQL MCP en tus conversaciones con Claude. Por ejemplo:

"¿Puedes mostrarme todos los usuarios de la tabla test_users?"

Claude utilizará la herramienta run_sql_query para ejecutar:

SELECT * FROM test_users

Herramientas disponibles

run_sql_query

Ejecuta una consulta SQL de solo lectura (únicamente sentencias SELECT) contra la base de datos MySQL.

Parámetros:

  • query: La consulta SQL SELECT a ejecutar.

Ejemplo:

{
  "query": "SELECT * FROM test_users"
}

create_table

Crea una nueva tabla en la base de datos MySQL.

Parámetros:

  • query: La consulta SQL CREATE TABLE a ejecutar.

Ejemplo:

{
  "query": "CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10,2))"
}

insert_data

Inserta datos en una tabla de la base de datos MySQL.

Parámetros:

  • query: La consulta SQL INSERT INTO a ejecutar.

Ejemplo:

{
  "query": "INSERT INTO products (name, price) VALUES ('Laptop', 999.99), ('Smartphone', 499.99)"
}

update_data

Actualiza datos en una tabla de la base de datos MySQL.

Parámetros:

  • query: La consulta SQL UPDATE a ejecutar.

Ejemplo:

{
  "query": "UPDATE products SET price = 899.99 WHERE name = 'Laptop'"
}

delete_data

Elimina datos de una tabla en la base de datos MySQL.

Parámetros:

  • query: La consulta SQL DELETE FROM a ejecutar.

Ejemplo:

{
  "query": "DELETE FROM products WHERE name = 'Smartphone'"
}

Consideraciones de seguridad

  • Utiliza un usuario de MySQL dedicado con privilegios adecuados para el servidor MCP
  • Considera utilizar privilegios de solo lectura si solo necesitas consultar datos
  • Almacena información sensible, como las credenciales de la base de datos, de forma segura
  • Todas las operaciones se registran con IDs de transacción únicos para auditoría