mysql-mcp-server
A Model Context Protocol (MCP) server that enables AI assistants to interact with MySQL databases. Query execution, schema inspection, and seamless integration with Claude, Cursor, and VSCode.
Documentation
MySQL MCP Server
A Model Context Protocol (MCP) server that provides MySQL database access through standardized tools.
Features
- Query Execution: Execute arbitrary SQL queries
- Schema Inspection: View table schemas
- Table Listing: List all tables in the database
- Query Analysis: Analyze query execution plans with optimization suggestions
Requirements
- Go 1.21+ (developed with Go 1.23.6)
- MySQL 5.7+ or MySQL 8.0+
- Make (for build commands)
Installation
Option 1: Download Pre-built Binary (Recommended)
Download the latest release for your platform:
Linux (amd64):
curl -L https://github.com/koh/mysql-mcp-server/releases/latest/download/mysql-mcp-server-linux-amd64.tar.gz | tar xz
chmod +x mysql-mcp-server
sudo mv mysql-mcp-server /usr/local/bin/macOS (Apple Silicon):
curl -L https://github.com/koh/mysql-mcp-server/releases/latest/download/mysql-mcp-server-darwin-arm64.tar.gz | tar xz
chmod +x mysql-mcp-server
mv mysql-mcp-server /usr/local/bin/macOS (Intel):
curl -L https://github.com/koh/mysql-mcp-server/releases/latest/download/mysql-mcp-server-darwin-amd64.tar.gz | tar xz
chmod +x mysql-mcp-server
mv mysql-mcp-server /usr/local/bin/Windows:
# Download from https://github.com/koh/mysql-mcp-server/releases/latest
# Extract mysql-mcp-server-windows-amd64.zip
# Add to PATH or move mysql-mcp-server.exe to a directory in PATHOption 2: Build from Source
1. Clone the repository:
git clone https://github.com/koh/mysql-mcp-server.git
cd mysql-mcp-server2. Install dependencies and build:
make build
# Or use make setup for full development setupVerify Installation
After installation, verify the server is accessible:
mysql-mcp-server --versionConfiguration
The server uses environment variables for MySQL connection configuration:
- `MYSQL_HOST`: MySQL server host (default: localhost)
- `MYSQL_PORT`: MySQL server port (default: 3306)
- `MYSQL_USER`: MySQL username
- `MYSQL_PASSWORD`: MySQL password
- `MYSQL_DATABASE`: Database name to connect to
You can copy `.env.example` to `.env` and modify it with your credentials:
cp .env.example .envUsage
With Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Windows: `%APPDATA%\Claude\claude_desktop_config.json`
{
"mcpServers": {
"mysql": {
"command": "mysql-mcp-server",
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}Direct Usage
Run the server directly:
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=root
export MYSQL_PASSWORD=password
export MYSQL_DATABASE=testdb
./mysql-mcp-serverAvailable Tools
query
Execute SELECT queries to retrieve data from MySQL database. This tool is restricted to SELECT statements only for safety. Use the `execute` tool for data modification operations.
Parameters:
- `query` (required): SELECT statement only
- `format` (optional): Output format - `json`, `table`, `csv`, or `markdown` (default: `table`)
Example:
{
"name": "query",
"arguments": {
"query": "SELECT * FROM users WHERE status = 'active' LIMIT 10",
"format": "csv"
}
}execute
Execute INSERT, UPDATE, DELETE queries with safety checks. This tool implements a two-step execution process for safety:
1. First run with `dry_run=true` to preview affected rows
2. Then run with `dry_run=false` and the confirmation token to execute
Parameters:
- `sql` (required): INSERT, UPDATE, or DELETE statement
- `dry_run` (optional): If true, shows affected rows without executing (default: true)
- `confirm_token` (optional): Token from dry-run response, required when dry_run=false
Example - Step 1 (Dry Run):
{
"name": "execute",
"arguments": {
"sql": "UPDATE users SET status = 'inactive' WHERE last_login 25",
"analyze": true
}
}Note: EXPLAIN ANALYZE actually executes the query to gather real execution statistics, including actual row counts and timing information. Use with caution on queries that modify data or take a long time to execute.
Integration with AI Tools
VSCode Integration
Option 1: Using MCP Client Extensions
Configure in VSCode settings.json:
{
"mcp.servers": {
"mysql": {
"command": "/path/to/mysql-mcp-server",
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "password",
"MYSQL_DATABASE": "mydb"
}
}
}
}Option 2: Custom VSCode Extension
Create a custom extension that spawns the MCP server. See INTEGRATION.md for implementation details.
Cursor Integration
Cursor supports MCP servers through its configuration:
1. Open Cursor Settings
2. Navigate to "AI" → "Model Context Protocol"
3. Add server configuration:
{
"mysql": {
"command": "/path/to/mysql-mcp-server",
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "password",
"MYSQL_DATABASE": "mydb"
}
}
}GitHub Copilot Integration
GitHub Copilot doesn't directly support MCP servers, but you can create a bridge through VSCode extensions. See INTEGRATION.md for detailed implementation.
Generic Integration Pattern
For any tool that supports subprocess communication:
const { spawn } = require('child_process');
class MCPClient {
constructor(serverPath, env) {
this.server = spawn(serverPath, [], { env });
// ... handle communication
}
async callTool(name, arguments) {
return this.request('tools/call', { name, arguments });
}
}
// Usage
const client = new MCPClient('/path/to/mysql-mcp-server', {
MYSQL_HOST: 'localhost',
MYSQL_USER: 'root',
MYSQL_PASSWORD: 'password',
MYSQL_DATABASE: 'mydb'
});For complete integration examples and troubleshooting, see INTEGRATION.md.
Testing
For detailed testing instructions, see TESTING.md.
Quick start:
# Setup and run interactive test client
make setup
make test-clientDevelopment
Run tests:
make testRun the server:
make runSecurity Considerations
- The `query` tool is restricted to SELECT statements only to prevent accidental data modification
- The `execute` tool requires a two-step confirmation process for all data modification operations
- Never expose this server to untrusted clients
- Use appropriate MySQL user permissions
- Consider using read-only database users when possible
- The dry-run feature allows you to preview the impact of UPDATE/DELETE operations before execution
- Confirmation tokens expire after 5 minutes for security
- Keep your database credentials secure
License
MIT
Frequently asked questions
What is mysql-mcp-server?
mysql-mcp-server is A Model Context Protocol (MCP) server that enables AI assistants to interact with MySQL databases. Query execution, schema inspection, and seamless integration with Claude, Cursor, and VSCode.
How do I install mysql-mcp-server?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mysql-mcp-server open source?
Yes — it is hosted on GitHub at https://github.com/koh-yoshimoto/mysql-mcp-server and has 2 stars.
Related MCP tools
eBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.
GOWA - WhatsApp REST API with support for UI, Multi Account, Webhooks, and MCP, and Chatwoot. Built with Golang for efficient memory use.
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnostics.
The Terraform MCP Server provides seamless integration with Terraform ecosystem, enabling advanced automation and interaction capabilities for Infrastructure as Code (IaC) development.
Run MATLAB® using AI applications with the official MATLAB MCP Server from MathWorks®. This MCP server for MATLAB supports a wide range of coding agents like Claude Code® and Visual Studio® Code.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP