Skip to main content

A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases. This server allows AI assistants to list tables, read data, and execute SQL queries through a controlled interface, making database exploration and analysis safer and more structured.

Project description

MySQL MCP Server Pro Plus

A robust, secure, and feature-rich Model Context Protocol (MCP) server for MySQL databases. This server provides a standardized interface for AI assistants to interact with MySQL databases through tools and resources.

๐Ÿš€ Features

Core Features

Security & Reliability

  • Secure Database Operations: Input validation, SQL injection protection, and query sanitization
  • Enterprise Security: Advanced security validation with configurable security levels
  • Connection Pooling: Efficient connection management with configurable pool settings
  • Comprehensive Error Handling: Detailed error messages and proper exception handling
  • Resource Management: Proper cleanup of database connections and cursors

Performance & Monitoring

  • Async/Await Support: Modern async patterns for better performance
  • Enterprise Monitoring: Database health analysis, performance metrics, and alerting
  • Query Performance Analysis: EXPLAIN plan analysis and optimization recommendations
  • Lock Contention Analysis: Blocking queries detection and resolution guidance
  • Schema Visualization: ER diagrams and relationship mapping

Development & Testing

  • Type Safety: Full type annotations and Pydantic models for configuration validation
  • Comprehensive Testing: Unit tests, security tests, and integration tests
  • Test Data Generation: Comprehensive e-commerce database simulation with 10M+ rows and bad practices for MCP agent testing
  • Interactive Exploration: Advanced data exploration with drill-down capabilities
  • CI/CD Integration: Pre-commit hooks, security scanning, and automated testing

Tools Available

Core Database Tools

  • execute_sql: Execute custom SQL queries with result formatting, security validation, and SQL injection protection
  • list_tables: List all tables in the database with basic metadata
  • describe_table: Get detailed table structure information including columns, indexes, constraints, and statistics

Advanced Analysis Tools

  • analyze_db_health: Enterprise-grade database health monitoring covering:

    • Index health and usage statistics
    • Connection pool status and limits
    • Replication status and lag monitoring
    • Buffer pool efficiency analysis
    • Constraint integrity validation
    • Auto-increment sequence analysis
    • Table fragmentation assessment
    • Comprehensive performance metrics
  • analyze_query_performance: Query performance analysis and optimization:

    • EXPLAIN plan analysis with execution strategy insights
    • Performance metrics and cost estimation
    • Index recommendations and optimization suggestions
    • Query rewrite suggestions and JOIN optimization
    • Execution analysis with runtime statistics
    • Resource consumption predictions
  • get_blocking_queries: Lock contention and blocking queries analysis:

    • Lock wait graph visualization
    • Deadlock detection and prevention
    • Session termination recommendations
    • Lock timeout configuration suggestions
    • Historical blocking analysis
    • MySQL PERFORMANCE_SCHEMA integration

Database Exploration Tools

  • explore_interactive: Interactive data exploration with multiple analysis modes:

    • Drill-down exploration capabilities
    • Smart sampling for large datasets
    • Pattern discovery and anomaly detection
    • Relationship navigation and analysis
    • Time-series analysis for temporal data
    • Comparative analysis across tables
    • Data quality assessment
  • get_database_overview: Comprehensive database overview:

    • Schema analysis and table relationships
    • Performance and security analysis
    • Statistical sampling for large datasets
    • Data quality metrics and insights
    • Security vulnerability assessment
  • get_schema_visualization: Schema visualization and relationship mapping:

    • ER diagram generation (ASCII/text-based)
    • Table dependency analysis
    • Foreign key relationship mapping
    • Constraint visualization (primary keys, unique constraints)
    • Circular reference detection
    • Impact analysis for schema changes

Resources

  • Table Data: Access table contents as CSV-formatted resources via mysql://{table_name}/data
  • Automatic Discovery: Dynamic table listing and resource creation
  • Schema Resources: Database schema information and metadata access

๐Ÿ“‹ Requirements

  • Python 3.8+
  • MySQL 5.7+ or MariaDB 10.2+
  • mysql-connector-python

๐Ÿ› ๏ธ Installation

  1. Clone the repository:

    git clone <repository-url>
    cd mysql_mcp_server_pro_plus
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Set up environment variables:

    cp env.example .env
    # Edit .env with your MySQL configuration
    

โš™๏ธ Configuration

Environment Variables

Variable Description Default Required
MYSQL_URL MySQL connection URL (preferred) - No*
MYSQL_HOST MySQL server host localhost No
MYSQL_PORT MySQL server port 3306 No
MYSQL_USER MySQL username - Yes
MYSQL_PASSWORD MySQL password - Yes
MYSQL_DATABASE MySQL database name - Yes
MYSQL_CHARSET Character set utf8mb4 No
MYSQL_COLLATION Collation utf8mb4_unicode_ci No
MYSQL_AUTOCOMMIT Auto-commit mode true No
MYSQL_SQL_MODE SQL mode TRADITIONAL No
MYSQL_CONNECTION_TIMEOUT Connection timeout (seconds) 10 No
MYSQL_POOL_SIZE Connection pool size 5 No
MYSQL_POOL_RESET_SESSION Reset session on return true No

Note: Either MYSQL_URL or the individual MYSQL_USER, MYSQL_PASSWORD, and MYSQL_DATABASE variables are required. If MYSQL_URL is provided, it takes precedence over individual variables.

Example Configuration

# .env file

# Option 1: Using MySQL URL (Recommended)
MYSQL_URL=mysql://myuser:mypassword@localhost:3306/mydatabase?charset=utf8mb4&collation=utf8mb4_unicode_ci&sql_mode=TRADITIONAL

# Option 2: Using individual variables
# MYSQL_HOST=localhost
# MYSQL_PORT=3306
# MYSQL_USER=myuser
# MYSQL_PASSWORD=mypassword
# MYSQL_DATABASE=mydatabase
# MYSQL_CHARSET=utf8mb4
# MYSQL_COLLATION=utf8mb4_unicode_ci
# MYSQL_AUTOCOMMIT=true
# MYSQL_SQL_MODE=TRADITIONAL
# MYSQL_CONNECTION_TIMEOUT=10
# MYSQL_POOL_SIZE=5
# MYSQL_POOL_RESET_SESSION=true

๐Ÿ“Š Performance

Optimizations

  • Connection Pooling: Reuses database connections for better performance
  • Async Operations: Non-blocking database operations
  • Efficient Query Execution: Optimized query handling and result processing
  • Memory Management: Proper cleanup prevents memory leaks

Monitoring

  • Comprehensive Logging: Detailed logs for debugging and monitoring
  • Error Tracking: Structured error reporting with context
  • Performance Metrics: Connection and query performance tracking

๐Ÿ”ง Development

Project Structure

mysql_mcp_server_pro_plus/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ mysql_mcp_server_pro_plus/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”œโ”€โ”€ server.py              # Main MCP server implementation
โ”‚       โ”œโ”€โ”€ config.py              # Configuration management
โ”‚       โ”œโ”€โ”€ db_manager.py          # Database connection and management
โ”‚       โ”œโ”€โ”€ logger.py              # Logging configuration
โ”‚       โ”œโ”€โ”€ schema_mapping.py      # Schema analysis utilities
โ”‚       โ”œโ”€โ”€ validator.py           # Security validation
โ”‚       โ””โ”€โ”€ tools/                 # MCP Tools directory
โ”‚           โ”œโ”€โ”€ __init__.py
โ”‚           โ”œโ”€โ”€ analyze_db_health.py          # Database health analysis
โ”‚           โ”œโ”€โ”€ analyze_query_performance.py # Query performance analysis
โ”‚           โ”œโ”€โ”€ describe_table.py             # Enhanced table description
โ”‚           โ”œโ”€โ”€ discover_sensitive_data.py    # Sensitive data discovery (reference)
โ”‚           โ”œโ”€โ”€ execute_sql.py                # SQL execution tool
โ”‚           โ”œโ”€โ”€ explore_interactive.py        # Interactive data exploration
โ”‚           โ”œโ”€โ”€ get_blocking_queries.py       # Blocking queries analysis
โ”‚           โ”œโ”€โ”€ get_database_overview.py      # Database overview tool
โ”‚           โ”œโ”€โ”€ get_schema_visualization.py   # Schema visualization
โ”‚           โ””โ”€โ”€ list_tables.py                # Table listing tool
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ conftest.py             # Test configuration
โ”‚   โ””โ”€โ”€ test_server.py         # Server unit tests
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ generate_test_data.py   # Test data generator (10M+ rows)
โ”‚   โ”œโ”€โ”€ security/
โ”‚   โ”‚   โ”œโ”€โ”€ bandit-docker.sh    # Security scanning with Bandit
โ”‚   โ”‚   โ”œโ”€โ”€ check-secrets.sh    # Secret detection
โ”‚   โ”‚   โ””โ”€โ”€ verify_bad_practices.py # Bad practices verification
โ”œโ”€โ”€ init-scripts/
โ”‚   โ””โ”€โ”€ 01-init.sql            # Database initialization with bad practices
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ mysql/                 # MySQL data directory
โ”œโ”€โ”€ mysql-config/
โ”‚   โ””โ”€โ”€ my.cnf                 # MySQL configuration
โ”œโ”€โ”€ hooks/
โ”‚   โ”œโ”€โ”€ post_gen_project.py    # Post-generation hooks
โ”‚   โ”œโ”€โ”€ pre-commit-check-dependencies.sh
โ”‚   โ”œโ”€โ”€ pre-commit-check-secrets.sh
โ”‚   โ””โ”€โ”€ pre-commit-run-tests.sh
โ”œโ”€โ”€ dist/                      # Distribution packages
โ”œโ”€โ”€ logs/                      # Application logs
โ”œโ”€โ”€ docker-compose.yml         # Docker Compose configuration
โ”œโ”€โ”€ Dockerfile                 # Docker image definition
โ”œโ”€โ”€ pyproject.toml            # Project configuration (Poetry)
โ”œโ”€โ”€ uv.lock                   # Dependency lock file
โ”œโ”€โ”€ pytest.ini               # Pytest configuration
โ”œโ”€โ”€ test_security.py          # Security tests
โ”œโ”€โ”€ Makefile                  # Build automation
โ”œโ”€โ”€ env.example              # Environment variables template
โ”œโ”€โ”€ .env                      # Local environment (gitignored)
โ”œโ”€โ”€ CHANGELOG.md             # Change log
โ”œโ”€โ”€ LICENSE                  # MIT License
โ””โ”€โ”€ README.md                # This file

Test Data Generation

For comprehensive MCP agent testing, the project includes a sophisticated test data generation system:

  • Complex E-commerce Database: 8 interconnected tables with realistic relationships
  • 10+ Million Rows: Distributed across users, products, orders, reviews, and payments
  • 1 Million Transactions: Mixed SELECT, INSERT, UPDATE, and DELETE operations
  • Intentional Bad Practices: Security vulnerabilities, performance issues, and design flaws for MCP agent detection

See README-TEST-DATA.md for detailed documentation.

Quick Start:

# Start the database
make up

# Generate test data (Docker)
make generate-test-data-docker

# Or generate locally
make generate-test-data

# Verify bad practices
make verify-bad-practices-docker

Security Features

The project includes comprehensive security features for production deployment:

Automated Security Scanning

  • Bandit Integration: Automated Python security vulnerability scanning
  • Secret Detection: Pre-commit hooks to prevent accidental secret commits
  • Security Testing: Dedicated security test suite in test_security.py

Security Tools

  • Sensitive Data Discovery: Pattern-based detection of PII, financial data, and sensitive information
  • Security Validation: Configurable security levels for different deployment environments
  • SQL Injection Protection: Advanced query validation and sanitization

Security Scripts

# Run comprehensive security checks
make security-check

# Run security tests (standalone)
python -m pytest test_security.py -v

# Check for secrets in code
./scripts/security/check-secrets.sh

Code Quality

The project follows strict code quality standards:

  • Type Annotations: Full type hints for better IDE support and error detection
  • Pydantic Models: Data validation and serialization
  • Async/Await: Modern Python async patterns
  • Error Handling: Comprehensive exception handling
  • Documentation: Detailed docstrings and comments
  • Security Scanning: Automated security vulnerability detection with Bandit
  • Pre-commit Hooks: Code quality checks and secret detection
  • Comprehensive Testing: Unit tests, integration tests, and security tests

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite
  6. Submit a pull request

๐Ÿ› Troubleshooting

Common Issues

Connection Errors

Error: Missing required database configuration

Solution: Ensure all required environment variables are set. Either provide MYSQL_URL or the individual variables (MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE).

Permission Errors

Error: Access denied for user

Solution: Check MySQL user permissions and ensure the user has access to the specified database.

Character Set Issues

Error: Unknown collation

Solution: Update MYSQL_CHARSET and MYSQL_COLLATION to values supported by your MySQL version.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿค Support

For support and questions:

  1. Check the troubleshooting section
  2. Review the test files for usage examples
  3. Open an issue on GitHub
  4. Check the CHANGELOG.md for recent updates

๐Ÿ”„ Changelog

See CHANGELOG.md for a detailed history of changes and improvements.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mysql_mcp_server_pro_plus-0.3.0.tar.gz (81.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mysql_mcp_server_pro_plus-0.3.0-py3-none-any.whl (82.6 kB view details)

Uploaded Python 3

File details

Details for the file mysql_mcp_server_pro_plus-0.3.0.tar.gz.

File metadata

File hashes

Hashes for mysql_mcp_server_pro_plus-0.3.0.tar.gz
Algorithm Hash digest
SHA256 04c037da083be6c920021c2d337965b0014185bc3dcfd3ab2e4421beefa003fe
MD5 c6d435cca45d153fa90b25c0ef65a1f5
BLAKE2b-256 05e4c439aa521b468346f76105a935a91c39c33966e5529058503957ee253dd9

See more details on using hashes here.

File details

Details for the file mysql_mcp_server_pro_plus-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mysql_mcp_server_pro_plus-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 93b974e70c154d856a22d14c164e35ab0ee67940338932f772e9409381829d39
MD5 5002a6cabca71e7051972fc8705253d6
BLAKE2b-256 2dd465250101e28ff10987dad12202f86f695ed1a66e86f39d67812f66b49df2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page