Servidor MCP de acceso a bases de datos MySQL
Este servidor MCP proporciona acceso de solo lectura a bases de datos MySQL. Permite:
Lista de 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 las instrucciones SELECT, SHOW, DESCRIBE y EXPLAIN
Validación de consultas : evita la inyección de SQL y bloquea cualquier intento de modificación de datos
Tiempo de espera de consulta : evita que las consultas de larga duración consuman recursos
Límite de filas : evita la devolución excesiva de datos
Related MCP server: MCP Server for MySQL
Instalación
1. Instale utilizando 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-serverConstruir desde la 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 buildInstalar a través de Smithery
Para instalar MySQL Database Access MCP Server para Claude AI automáticamente a través de Smithery :
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude2. Configurar 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 lo 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 lo construyó desde la 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
lista_de_bases_de_datos
Enumera todas las bases de datos accesibles en el servidor MySQL.
Parámetros : Ninguno
Ejemplo :
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}listas_de_tablas
Enumera todas las tablas de una base de datos especificada.
Parámetros :
database(opcional): nombre de la base de datos (usa el predeterminado si no se especifica)
Ejemplo :
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}describe_tabla
Muestra el esquema de una tabla específica.
Parámetros :
database(opcional): nombre de la base de datos (usa el predeterminado si no se especifica)table(obligatorio): Nombre de la tabla
Ejemplo :
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}ejecutar_consulta
Ejecuta una consulta SQL de solo lectura.
Parámetros :
query(obligatoria): consulta SQL (solo se permiten las sentencias SELECT, SHOW, DESCRIBE y EXPLAIN)database(opcional): nombre de la base de datos (usa el predeterminado 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 obtener más 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: controla el número máximo de conexiones en el grupo (valor predeterminado: 10)MYSQL_QUEUE_LIMIT: Establece el número máximo de solicitudes de conexión para poner en cola (valor predeterminado: 0, ilimitado)MYSQL_CONNECT_TIMEOUT: ajusta el tiempo de espera de la conexión en milisegundos (valor predeterminado: 10000)MYSQL_IDLE_TIMEOUT: configura cuánto tiempo puede estar inactiva una conexión antes de liberarse (en milisegundos)MYSQL_MAX_IDLE: Establece el número máximo de conexiones inactivas que se mantendrán 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:setup2. 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:tools3. Ejecutar todas las pruebas
Para ejecutar pruebas de configuración y 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 testSolución de problemas
Si encuentra problemas:
Verifique los registros del servidor para ver si hay mensajes de error
Verifique sus credenciales de MySQL y los detalles de conexión
Asegúrese de que su usuario MySQL tenga los permisos adecuados
Compruebe que su consulta sea de solo lectura y tenga el formato correcto
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.