Skip to main content
Glama
isdaniel

MySQL-Performance-Tuner-Mcp

by isdaniel

MySQL Performance Tuning MCP

PyPI - Version PyPI - Downloads Python 3.10+ Pepy Total Downloads Docker Pulls

A Model Context Protocol (MCP) server for MySQL performance tuning and analysis.

Overview

mysqltuner_mcp provides AI-powered MySQL database performance analysis through the Model Context Protocol. It offers tools for query optimization, index recommendations, health monitoring

Related MCP server: MySQL MCP Server

Features

Performance Analysis

  • Slow Query Detection: Identify slow queries from performance_schema

  • Query Analysis: Get detailed EXPLAIN plans with recommendations

  • Table Statistics: Analyze table sizes, row counts, and fragmentation

  • Statement Analysis: Analyze SQL statements for temp tables, sorting, and full scans

Index Optimization

  • Index Recommendations: AI-powered suggestions based on query patterns

  • Unused Index Finder: Identify indexes that are never read

  • Duplicate Detection: Find redundant and overlapping indexes

  • Index Statistics: Cardinality, selectivity, and usage metrics

Health Monitoring

  • Health Check: Comprehensive database health assessment with scoring

  • Active Queries: Real-time query monitoring

  • Wait Event Analysis: Identify I/O and lock bottlenecks

  • Configuration Review: Settings analysis with recommendations

Storage Engine Analysis

  • Engine Statistics: Analyze storage engine usage and distribution

  • Fragmentation Detection: Find fragmented tables with OPTIMIZE recommendations

  • Auto-Increment Analysis: Detect columns approaching overflow limits

InnoDB Analysis

  • InnoDB Status: Parse and analyze SHOW ENGINE INNODB STATUS

  • Buffer Pool Analysis: Detailed buffer pool usage by schema and table

  • Transaction Analysis: Monitor transactions, lock waits, and deadlocks

Memory Analysis

  • Memory Calculations: Calculate per-thread and global buffer usage

  • Memory by Host/User: Breakdown memory usage by connection source

  • Table Cache Analysis: Analyze table open cache efficiency

Replication Monitoring

  • Master/Slave Status: Monitor replication health and lag

  • Galera Cluster: Full Galera cluster status for MariaDB/Percona

  • Group Replication: MySQL Group Replication monitoring

Security Analysis

  • Security Audit: Check for anonymous users, weak passwords, dangerous privileges

  • User Privileges: Analyze user privileges at all levels

  • Audit Log: Check audit logging configuration

Resources & Prompts

  • Built-in best practices documentation

  • Pre-configured prompts for common tuning tasks

  • Index optimization guidelines

  • Configuration optimization guide

Installation

From Source

git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
pip install -e .

Using pip (when published)

pip install mysqltuner_mcp

Configuration

Environment Variables

Variable

Description

Default

MYSQL_URI

MySQL connection URI (required)

-

MYSQL_POOL_SIZE

Connection pool size

5

MYSQL_SSL

Enable SSL/TLS connection

false

MYSQL_SSL_CA

Path to CA certificate file

-

MYSQL_SSL_CERT

Path to client certificate file

-

MYSQL_SSL_KEY

Path to client private key file

-

MYSQL_SSL_VERIFY_CERT

Verify server certificate

true

MYSQL_SSL_VERIFY_IDENTITY

Verify server hostname matches certificate

false

Connection URI Format

Environment Variables

export MYSQL_URI="mysql://user:password@host:3306/database"
export MYSQL_SSL=true
export MYSQL_SSL_CA="/path/to/ca.pem"  # Optional: CA certificate for verification

Connection URI Query Parameters

export MYSQL_URI="mysql://user:password@host:3306/database?ssl=true&ssl_ca=/path/to/ca.pem"

Usage

Running the Server

The server supports three transport modes: stdio (default), SSE, and streamable-http.

# As a module
python -m mysqltuner_mcp

# Using the entry point
mysqltuner-mcp

# Explicitly specifying stdio mode
python -m mysqltuner_mcp --mode stdio

SSE Mode (Server-Sent Events)

HTTP transport using Server-Sent Events, suitable for web-based MCP clients:

# Start SSE server on default port 8080
python -m mysqltuner_mcp --mode sse

# Specify custom host and port
python -m mysqltuner_mcp --mode sse --host 127.0.0.1 --port 3000

# Enable debug mode
python -m mysqltuner_mcp --mode sse --debug

SSE Endpoints:

  • http://<host>:<port>/sse - SSE connection endpoint

  • http://<host>:<port>/messages/ - Message posting endpoint

Streamable HTTP Mode

Modern HTTP transport with session management:

# Start streamable HTTP server (stateful, with session tracking)
python -m mysqltuner_mcp --mode streamable-http

# Start in stateless mode (fresh transport per request)
python -m mysqltuner_mcp --mode streamable-http --stateless

# Specify custom host and port
python -m mysqltuner_mcp --mode streamable-http --host 127.0.0.1 --port 3000

Streamable HTTP Endpoint:

  • http://<host>:<port>/mcp - Single endpoint for all MCP communication

Command-Line Options

Option

Description

Default

--mode

Server mode: stdio, sse, or streamable-http

stdio

--host

Host to bind to (HTTP modes only)

0.0.0.0

--port

Port to listen on (HTTP modes only)

8080 or PORT env var

--stateless

Run in stateless mode (streamable-http only)

false

--debug

Enable debug logging

false

MCP Client Configuration

Add to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "mysqltuner_mcp": {
      "command": "python",
      "args": ["-m", "mysqltuner_mcp"],
      "env": {
        "MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database"
      }
    }
  }
}

With SSL/TLS Enabled

{
  "mcpServers": {
    "mysqltuner_mcp": {
      "command": "python",
      "args": ["-m", "mysqltuner_mcp"],
      "env": {
        "MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database",
        "MYSQL_SSL": "true",
        "MYSQL_SSL_CA": "/path/to/ca.pem"
      }
    }
  }
}

Available Tools

Performance Tools

Tool

Description

get_slow_queries

Retrieve slow queries from performance_schema with detailed statistics

analyze_query

Get EXPLAIN plan and analysis for a query with optimization recommendations

get_table_stats

Get table statistics including size, row counts, fragmentation, and indexes

compare_explain_plans

Diff EXPLAIN plans for two query variants; returns verdict + rationale

get_table_io_hotspots

Rank tables by I/O latency from performance_schema.file_summary_by_instance

Index Tools

Tool

Description

get_index_recommendations

AI-powered index suggestions based on query patterns from performance_schema

find_unused_indexes

Find unused, duplicate, and redundant indexes with DROP statements

get_index_stats

Detailed index statistics including cardinality, selectivity, and usage metrics

Health Tools

Tool

Description

check_database_health

Comprehensive health check with scoring (connections, buffer pool, queries, etc.)

get_active_queries

Monitor currently running queries and identify long-running/blocked queries

review_settings

Analyze MySQL configuration settings with best practice recommendations

analyze_wait_events

Identify wait event bottlenecks (I/O, locks, buffer, log waits)

Storage Engine Tools

Tool

Description

analyze_storage_engines

Analyze storage engine usage, statistics, and recommendations

get_fragmented_tables

Find tables with significant fragmentation and wasted space

analyze_auto_increment

Check auto-increment columns for potential overflow issues

InnoDB Tools

Tool

Description

get_innodb_status

Parse and analyze SHOW ENGINE INNODB STATUS output

analyze_buffer_pool

Detailed InnoDB buffer pool analysis by schema and table

analyze_innodb_transactions

Analyze InnoDB transactions, lock waits, and deadlocks

analyze_innodb_redo_log_pressure

Measure redo log fill rate and recommend innodb_redo_log_capacity

Memory Tools

Tool

Description

calculate_memory_usage

Calculate MySQL memory usage (per-thread and global buffers)

get_memory_by_host

Get memory usage breakdown by host, user, or event

get_table_memory_usage

Analyze table cache and InnoDB buffer pool by table

Replication Tools

Tool

Description

get_replication_status

Get master/slave replication status and health

get_galera_status

Get Galera cluster status (MariaDB/Percona XtraDB Cluster)

get_group_replication_status

Get MySQL Group Replication status

Security Tools

Tool

Description

analyze_security

Comprehensive security analysis (users, passwords, SSL, privileges)

analyze_user_privileges

Analyze privileges for specific users or all users

check_audit_log

Check audit log configuration and status

Statement Analysis Tools

Tool

Description

analyze_statements

Comprehensive SQL statement analysis from performance_schema

get_statements_with_temp_tables

Find statements creating temporary tables (memory and disk)

get_statements_with_sorting

Find statements with sorting operations and file sorts

get_statements_with_full_scans

Find statements performing full table scans

get_statements_with_errors

Find statements producing errors or warnings

find_temporary_table_spills_in_progress

List queries spilling to disk RIGHT NOW (live, not historical)

Diagnostic Tools

Tool

Description

analyze_connections

Connection state analysis (Sleep / Query / Locked breakdown, per-user, per-host)

analyze_table_locks

Table lock contention analysis (metadata locks, lock waits)

analyze_temp_tables

Temporary table and disk-spill historical analysis

check_perf_schema_config

Verify performance_schema is enabled and configured

review_optimizer_config

Review optimizer switches and cost model

analyze_lock_wait_graph

Build the InnoDB lock-wait dependency graph; find root blocker(s) and detect cycles (MySQL 8.0+)

Available Prompts

Prompt

Description

optimize_slow_query

Analyze and optimize a slow query

health_check

Perform comprehensive health assessment

index_review

Review indexes for a database

performance_audit

Full performance audit

Requirements

  • Python 3.10+

  • MySQL 5.7+ or MySQL 8.0+

  • performance_schema enabled (for full functionality)

MySQL Permissions

The MySQL user needs the following privileges:

GRANT SELECT ON performance_schema.* TO 'your_user'@'%';
GRANT SELECT ON information_schema.* TO 'your_user'@'%';
GRANT PROCESS ON *.* TO 'your_user'@'%';
-- For EXPLAIN on user databases:
GRANT SELECT ON your_database.* TO 'your_user'@'%';

Development

Setup Development Environment

git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -e .
Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

–Maintainers
–Response time
4moRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    An MCP server that integrates with MySQL databases, enabling secure read and write operations through LLM-driven interfaces with support for transaction handling and performance monitoring.
    Last updated
    62
    18
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive MySQL database operations including CRUD, performance optimization, health analysis, and anomaly detection. Supports multiple connection modes, OAuth2.0 authentication, and role-based permissions for database management through natural language.
    Last updated
    9
    1
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    A high-performance MCP server that enables AI assistants to safely interact with MySQL databases through secure CRUD operations, schema inspection, and parameterized queries with built-in SQL injection prevention.
    Last updated
    1

View all related MCP servers

Related MCP Connectors

  • GibsonAI MCP server: manage your databases with natural language

  • Cloud-hosted MCP server for durable AI memory

  • MCP Server for agents to onboard, pay, and provision services autonomously with InFlow

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/isdaniel/mysqltuner_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server