MySQL
designcomputer/mysql_mcp_server · 1.3k stars · Python · MIT
MCP server A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases
Install
pip install mysql-mcp-serverThese repos do not share one command. When an entry shows a command, it was copied as published. Check the repo's README before you run it.
Files
MySQL MCP Server
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.
Deployment options
- Hosted — Fronteir AI runs the server for you; no local setup required.
- Local — Smithery installs and runs the server on your own machine.
Features
- List available MySQL tables as resources
- Read table contents
- Execute SQL queries with proper error handling
- Multi-database mode (Optional
MYSQL_DATABASE) - SSE/HTTP transport support (
MCP_TRANSPORT=sse) - SSH Tunneling support
- Comprehensive schema information
- Table data sampling
- Secure database access through environment variables
- Comprehensive logging
Installation
Manual Installation
pip install mysql-mcp-server
Installing via Smithery
To install MySQL MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude
Installing via Claude Code CLI
claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server
Installing via Autohand Code CLI
autohand mcp add mysql env MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=your_database uvx mysql_mcp_server
Add --scope project after mcp add to keep the registration in the current workspace. See Autohand Code for current CLI details.
Configuration
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
# Connection behaviour (Optional)
MYSQL_SQL_MODE=TRADITIONAL # SQL mode applied to the connection (default: TRADITIONAL)
# 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 # Force the pure-Python connector (default: false)
MYSQL_RAISE_ON_WARNINGS=false # Raise on SQL warnings (default: 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)
MCP_SSE_ALLOWED_HOSTS= # Comma-separated allowed Host headers (default: localhost:{port},127.0.0.1:{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
.env file loading
On startup the server automatically loads a .env file via python-dotenv, so for local use you can simply:
cp .env.example .env # then edit with your credentials
The file is read from the process working directory (and parent directories), which works when you run the server yourself from the project folder.
⚠️ Claude Code / Claude Desktop: these hosts launch the server from their own working directory, so the project's
.envwill not be found and you'll seeMissing required database configuration. Put yourMYSQL_*values in theenvblock of the MCP config (shown in the Usage section below) rather than relying on.env.
Multi-Database Mode
When MYSQL_DATABASE is not set, the server operates in multi-database mode:
list_resourcesreturns all user databases (system databases are filtered out)- Use fully qualified table names like
mydb.mytablein SQL queries - Note: Only single SQL statements are supported. Multi-statement queries (e.g.,
USE db; SELECT ...) are not supported.
Available Tools
execute_sql
Executes any standard SQL query.
- Arguments:
query(string) - Features: Supports
SELECT,SHOW,DESCRIBE, and DML (INSERT,UPDATE,DELETE). DML operations are marked with a destructive hint. - Limitation: Single statements only. Multi-statement queries are not supported.
- Cross-database: Use
database.tablenotation to query any database regardless of theMYSQL_DATABASEsetting.
get_schema_info
Provides detailed metadata about database structures.
- Arguments:
table_name(optional string) - Output: Column names, types, nullability, default values, and comments.
- Cross-database: Pass
database.tableto query a table outsideMYSQL_DATABASE; bare names use the configured database. - Identifier rules: Names must contain only alphanumeric characters, underscores, and
$(dots are allowed as a separator between database and table names).
get_table_sample
Fetches a representative sample of data.
- Arguments:
table_name(string),limit(optional integer, max 20) - Use Case: Quickly understand data formats and content without fetching large result sets.
- Cross-database: Pass
database.tableto sample a table outsideMYSQL_DATABASE; bare names use the configured database. - Identifier rules: Names must contain only alphanumeric characters, underscores, and
$(dots are allowed as a separator between database and table names).
Available Prompts
In addition to tools, the server exposes MCP prompts — guided, multi-step workflows that a client can launch on demand. In Claude Code they appear as slash commands (/mcp__<server>__<prompt>); in Claude Desktop they appear in the prompts (+) menu.
Example (Claude Code):
/mcp__mysql__explore_database
/mcp__mysql__analyze_table customers
Both prompts orchestrate the existing get_schema_info and get_table_sample tools; explore_database also uses resource listing to enumerate tables.
Usage
With Claude Desktop
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.
With Visual Studio Code
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
Debugging with MCP Inspector
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)Facts
- Kind
- MCP server
- Repo
- designcomputer/mysql_mcp_server
- Group
- Uncategorized
- Stars
- 1.3k
- License
- MIT
- Language
- Python
- Last push
- 2026-08-02
- Forks
- 261
- Homepage
- designcomputer.com
- Topics
- ai, claude, claude-code, database, llm, mcp, mcp-server, model-context-protocol, mysql
- 1Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 2Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k
- 3Gitmodelcontextprotocol/serversA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.85.8k
- 4Memorymodelcontextprotocol/serversA basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.85.8k
- 5Sequential Thinkingmodelcontextprotocol/serversAn MCP server implementation that provides a tool for dynamic and reflective problem-solving through a structured thinking process.85.8k
- 6Timemodelcontextprotocol/serversA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.85.8k