MySQL Database Access
Proporciona acceso de solo lectura a bases de datos MySQL.
Documentación
Servidor MCP de Acceso a Base de Datos MySQL
Este servidor MCP proporciona acceso de solo lectura a bases de datos MySQL. Le permite:
- Listar bases de datos disponibles
- Listar tablas en una base de datos
- Describir esquemas de tablas
- Ejecutar consultas SQL de solo lectura
Características de Seguridad
- Acceso de solo lectura: Solo se permiten sentencias SELECT, SHOW, DESCRIBE y EXPLAIN; se rechazan las formas de
SELECT INTOyLOAD_FILEcon capacidad de archivos - Validación de consultas: Previene la inyección SQL y bloquea cualquier intento de modificación de datos
- Tiempo de espera de consultas: Evita que consultas de larga duración consuman recursos
- Límite de filas: Evita la devolución excesiva de datos
- Números grandes exactos: Los valores BIGINT y DECIMAL se devuelven como cadenas para evitar pérdida de precisión
Instalación
1. Instale usando uno de estos métodos:
Instalar desde NPM
# Install globally
npm install -g mysql-mcp-server
# Or install locally in your project
npm install mysql-mcp-server
Compilar desde el Código Fuente
# 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
2. Configure las variables de entorno
El servidor requiere las siguientes variables de entorno:
MYSQL_HOST: Nombre de host del servidor de base de datosMYSQL_PORT: Puerto del servidor de base de datos (predeterminado: 3306)MYSQL_USER: Nombre de usuario de la base de datosMYSQL_PASSWORD: Contraseña de la base de datos (opcional, pero recomendada para conexiones seguras)MYSQL_DATABASE: Nombre de la base de datos predeterminada (opcional)
3. Agregar a la configuración de MCP
Agregue la siguiente configuración a su archivo de configuración de MCP:
Si instaló mediante npm (Opción 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": []
}
}
}
Si compiló desde el código fuente (Opción 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": []
}
}
}
Herramientas Disponibles
list_databases
Lista todas las bases de datos accesibles en el servidor MySQL.
Parámetros: Ninguno
Ejemplo:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
list_tables
Lista todas las tablas en una base de datos especificada.
Parámetros:
database(opcional): Nombre de la base de datos (usa la predeterminada si no se especifica)
Ejemplo:
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
describe_table
Muestra el esquema de una tabla específica.
Parámetros:
database(opcional): Nombre de la base de datos (usa la predeterminada si no se especifica)table(requerido): Nombre de la tabla
Ejemplo:
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
execute_query
Ejecuta una consulta SQL de solo lectura.
Parámetros:
query(requerido): Consulta SQL (solo se permiten sentencias SELECT, SHOW, DESCRIBE y EXPLAIN)database(opcional): Nombre de la base de datos (usa la predeterminada si no se especifica)
Ejemplo:
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
Configuración Avanzada del Grupo de Conexiones
Para un mayor control sobre el comportamiento del grupo de conexiones MySQL, puede configurar parámetros adicionales:
{
"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": []
}
}
}
Estas opciones avanzadas le permiten:
MYSQL_CONNECTION_LIMIT: Controlar el número máximo de conexiones en el grupo (predeterminado: 10)MYSQL_QUEUE_LIMIT: Establecer el número máximo de solicitudes de conexión en cola (predeterminado: 0, ilimitado)MYSQL_CONNECT_TIMEOUT: Ajustar el tiempo de espera de conexión en milisegundos (predeterminado: 10000)MYSQL_IDLE_TIMEOUT: Configurar cuánto tiempo puede estar inactiva una conexión antes de ser liberada (en milisegundos)MYSQL_MAX_IDLE: Establecer el número máximo de conexiones inactivas para mantener en el grupo
Pruebas
El servidor incluye scripts de prueba para verificar la funcionalidad con su configuración de MySQL:
1. Configurar la Base de Datos de Prueba
Este script crea una base de datos de prueba, una tabla y datos de muestra:
# 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. Probar las Herramientas MCP
Este script prueba cada una de las herramientas MCP contra la base de datos de prueba:
# 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. Ejecutar Todas las Pruebas
Para ejecutar tanto la configuración como las pruebas de herramientas:
# 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
Solución de Problemas
Si encuentra problemas:
- Revise los registros del servidor para ver mensajes de error
- Verifique sus credenciales de MySQL y los detalles de conexión
- Asegúrese de que su usuario de MySQL tenga los permisos adecuados
- Compruebe que su consulta sea de solo lectura y esté correctamente formateada
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.