MySQL Server Pro

Un servidor MySQL con operaciones CRUD, análisis de anomalías en bases de datos y soporte para SSE y STDIO.

Documentación

简体中文 English MseeP.ai Security Assessment Badge MCPHub

mcp_mysql_server_pro

Introducción

mcp_mysql_server_pro no solo se trata de operaciones CRUD de MySQL, sino que también incluye capacidades de análisis de anomalías en bases de datos y facilita a los desarrolladores la extensión con herramientas personalizadas.

  • Soporta todos los modos de transferencia del Model Context Protocol (MCP) (STDIO, SSE, Streamable Http)
  • Soporta OAuth2.0
  • Soporta la ejecución de múltiples sentencias SQL, separadas por ";"
  • Soporta la consulta de nombres de tablas y campos basados en comentarios de tablas
  • Soporta el análisis de planes de ejecución SQL
  • Soporta la conversión de campos chinos a pinyin
  • Soporta el análisis de bloqueos de tablas
  • Soporta el análisis del estado de salud de la base de datos
  • Soporta control de permisos con tres roles: solo lectura, escritor y administrador
    "readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"],  # Read-only permissions
    "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"],  # Read-write permissions
    "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", 
             "CREATE", "ALTER", "DROP", "TRUNCATE"]  # Administrator permissions
    
  • Soporta la invocación de plantillas de prompts

Lista de Herramientas

Nombre de HerramientaDescripción
execute_sqlHerramienta de ejecución SQL que puede ejecutar comandos ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] según la configuración de permisos
get_chinese_initialsConvierte nombres de campos chinos a iniciales en pinyin
get_db_health_runningAnaliza el estado de salud de MySQL (estado de conexión, estado de transacciones, estado de ejecución, detección de estado de bloqueos)
get_table_descBusca estructuras de tablas en la base de datos según nombres de tablas, soporta consultas de múltiples tablas
get_table_indexBusca índices de tablas en la base de datos según nombres de tablas, soporta consultas de múltiples tablas
get_table_lockVerifica si hay bloqueos a nivel de fila o bloqueos a nivel de tabla en el servidor MySQL actual
get_table_nameBusca nombres de tablas en la base de datos según comentarios y descripciones de tablas
get_db_health_index_usageObtiene el uso de índices de la base de datos MySQL actualmente conectada, incluyendo situaciones de índices redundantes, situaciones de índices con bajo rendimiento y las 5 principales situaciones de índices no utilizados con tiempos de consulta superiores a 30 segundos
optimize_sqlHerramienta profesional de optimización de rendimiento SQL, que proporciona sugerencias de optimización expertas basadas en planes de ejecución de MySQL, información de estructura de tablas, volumen de datos de tablas e índices de tablas.
use_prompt_queryTableDataUtiliza prompts integrados para que el modelo construya una llamada en cadena de herramientas en mcp (no es una herramienta fija de uso común, necesitas modificar el código para habilitarla, consulta esta clase para más detalles)

Lista de Prompts

Nombre de PromptDescripción
analyzing-mysql-promptEste es un prompt para analizar problemas relacionados con MySQL
query-table-data-promptEste es un prompt para consultar datos de tablas usando herramientas. Si la descripción está vacía, se inicializará como un asistente de consulta de bases de datos MySQL

Instrucciones de Uso

Instalación y Configuración

  1. Instalar el Paquete
pip install mysql_mcp_server_pro
  1. Configurar Variables de Entorno Crea un archivo .env con el siguiente contenido:
# MySQL Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# Optional, default is 'readonly'. Available values: readonly, writer, admin
MYSQL_ROLE=readonly
  1. Ejecutar el Servicio
# SSE mode
mysql_mcp_server_pro --mode sse --envfile /path/to/.env

## Streamable Http mode (default)
mysql_mcp_server_pro --envfile /path/to/.env

# Streamable Http  oauth Authentication
mysql_mcp_server_pro --oauth true

  1. Cliente mcp

ve a ver "Usa uv para iniciar el servicio" ^_^

Nota:

  • El archivo .env debe colocarse en el directorio donde ejecutas el comando o usar el parámetro --envfile para especificar la ruta
  • También puedes establecer estas variables directamente en tu entorno
  • Asegúrate de que la configuración de la base de datos sea correcta y pueda conectarse

Ejecutar con uvx, Configuración del Cliente

  • Este método se puede usar directamente en clientes compatibles con MCP, sin necesidad de descargar el código fuente. Por ejemplo, el plugin Tongyi Qianwen, el editor trae, etc.
{
	"mcpServers": {
		"mysql": {
			"command": "uvx",
			"args": [
				"--from",
				"mysql_mcp_server_pro",
				"mysql_mcp_server_pro",
				"--mode",
				"stdio"
			],
			"env": {
				"MYSQL_HOST": "192.168.x.xxx",
				"MYSQL_PORT": "3306",
				"MYSQL_USER": "root",
				"MYSQL_PASSWORD": "root",
				"MYSQL_DATABASE": "a_llm",
				"MYSQL_ROLE": "admin"
			}
		}
	}
}

Desarrollo Local con modo Streamable Http

  • Usa uv para iniciar el servicio

Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.

El json de mcp es el siguiente:

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "type": "streamableHttp",
      "description": "",
      "isActive": true,
      "url": "http://localhost:3000/mcp/"
    }
  }
}

Modifica el contenido del archivo .env para actualizar la información de conexión de la base de datos con los detalles de tu base de datos:

# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin

Comandos de inicio:

# Download dependencies
uv sync

# Start
uv run -m mysql_mcp_server_pro.server

# Custom env file location
uv run -m mysql_mcp_server_pro.server --envfile /path/to/.env

# oauth Authentication
uv run -m mysql_mcp_server_pro.server --oauth true

Desarrollo Local con modo SSE

  • Usa uv para iniciar el servicio

Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.

El json de mcp es el siguiente:

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "description": "",
      "isActive": true,
      "url": "http://localhost:9000/sse"
    }
  }
}

Modifica el contenido del archivo .env para actualizar la información de conexión de la base de datos con los detalles de tu base de datos:

# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin

Comandos de inicio:

# Download dependencies
uv sync

# Start
uv run -m mysql_mcp_server_pro.server --mode sse

# Custom env file location
uv run -m mysql_mcp_server_pro.server --mode sse --envfile /path/to/.env

Desarrollo Local con modo STDIO

Agrega el siguiente contenido a tus herramientas de cliente mcp, como cursor, cline, etc.

El json de mcp es el siguiente:

{
  "mcpServers": {
      "operateMysql": {
        "isActive": true,
        "name": "operateMysql",
        "command": "uv",
        "args": [
          "--directory",
          "/Volumes/mysql_mcp_server_pro/src/mysql_mcp_server_pro",    # Replace this with your project path
          "run",
          "-m",
          "mysql_mcp_server_pro.server",
          "--mode",
          "stdio"
        ],
        "env": {
          "MYSQL_HOST": "localhost",
          "MYSQL_PORT": "3306",
          "MYSQL_USER": "root", 
          "MYSQL_PASSWORD": "123456",
          "MYSQL_DATABASE": "a_llm",
          "MYSQL_ROLE": "admin"
       }
    }
  }
} 

Extensiones de Herramientas Personalizadas

  1. Agrega una nueva clase de herramienta en el paquete handles, hereda de BaseHandler, e implementa los métodos get_tool_description y run_tool

  2. Importa la nueva herramienta en init.py para que esté disponible en el servidor

Autenticación OAuth2.0

  1. Inicia el servicio de autenticación. Por defecto, utiliza la autenticación integrada de modo contraseña OAuth 2.0. Puedes modificar la dirección de tu propio servicio de autenticación en el archivo env.
uv run -m mysql_mcp_server_pro.server --oauth true
  1. Visita el servicio de autenticación en http://localhost:3000/login. El nombre de usuario y la contraseña predeterminados están configurados en el archivo env. image

  2. Copia el token y agrégalo a los encabezados de la solicitud, por ejemplo: image

{
  "mcpServers": {
    "mysql_mcp_server_pro": {
      "name": "mysql_mcp_server_pro",
      "type": "streamableHttp",
      "description": "",
      "isActive": true,
      "url": "http://localhost:3000/mcp/",
      "headers": {
        "authorization": "bearer TOKEN_VALUE"
      }
    }
  }
}

Ejemplos

  1. Crear una nueva tabla e insertar datos, el formato del prompt es el siguiente:
# Task
   Create an organizational structure table with the following structure: department name, department number, parent department, is valid.
# Requirements
 - Table name: department
 - Common fields need indexes
 - Each field needs comments, table needs comment
 - Generate 5 real data records after creation

image image

  1. Consultar datos basados en comentarios de tablas, el prompt es el siguiente:
Search for data with Department name 'Executive Office' in Department organizational structure table

image

  1. Analizar SQL lento, el prompt es el siguiente:
select * from t_jcsjzx_hjkq_cd_xsz_sk xsz
left join t_jcsjzx_hjkq_jcd jcd on jcd.cddm = xsz.cddm 
Based on current index situation, review execution plan and provide optimization suggestions in markdown format, including table index status, execution details, and optimization recommendations
  1. Analizar problemas de deadlock en SQL, el prompt es el siguiente:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the cause

image

  1. Analizar el estado de salud, el prompt es el siguiente:
Check the current health status of MySQL

image