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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_mysql_tool-0.3.0.tar.gz | 13.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.