MySQL Schema MCP Server
Un servidor para recuperar información del esquema de bases de datos MySQL utilizando el framework FastMCP.
Documentación
MySQL Schema MCP Server
Un servidor de Propuesta de Cambio de Metadatos (MCP) para recuperar información del esquema de bases de datos MySQL utilizando el framework FastMCP.
Características
- Obtener lista de bases de datos
- Obtener lista de tablas de bases de datos
- Obtener información del esquema de tabla (columnas)
- Obtener información de índices de tabla
- Obtener información de claves foráneas de tabla
Configuración
Configuración local con uv
- Clona este repositorio
- Instala uv si aún no lo tienes:
pip install uv - Crea un entorno virtual e instala las dependencias:
uv venv uv pip install -r requirements.txt - Crea un archivo
.envbasado en.env.examplecon los detalles de tu conexión MySQL:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Configuración local con pip
- Clona este repositorio
- Instala las dependencias:
pip install -r requirements.txt - Crea un archivo
.envbasado en.env.examplecon los detalles de tu conexión MySQL:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Configuración de Docker
Construcción y ejecución de la imagen Docker
-
Clona este repositorio
-
Construye la imagen Docker:
docker build -t mysql-mcp-server . -
Ejecuta el contenedor Docker con variables de entorno para la conexión MySQL:
docker run -p 8000:8000 \ -e MYSQL_HOST=host.docker.internal \ -e MYSQL_PORT=3306 \ -e MYSQL_USER=your_username \ -e MYSQL_PASSWORD=your_password \ -e MYSQL_DATABASE=information_schema \ mysql-mcp-serverNota:
host.docker.internalse utiliza para conectarse a la instancia MySQL que se ejecuta en tu máquina host desde dentro del contenedor Docker. -
Para Mac y Windows,
host.docker.internalse resuelve a la máquina host. Para Linux, es posible que necesites usar:docker run -p 8000:8000 \ --add-host=host.docker.internal:host-gateway \ -e MYSQL_HOST=host.docker.internal \ -e MYSQL_USER=your_username \ -e MYSQL_PASSWORD=your_password \ mysql-mcp-server
Uso
Uso local
Inicia el servidor:
python main.py
Uso de Docker
Ejecuta el contenedor Docker (como se muestra en la sección de configuración):
docker run -p 8000:8000 \
-e MYSQL_HOST=host.docker.internal \
-e MYSQL_USER=your_username \
-e MYSQL_PASSWORD=your_password \
mysql-mcp-server
También puedes crear un archivo .env y montarlo en el contenedor:
docker run -p 8000:8000 \
-v $(pwd)/.env:/app/.env \
mysql-mcp-server
Configuración JSON de MCP
Para usar este servidor MCP con clientes compatibles con MCP, deberás configurar el cliente con la configuración JSON adecuada. Aquí hay ejemplos tanto para configuraciones locales como de Docker:
Configuración MCP local
{
"mcpServers": {
"mysql-schema": {
"command": "python",
"args": [
"main.py"
],
"cwd": "/path/to/mcp-first",
"alwaysAllow": [
"databases",
"tables",
"schema",
"indexes",
"foreign_keys"
]
}
}
}
Configuración MCP de Docker
{
"mcpServers": {
"mysql-schema": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MYSQL_HOST=host.docker.internal",
"-e",
"MYSQL_USER=your_username",
"-e",
"MYSQL_PASSWORD=your_password",
"mysql-mcp-server"
],
"alwaysAllow": [
"databases",
"tables",
"schema",
"indexes",
"foreign_keys"
]
}
}
}
Herramientas disponibles
El servidor proporciona las siguientes herramientas:
databases: Lista todas las bases de datostables: Lista todas las tablas en una base de datosschema: Obtén el esquema (columnas, índices y claves foráneas) para una o más tablas.indexes: Obtén los índices para una tabla específicaforeign_keys: Obtén las claves foráneas para una tabla específica
Ejemplo
from fastmcp.client import Client
# Connect to the MCP server
client = Client("http://localhost:8000")
# List all databases
databases = client.databases()
# List tables in a specific database
tables = client.tables(database="your_database")
# Get schema for a specific table
schema = client.schema(tables=["your_table"], database="your_database")
# Get schema for multiple tables
schemas = client.schema(tables=["table1", "table2"], database="your_database")
# Get indexes for a specific table
indexes = client.indexes(table="your_table", database="your_database")
# Get foreign keys for a specific table
foreign_keys = client.foreign_keys(table="your_table", database="your_database")