MySQL
Interactúa con y administra bases de datos MySQL. Requiere detalles de conexión configurados mediante variables de entorno.
Documentación
Servidor MCP MySQL
Un servidor MCP para interactuar con bases de datos MySQL.
Este servidor admite la ejecución de consultas de solo lectura (query) y consultas de escritura que finalmente se revierten (test_execute).
Configuración
Variables de Entorno
Agregue las siguientes variables de entorno a ~/.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.internales un nombre DNS especial para acceder a los servicios de la máquina host desde contenedores Docker. Use esta configuración al conectarse a un servidor MySQL que se ejecuta en su máquina host. Si se conecta a un servidor MySQL diferente, cambie al nombre de host apropiado.
Configuración de 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 el Servidor
docker run -i --rm --add-host=host.docker.internal:host-gateway --env-file ~/.mcp/.env ghcr.io/xiangma9712/mcp/mysql
Nota: Si está usando OrbStack,
host.docker.internalse admite automáticamente, por lo que la opción--add-hostse puede omitir. Aunque Docker Desktop también suele admitir esto automáticamente, se recomienda agregar la opción--add-hostpara una mayor confiabilidad.
Comandos Disponibles
1. Ejecutar Consulta de Solo Lectura
{
"type": "query",
"payload": {
"sql": "SELECT * FROM your_table"
}
}
Respuesta:
{
"success": true,
"data": [
{
"id": 1,
"name": "example"
}
]
}
2. Probar Ejecución de Consulta
{
"type": "test_execute",
"payload": {
"sql": "UPDATE your_table SET name = 'updated' WHERE id = 1"
}
}
Respuesta:
{
"success": true,
"data": "The UPDATE SQL query can be executed."
}
3. Listar Tablas
{
"type": "list_tables"
}
Respuesta:
{
"success": true,
"data": ["table1", "table2", "table3"]
}
4. Describir Tabla
{
"type": "describe_table",
"payload": {
"table": "your_table"
}
}
Respuesta:
{
"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": ""
}
]
}
Detalles de Implementación
- Implementado en TypeScript
- Usa el paquete mysql2
- Se ejecuta como un contenedor Docker
- Acepta comandos JSON a través de la entrada estándar
- Devuelve respuestas JSON a través de la salida estándar
- Usa
host.docker.internalpara conectarse al MySQL del host (compatible con OrbStack y Docker Desktop)
Consideraciones de Seguridad
- Usa variables de entorno para la gestión de información sensible
- La prevención de inyección SQL es responsabilidad del implementador
- Se requiere una configuración de red adecuada para uso en producción
- Se necesitan configuraciones de firewall apropiadas al conectarse a los servicios de la máquina host