A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases
# Add to your Claude Code skills
git clone https://github.com/designcomputer/mysql_mcp_serverGuides for using mcp servers skills like mysql_mcp_server.
Last scanned: 6/6/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-06T06:52:31.080Z",
"npmAuditRan": true,
"pipAuditRan": false
}No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
30 days in the Featured rail
A Model Context Protocol (MCP) implementation that enables secure interaction with MySQL databases. This server component facilitates communication between AI applications (hosts/clients) and MySQL databases, making database exploration and analysis safer and more structured through a controlled interface.
Note: MySQL MCP Server supports both standard input/output (STDIO) and Streamable HTTP (SSE) transport modes. The SSE mode is recommended for remote/self-hosted deployments.
MYSQL_DATABASE)MCP_TRANSPORT=sse)pip install mysql-mcp-server
To install MySQL MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude
claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server
Set the following environment variables:
MYSQL_HOST=localhost # Database host
MYSQL_PORT=3306 # Optional: Database port (defaults to 3306 if not specified)
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database # Optional: Omit for multi-database mode
# Advanced Configuration
MYSQL_SSL_MODE=DISABLED # DISABLED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY
MYSQL_CONNECT_TIMEOUT=10 # Timeout in seconds
# Compatibility (Optional)
MYSQL_CHARSET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci
MYSQL_AUTH_PLUGIN= # e.g., mysql_native_password for older MySQL versions
MYSQL_USE_PURE=false # Use pure Python implementation
MYSQL_RAISE_ON_WARNINGS=false
# SSE Transport (Optional)
MCP_TRANSPORT=stdio # stdio or sse
MCP_SSE_HOST=0.0.0.0 # Listen on all interfaces (required for Docker/hosting)
PORT=8000 # HTTP port (fallback for MCP_SSE_PORT)
# SSH Tunneling (Optional)
MYSQL_SSH_ENABLE=false # Set to true to enable
MYSQL_SSH_HOST= # SSH jump host
MYSQL_SSH_PORT=22 # SSH port
MYSQL_SSH_USER= # SSH username
MYSQL_SSH_KEY_PATH= # Path to SSH private key
MYSQL_SSH_REMOTE_HOST=localhost # Host from the perspective of the jump host
MYSQL_SSH_REMOTE_PORT=3306
MYSQL_LOCAL_PORT=3330
When MYSQL_DATABASE is not set, the server operates in multi-database mode:
list_resources returns all user databases (system databases are filtered out)mydb.mytable in SQL queriesUSE db; SELECT ...) are not supported.execute_sqlExecutes any standard SQL query.
query (string)SELECT, SHOW, DESCRIBE, and DML (INSERT, UPDATE, DELETE). DML operations are marked with a destructive hint.database.table notation to query any database regardless of the MYSQL_DATABASE setting.get_schema_infoProvides detailed metadata about database structures.
table_name (optional string)MYSQL_DATABASE. Does not support database.table notation.$.get_table_sampleFetches a representative sample of data.
table_name (string), limit (optional integer, max 20)MYSQL_DATABASE. Does not support database.table notation.$.Tool Scope:
execute_sqlcan query any database usingdatabase.tablenotation.get_schema_infoandget_table_sampleare limited to the database specified byMYSQL_DATABASE. If you need schema or sample data from a different database, useexecute_sqlinstead (e.g.,DESCRIBE other_db.mytable).
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"mysql": {
"command": "uv",
"args": [
"--directory",
"path/to/mysql_mcp_server",
"run",
"mysql_mcp_server"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
For more detailed examples and agent-specific guidance, see MCP_USECASES.md.
Add this to your mcp.json:
{
"mcpServers": {
"mysql": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"mysql-mcp-server",
"mysql_mcp_server"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
Note: Will need to install uv for this to work
While MySQL MCP Server isn't intended to be run standalone or directly from the command line with Python, you can use the MCP Inspector to debug it.
The MCP Inspector provides a convenient way to test and debug your MCP implementation:
# Install dependencies
pip install -r requirements.txt
# Use the MCP Inspector for debugging (do not run directly with Python)
The MySQL MCP Server is designed to be integrated with AI applications like Claude Desktop and should not be run directly as a standalone Python program.
# Clone the repository
git clone https://github.com/designcomputer/mysql_mcp_server.git
cd mysql_mcp_server
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install development dependencies
pip install -r requirements-dev.txt
# Copy the example config and edit with your credentials
cp .env.example .env
# Edit .env with your MySQL connection details
# Run tests
pytest
get_schema_info and get_table_sample are validated against a strict whitelist (alphanumeric, underscore, and $ only). Dots and special characters are rejected to prevent SQL injection.See SECURITY.md for a comprehensive guide on securing your deployment.
This MCP implementation requires database access to function. For security:
See MySQL Security Configuration Guide for detailed instructions on:
⚠️ IMPORTANT: Always follow the principle of least privilege when configuring database access.
MIT License - see LICENSE file for details.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)