
MySQL MCP Server Pro
MySQL CRUD plus anomaly analysis: SQL optimization, health checks, lock and index diagnostics, with role-based permissions.
Add to your client
Copy the config for your MCP client and paste it into its config file.
pip install mysql_mcp_server_proPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mysql-mcp-server-pro": {
"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"
}
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- A reachable MySQL database with valid credentials
- Python with uv/uvx, or pip to install the mysql_mcp_server_pro package
- Environment variables for the DB connection (MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE) and optionally MYSQL_ROLE
About MySQL MCP Server Pro
An MCP server for secure interaction with MySQL databases that goes beyond CRUD to include database anomaly analysis: SQL execution-plan optimization, table and row lock detection, index-usage diagnostics, and overall health checks. It supports STDIO, SSE, and Streamable HTTP transports, OAuth 2.0 authentication, and role-based permission control (readonly/writer/admin). Developers can extend it with custom tools by subclassing BaseHandler.
Tools & capabilities (10)
execute_sqlSQL execution tool that can run SELECT, SHOW, DESCRIBE, EXPLAIN, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, and TRUNCATE commands based on the configured permission role.
get_chinese_initialsConvert Chinese field names to pinyin initials.
get_db_health_runningAnalyze MySQL health status, including connection status, transaction status, running status, and lock status detection.
get_table_descSearch for table structures in the database based on table names, supporting multi-table queries.
get_table_indexSearch for table indexes in the database based on table names, supporting multi-table queries.
get_table_lockCheck whether there are row-level or table-level locks on the current MySQL server.
get_table_nameSearch for table names in the database based on table comments and descriptions.
get_db_health_index_usageGet index usage for the connected MySQL database, including redundant indexes, poorly performing indexes, and the top 5 unused indexes with query times greater than 30 seconds.
optimize_sqlProfessional SQL performance optimization tool that provides expert suggestions based on MySQL execution plans, table structure, table data volume, and table indexes.
use_prompt_queryTableDataUses built-in prompts to let the model construct a chain call of MCP tools. Not enabled by default; requires modifying the code to activate.
What this server can do
MySQL MCP Server Pro provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Create tables and insert data from natural-language task descriptions, with indexes and comments
- Query data by table comments without knowing exact table or column names
- Analyze slow SQL and get markdown optimization recommendations based on the execution plan
- Diagnose SQL deadlocks and stuck statements by analyzing lock status
- Check overall MySQL health (connections, transactions, locks, index usage)
Security notes
Connects to a MySQL database using credentials supplied via environment variables (MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE). Use MYSQL_ROLE to scope permissions: 'readonly' (SELECT/SHOW/DESCRIBE/EXPLAIN), 'writer' (adds INSERT/UPDATE/DELETE), or 'admin' (adds CREATE/ALTER/DROP/TRUNCATE). Prefer the least-privileged role; the README examples use 'admin', which grants destructive DDL. For HTTP/SSE deployments, enable OAuth 2.0 (--oauth true) to protect the endpoint.
MySQL MCP Server Pro FAQ
Which MCP transports are supported?
All of them: STDIO, SSE, and Streamable HTTP. Streamable HTTP is the default mode; use --mode sse for SSE or --mode stdio for STDIO.
How do I restrict what SQL the server can run?
Set the MYSQL_ROLE environment variable. 'readonly' allows SELECT/SHOW/DESCRIBE/EXPLAIN; 'writer' adds INSERT/UPDATE/DELETE; 'admin' adds CREATE/ALTER/DROP/TRUNCATE. Choose the least-privileged role for your use case.
Does it support authentication for HTTP deployments?
Yes. It supports OAuth 2.0 (built-in password mode by default). Start with --oauth true, log in at the auth service, then pass the token in the request headers as 'authorization: bearer TOKEN_VALUE'.
Can I add my own tools?
Yes. Add a new tool class in the handles package that inherits from BaseHandler and implements get_tool_description and run_tool, then import it in __init__.py to register it with the server.
Alternatives to MySQL MCP Server Pro
Compare all alternatives →Google's official MCP server with prebuilt BigQuery tools, querying datasets via Application Default Credentials.
Read/write Postgres access plus index tuning, EXPLAIN plans, and database health analysis for AI agents.
Official Supabase server: manage tables, run SQL, branches, configs and edge functions from your AI client.
Compare MySQL MCP Server Pro with: