Skip to main content

MCP MySQL Tool

A powerful and comprehensive MySQL Model Context Protocol (MCP) server that allows AI assistants to interact with MySQL databases effortlessly. Features 12 specialized tools for different database operations with full cross-database support.

🚀 Features

Core Operations

  • mysql_query - Execute any SQL query with parameters
  • mysql_select - Smart SELECT with WHERE, LIMIT, ORDER BY, and database support
  • mysql_insert - Insert data with key-value pairs across databases
  • mysql_update - Update with required WHERE clause (safety) across databases
  • mysql_delete - Delete with required WHERE clause (safety) across databases

Database Exploration

  • mysql_show_databases - List all available databases
  • mysql_show_tables - List all tables in specified or current database
  • mysql_describe_table - Show table structure and columns from any database
  • mysql_table_info - Comprehensive table analysis (structure, indexes, constraints) from any database
  • mysql_count_rows - Count rows with optional WHERE conditions from any database

Advanced Features

  • mysql_custom_connection - Execute queries with custom host/user/password (password optional)
  • mysql_test_connection - Test connection with environment or custom parameters
  • Cross-database operations - All tools support database parameter for multi-database workflows
  • Safe parameterized queries to prevent SQL injection
  • Environment-based configuration
  • Comprehensive error handling
  • JSON responses optimized for AI parsing

📦 Installation

pip install mcp-mysql-tool

⚙️ Configuration

Environment Variables

Set these environment variables for default connection:

export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=your_database  # Optional

MCP Client Configuration

Add to your MCP client configuration:

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-tool",
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "password",
        "MYSQL_DATABASE": "mydb"
      }
    }
  }
}

🛠️ Usage Examples

Basic Operations

# List all databases
mysql_show_databases()

# Smart SELECT with conditions
mysql_select({
  "table": "users",
  "columns": ["id", "name", "email"],
  "where": "active = 1",
  "limit": 10,
  "order_by": "created_at DESC"
})

# SELECT from specific database
mysql_select({
  "table": "posts",
  "database": "wordpress",
  "where": "post_status = 'publish'",
  "limit": 5
})

# Safe INSERT
mysql_insert({
  "table": "users",
  "data": {
    "name": "John Doe",
    "email": "john@example.com",
    "active": 1
  }
})

# INSERT into specific database
mysql_insert({
  "table": "products",
  "database": "ecommerce",
  "data": {
    "name": "Widget",
    "price": 29.99,
    "category": "tools"
  }
})

# Safe UPDATE (WHERE required)
mysql_update({
  "table": "users",
  "data": {"last_login": "2024-01-01"},
  "where": "id = 123"
})

# UPDATE across databases
mysql_update({
  "table": "orders",
  "database": "shop",
  "data": {"status": "shipped"},
  "where": "order_id = 456"
})

Database Exploration

# List tables in current database
mysql_show_tables()

# List tables in specific database
mysql_show_tables({"database": "wordpress"})

# Describe table structure
mysql_describe_table({"table_name": "users"})

# Describe table from specific database
mysql_describe_table({
  "table_name": "wp_posts",
  "database": "wordpress"
})

# Get comprehensive table info
mysql_table_info({"table_name": "users"})

# Get table info from specific database
mysql_table_info({
  "table_name": "wp_users",
  "database": "wordpress"
})

Custom Connection

# Connect to different server (password now optional)
mysql_custom_connection({
  "host": "remote-server.com",
  "user": "remote_user",
  "query": "SELECT COUNT(*) FROM products"
})

Row Counting

# Count rows with conditions
mysql_count_rows({
  "table": "orders",
  "where": "status = 'completed' AND created_at > '2024-01-01'"
})

# Count from specific database
mysql_count_rows({
  "table": "posts",
  "database": "blog",
  "where": "published = 1"
})

🔒 Safety Features

  • Required WHERE clauses for UPDATE and DELETE operations
  • Parameterized queries to prevent SQL injection
  • Connection isolation for custom connections
  • Comprehensive error handling with detailed error codes
  • Input validation for all parameters

📋 Available Tools

Tool Description Database Support Safety
mysql_query Execute any SQL query ✅ Full ⚠️ Raw SQL
mysql_select Smart SELECT builder with WHERE/LIMIT/ORDER BY ✅ Parameter ✅ Safe
mysql_insert Insert with key-value pairs ✅ Parameter ✅ Safe
mysql_update Update with required WHERE ✅ Parameter 🔒 WHERE required
mysql_delete Delete with required WHERE ✅ Parameter 🔒 WHERE required
mysql_custom_connection Custom host/user/password (password optional) ✅ Full ⚠️ Raw SQL
mysql_show_databases List databases ✅ N/A ✅ Safe
mysql_show_tables List tables in database ✅ Parameter ✅ Safe
mysql_describe_table Table structure and columns ✅ Parameter ✅ Safe
mysql_table_info Comprehensive table analysis ✅ Parameter ✅ Safe
mysql_count_rows Count with optional WHERE ✅ Parameter ✅ Safe
mysql_test_connection Test connection (env/custom) ✅ Full ✅ Safe

🎯 Perfect for AI

This MCP server is specifically designed to be AI-friendly:

  • Structured responses in JSON format
  • Clear error messages with error codes
  • Flexible parameters for different use cases
  • Cross-database operations with database parameter
  • Safety guardrails to prevent dangerous operations
  • Comprehensive toolset for all database needs

Metadata

Release files for mcp-mysql-tool 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-mysql-tool 0.3.0
File Size Uploaded Provenance
mcp_mysql_tool-0.3.0.tar.gz 13.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-mysql-tool 0.3.0
File Interpreter ABI Platform
mcp_mysql_tool-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.1 kB

Release files / mcp_mysql_tool-0.3.0.tar.gz

Download URL mcp_mysql_tool-0.3.0.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a2489b702c18d9cba796f1923ee98af3c5246a7974794760416c0d2718a17cb0
BLAKE2b-256 checksum
How to use checksums
273c0a409d465329caca7fd83a672e588bb5b3664518eb30e741b9ef298efa71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.6

Release files / mcp_mysql_tool-0.3.0-py3-none-any.whl

Download URL mcp_mysql_tool-0.3.0-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
116eddd600c20710ba31bb993a1af7aee122eecae91216b7cc23aafa45e03832
BLAKE2b-256 checksum
How to use checksums
5153119fa675d406d1d7e91faf793f0a578298935c868c1bd1cec452c8084f93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.6

Security for mcp-mysql-tool 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page