MySQL MCP Server
Proporciona a los agentes de IA acceso directo para consultar, buscar y analizar bases de datos MySQL.
Documentación
Servidor MCP de MySQL
Un servidor de Model Context Protocol (MCP) que proporciona a los agentes de IA acceso directo a bases de datos MySQL. Este servidor permite a los modelos de IA consultar, buscar y analizar el contenido de bases de datos MySQL a través de un conjunto de herramientas bien definidas.
Características
- Exploración de esquemas - Lista todos los esquemas/bases de datos con paginación
- Descubrimiento de tablas - Navega por tablas en cualquier esquema con metadatos detallados
- Inspección de estructura - Obtén definiciones de columnas, tipos e índices
- Consultas seguras - Ejecuta consultas SELECT con limitación automática de resultados
- Búsqueda de texto completo - Busca valores en todas las columnas de texto de una tabla
- Recuperación de DDL - Obtén sentencias CREATE TABLE para cualquier tabla
Inicio rápido con Docker
Ejecutar con Docker (Recomendado)
La forma más fácil de ejecutar el servidor MCP de MySQL es usando Docker:
# Pull the latest image (stdio mode by default)
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:latest
# Or pull a specific mode
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:http
docker pull ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Ejemplos de uso con Docker
Modo Stdio (para Claude Desktop)
# Connect to MySQL on host machine
docker run -i --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
-e MYSQL_DATABASE=your_database \
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
Modo servidor HTTP
# Run HTTP server on port 8080
docker run -d \
--name mysql-mcp-http \
--network host \
-p 8080:8080 \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
ghcr.io/sagenkoder/go-mysql-mcp-server:http
Modo interactivo (para pruebas)
# Run in interactive mode
docker run -it --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=your_user \
-e MYSQL_PASSWORD=your_password \
ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Conexión a MySQL en Docker
Si tu MySQL también se ejecuta en Docker, usa la red de Docker:
# Create a network
docker network create myapp
# Run MySQL (example)
docker run -d \
--name mysql \
--network myapp \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=mydb \
mysql:8
# Run MCP server
docker run -i --rm \
--network myapp \
-e MYSQL_HOST=mysql \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=rootpass \
-e MYSQL_DATABASE=mydb \
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio
Configuración de Claude Desktop
Usar Docker con Claude Desktop
Añade esto a tu archivo de configuración de Claude Desktop:
{
"mcpServers": {
"mysql": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--network", "host",
"-e", "MYSQL_HOST=localhost",
"-e", "MYSQL_USER=your_user",
"-e", "MYSQL_PASSWORD=your_password",
"-e", "MYSQL_DATABASE=your_database",
"ghcr.io/sagenkoder/go-mysql-mcp-server:stdio"
]
}
}
}
Usar el binario con Claude Desktop
Si prefieres usar el binario directamente:
{
"mcpServers": {
"mysql": {
"command": "/path/to/mysql-mcp-stdio",
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
Compilar desde el código fuente
Requisitos previos
- Go 1.23 o posterior
- Docker (opcional, para compilar imágenes Docker)
Pasos de compilación
# Clone the repository
git clone https://github.com/sagenkoder/go-mysql-mcp-server.git
cd go-mysql-mcp-server
# Build all binaries
./build.sh
# Build Docker images
./build.sh docker
Esto creará:
- Binarios:
mysql-mcp-stdio- Para comunicación MCP basada en stdiomysql-mcp-http- Modo servidor HTTPmysql-mcp-interactive- Modo CLI interactivo para pruebas
- Imágenes Docker:
ghcr.io/sagenkoder/go-mysql-mcp-server:stdio(también etiquetada comomysql-mcp:latest)ghcr.io/sagenkoder/go-mysql-mcp-server:httpghcr.io/sagenkoder/go-mysql-mcp-server:interactive
Configuración
El servidor se conecta a MySQL usando estas variables de entorno:
MYSQL_HOST- Hostname del servidor MySQL (predeterminado: localhost)MYSQL_PORT- Puerto del servidor MySQL (predeterminado: 3306)MYSQL_USER- Usuario de MySQL (predeterminado: root)MYSQL_PASSWORD- Contraseña de MySQL (requerida)MYSQL_DATABASE- Base de datos predeterminada (opcional)
Herramientas disponibles
list_schemas
Lista todos los esquemas/bases de datos disponibles en el servidor MySQL.
Parámetros:
page(opcional): Número de página para paginación (predeterminado: 1)page_size(opcional): Número de elementos por página (predeterminado: 20, máximo: 100)
list_tables
Lista todas las tablas en un esquema específico con metadatos.
Parámetros:
schema(requerido): El nombre del esquema/base de datospage(opcional): Número de página para paginaciónpage_size(opcional): Número de elementos por página
get_table_structure
Obtén información detallada de columnas e índices para una tabla.
Parámetros:
schema(requerido): El nombre del esquema/base de datostable(requerido): El nombre de la tabla
get_table_create
Obtén la sentencia CREATE TABLE para una tabla específica.
Parámetros:
schema(requerido): El nombre del esquema/base de datostable(requerido): El nombre de la tabla
execute_query
Ejecuta una consulta SQL (solo SELECT, SHOW, DESCRIBE, EXPLAIN).
Parámetros:
query(requerido): La consulta SQL a ejecutarlimit(opcional): Máximo de filas a devolver (predeterminado: 100)
search_table
Busca un valor en todas las columnas de texto de una tabla.
Parámetros:
schema(requerido): El nombre del esquema/base de datostable(requerido): El nombre de la tablasearch_term(requerido): El término a buscarlimit(opcional): Máximo de filas a devolver (predeterminado: 100)
Probar la conexión
Usa el modo interactivo para probar tu conexión:
# With Docker
docker run -it --rm \
--network host \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=test \
ghcr.io/sagenkoder/go-mysql-mcp-server:interactive
# With binary
MYSQL_USER=test MYSQL_PASSWORD=test ./mysql-mcp-interactive
Consideraciones de seguridad
- Solo se permiten consultas SELECT, SHOW, DESCRIBE y EXPLAIN
- Todas las consultas se limitan automáticamente para evitar conjuntos de resultados grandes
- Las búsquedas en tablas solo escanean columnas basadas en texto
- Los detalles de conexión deben almacenarse de forma segura como variables de entorno
- La imagen Docker se ejecuta como un usuario no root por seguridad
Solución de problemas
Problemas de conexión
- Asegúrate de que MySQL esté ejecutándose y sea accesible
- Verifica que el usuario de MySQL tenga los permisos adecuados
- Al usar Docker, verifica la conectividad de red (
--network hostpara MySQL local) - Prueba primero con el cliente CLI de mysql:
mysql -h localhost -u user -p
Problemas de red con Docker
- Usa
--network hostpara conectarte a MySQL en la máquina host - Para MySQL en Docker, crea una red compartida y usa nombres de contenedor como hostnames
- Verifica las reglas del firewall si te conectas a MySQL remoto
Licencia
Licencia MIT - consulta el archivo LICENSE para más detalles.