A Model Context Protocol (MCP) server for MySQL databases, including support for AWS RDS and other cloud MySQL instances. This server provides comprehensive database management capabilities through a standardized MCP interface.
đź“‹ Quick Start for VS Code Users: See VSCODE_SETUP.md for step-by-step VS Code and GitHub Copilot integration instructions.
- âś… Database Connection Management: Connect to local MySQL or cloud instances (AWS RDS, Google Cloud SQL, etc.)
- âś… Query Execution: Execute SQL queries with prepared statement support
- âś… Schema Inspection: List databases, tables, and describe table structures
- âś… Index Management: View table indexes and statistics
- âś… Security: Secure connection handling with SSL support
- âś… Error Handling: Comprehensive error reporting and connection management
npm install -g @sajithrw/mcp-mysql@1.0.0
Or run ad‑hoc without global install using npx
(shown later in config).
git clone https://github.com/sajithrw/mcp-mysql.git
cd mcp-mysql
npm install
npm run build
Create (or update) .vscode/mcp.json
in your project or in your global VS Code user settings folder. Use the published package via npx
so you always invoke the correct version.
{
"servers": {
"mcp-mysql": {
"type": "stdio",
"command": "npx",
"args": [
"@sajithrw/mcp-mysql@1.0.0"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
Then:
- Reload VS Code window (Command Palette: "Developer: Reload Window").
- Open Command Palette and run: "MCP: Start Server" (pick
mcp-mysql
). - Use Copilot / MCP clients to call tools (e.g., ask to list tables).
Previous
settings.json
basedgithub.copilot.advanced.mcp
configuration is deprecated in favor ofmcp.json
discovery.
If working from a local clone/build instead of the published package:
{
"servers": {
"mcp-mysql": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mcp-mysql/build/index.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password"
}
}
}
}
Add the server to your Claude Desktop configuration:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["@sajithrw/mcp-mysql@1.0.0"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password"
}
}
}
}
For testing and development:
npx @modelcontextprotocol/inspector npx @sajithrw/mcp-mysql@1.0.0
Once configured, you can use the MySQL MCP server with GitHub Copilot in VS Code to interact with your databases using natural language.
-
Database Exploration:
- "Show me all tables in the database"
- "Describe the structure of the users table"
- "What indexes are on the products table?"
-
Data Analysis:
- "Show me the top 10 customers by order count"
- "Find all users created in the last 30 days"
- "Get statistics about the orders table"
-
Schema Management:
- "List all databases on this server"
- "Show me table sizes and row counts"
- "Find tables with specific column names"
- Create
.vscode/mcp.json
with config above. - Reload VS Code window.
- Run "MCP: Start Server".
- Use Copilot Chat / MCP-aware client to issue requests.
- Ensure the package version (
1.0.0
) matches what you intend to use. - If the server won't start, run it manually:
npx @sajithrw/mcp-mysql@1.0.0
to see logs. - Verify environment variables are present (you can also place them in a
.env
if your shell loads them before launching VS Code).
Connect to a MySQL database.
Parameters:
host
(required): MySQL server hostname or IP addressport
(optional): MySQL server port (default: 3306)user
(required): Database usernamepassword
(required): Database passworddatabase
(optional): Database name to connect tossl
(optional): Use SSL connection (default: false)
Example:
{
"host": "localhost",
"port": 3306,
"user": "myuser",
"password": "mypassword",
"database": "mydb",
"ssl": false
}
Execute a SQL query on the connected database.
Parameters:
query
(required): SQL query to executeparameters
(optional): Array of parameters for prepared statements
Examples:
Simple query:
{
"query": "SELECT * FROM users LIMIT 10"
}
Prepared statement:
{
"query": "SELECT * FROM users WHERE age > ? AND city = ?",
"parameters": ["25", "New York"]
}
List all databases on the MySQL server.
Parameters: None
List all tables in the current or specified database.
Parameters:
database
(optional): Database name (uses current database if not specified)
Get the structure/schema of a specific table.
Parameters:
table
(required): Table name to describedatabase
(optional): Database name (uses current database if not specified)
Show indexes for a specific table.
Parameters:
table
(required): Table name to show indexes fordatabase
(optional): Database name (uses current database if not specified)
Get statistics about a table (row count, size, etc.).
Parameters:
table
(required): Table name to get statistics fordatabase
(optional): Database name (uses current database if not specified)
Disconnect from the MySQL database.
Parameters: None
{
"host": "mydb.abc123.us-west-2.rds.amazonaws.com",
"port": 3306,
"user": "admin",
"password": "mypassword",
"database": "production",
"ssl": true
}
- Connect to database using
mysql_connect
- List all databases with
mysql_list_databases
- List tables with
mysql_list_tables
- Describe specific tables with
mysql_describe_table
- Check indexes with
mysql_show_indexes
- Connect to database
- Execute analytical queries with
mysql_query
- Get table statistics with
mysql_get_table_stats
- Credentials: Never hardcode database credentials. Use environment variables or secure configuration management.
- SSL/TLS: Always use SSL when connecting to production databases or cloud instances.
- Permissions: Use database users with minimal required permissions.
- Query Validation: The server uses prepared statements to prevent SQL injection.
You can set default connection parameters using environment variables:
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=myuser
export MYSQL_PASSWORD=mypassword
export MYSQL_DATABASE=mydb
export MYSQL_SSL=true
npm run build
npm run test
npm run dev
- Connection Refused: Check that MySQL server is running and accessible
- Authentication Failed: Verify username and password
- SSL Errors: Ensure SSL is properly configured on both client and server
- Timeout: Check network connectivity and firewall settings
"Not connected to MySQL"
: Usemysql_connect
before executing other commands"Query execution failed"
: Check SQL syntax and table/column names"Connection failed"
: Verify connection parameters and network connectivity
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details.