Un servidor MCP (Model Context Protocol) para bases de datos MySQL con opciones de configuración flexibles.
- Soporte para conexión global (sin base de datos fija al inicio)
- Nuevos comandos MCP:
-
list_databases
: Lista todas las bases de datos disponibles -
create_database
: Crea una nueva base de datos -
use_database
: Cambia la base de datos activa en la sesión
-
- Ahora el password puede ser vacío (soporta root sin contraseña)
- Mejoras de seguridad y flexibilidad
Este es un servidor MCP que permite conectar y consultar bases de datos MySQL desde cualquier cliente compatible con el protocolo MCP (como Claude Desktop, VS Code con Copilot, etc.). Ofrece configuración flexible mediante argumentos de línea de comandos, variables de entorno o archivos .env.
- 🔍 Ejecución de consultas - Ejecuta cualquier consulta SQL personalizada
- 📋 Listado de tablas - Lista todas las tablas de la base de datos
- 🏗️ Estructura de tablas - Describe esquemas y estructuras de tablas
- 🌐 Configuración flexible - Variables de entorno, archivos .env o argumentos de línea de comandos
- 🗂️ Listado de bases de datos - Lista todas las bases de datos disponibles
- 🆕 Crear base de datos - Permite crear nuevas bases de datos
- 🔄 Cambiar base de datos activa - Cambia la base de datos sobre la que se opera
npx mysql-mcp-server-carlo --host localhost --port 3306 --user miusuario --password mipassword --database mibd
npm install -g mysql-mcp-server-carlo
mysql-mcp-server-carlo --host localhost --port 3306 --user miusuario --password mipassword --database mibd
mysql-mcp-server-carlo --host HOST --port PUERTO --user USUARIO --password PASSWORD --database BASE_DE_DATOS
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=miusuario
export MYSQL_PASSWORD=mipassword
export MYSQL_DATABASE=mibd
mysql-mcp-server-carlo
Crear un archivo .env
:
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=miusuario
MYSQL_PASSWORD=mipassword
MYSQL_DATABASE=mibd
Agregar a tu archivo claude_desktop_config.json
:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": [
"mysql-mcp-server-carlo",
"--host",
"localhost",
"--port",
"3306",
"--user",
"tu_usuario",
"--password",
"tu_password",
"--database",
"tu_base_de_datos"
]
}
}
}
Agregar a tu configuración MCP:
{
"mcpServers": {
"mysql-mcp": {
"command": "npx",
"args": [
"mysql-mcp-server-carlo",
"--host",
"localhost",
"--port",
"3306",
"--user",
"carlos",
"--password",
"1234",
"--database",
"test"
]
}
}
}
Usar configuración similar con el comando y argumentos.
Propósito: Ejecutar cualquier consulta SQL personalizada (SELECT, INSERT, UPDATE, DELETE, administración de usuarios, etc.) Parámetros:
-
sql
(string): La consulta SQL a ejecutar -
params
(array, opcional): Parámetros para consultas preparadas
Ejemplo de uso:
SELECT * FROM productos WHERE precio > 100
INSERT INTO productos (nombre, precio, stock) VALUES ('Nuevo Producto', 99.99, 50)
Propósito: Obtener una lista de todas las tablas disponibles en la base de datos Parámetros: Ninguno Uso: Ideal para explorar la estructura de la base de datos y conocer qué tablas están disponibles
Propósito: Obtener información detallada sobre la estructura de una tabla específica Parámetros:
-
table_name
(string): Nombre de la tabla a describir
Información que proporciona:
- Nombres de columnas
- Tipos de datos
- Claves primarias y foráneas
- Valores por defecto
- Restricciones NULL/NOT NULL
Propósito: Obtener una lista de todas las bases de datos disponibles en el servidor Parámetros: Ninguno Uso: Útil para conocer qué bases de datos están disponibles en el servidor
Propósito: Crear una nueva base de datos Parámetros:
-
database_name
(string): Nombre de la base de datos a crear
Ejemplo de uso:
CREATE DATABASE nueva_bd
Propósito: Cambiar la base de datos activa para la sesión Parámetros:
-
database_name
(string): Nombre de la base de datos a usar
Ejemplo de uso:
USE_BASE_DE_DATOS mibd
- ✅ Validación de entrada para nombres de tablas
- ✅ Consultas preparadas para prevenir inyección SQL
- ✅ Sanitización de parámetros
- ✅ Sin vulnerabilidades de inyección SQL
MIT
This is an MCP server that allows connecting and querying MySQL databases from any MCP-compatible client (like Claude Desktop, VS Code with Copilot, etc.). It offers flexible configuration through command-line arguments, environment variables, or .env files.
- 🔍 Query execution - Run any custom SQL query
- 📋 Table listing - List all database tables
- 🏗️ Table structure - Describe table schemas and structures
- 🌐 Flexible configuration - Environment variables, .env files, or command-line arguments
- 🗂️ Database listing - List all available databases
- 🆕 Create database - Allows creating new databases
- 🔄 Switch active database - Changes the database on which operations are performed
npx mysql-mcp-server-carlo --host localhost --port 3306 --user myuser --password mypass --database mydb
npm install -g mysql-mcp-server-carlo
mysql-mcp-server-carlo --host localhost --port 3306 --user myuser --password mypass --database mydb
mysql-mcp-server-carlo --host HOST --port PORT --user USER --password PASSWORD --database DATABASE
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=myuser
export MYSQL_PASSWORD=mypass
export MYSQL_DATABASE=mydb
mysql-mcp-server-carlo
Purpose: Execute any custom SQL query (SELECT, INSERT, UPDATE, DELETE) Parameters:
-
sql
(string): The SQL query to execute -
params
(array, optional): Parameters for prepared statements
Purpose: Get a list of all available tables in the database Parameters: None Usage: Ideal for exploring database structure
Purpose: Get detailed information about a specific table structure Parameters:
-
table_name
(string): Name of the table to describe
Purpose: Get a list of all available databases on the server Parameters: None Usage: Useful for knowing what databases are available on the server
Purpose: Create a new database Parameters:
-
database_name
(string): Name of the database to create
Example:
CREATE DATABASE new_db
Purpose: Change the active database for the session Parameters:
-
database_name
(string): Name of the database to use
Example:
USE_DATABASE mydb
- ✅ Input validation for table names
- ✅ Prepared statements to prevent SQL injection
- ✅ Parameter sanitization
- ✅ No SQL injection vulnerabilities
MIT