# MySQL MCP Server
A Model Context Protocol (MCP) server that provides MySQL database access tools for AI assistants like Cursor.
## Overview
This MCP server enables AI assistants to interact with MySQL databases by providing three essential tools:
- Execute SQL queries
- Describe table structures
- List all database tables
## Features
- **Query Execution**: Run any SQL query against your MySQL database
- **Table Description**: Get detailed schema information for any table
- **Table Listing**: View all tables in your database
- **Error Handling**: Comprehensive error handling for database operations
- **MCP Protocol Compliance**: Fully compatible with MCP 2024-11-05 specification
## Prerequisites
- Node.js (v14 or higher)
- MySQL database (local or remote)
- Cursor IDE (for MCP integration)
## Installation
1. Clone or download this repository
2. Install dependencies:
```bash
npm install
```
## Configuration
The server uses environment variables for database configuration:
- `MYSQL_HOST`: MySQL server hostname
- `MYSQL_USER`: Database username
- `MYSQL_PASSWORD`: Database password
- `MYSQL_DATABASE`: Database name
- `MYSQL_PORT`: MySQL port (default: 3306)
## Cursor Integration
To use this MCP server with Cursor, add the following configuration to your Cursor MCP settings file (`~/.cursor/mcp.json`):
```json
{
"mcpServers": {
"mysql-mcp": {
"label": "MySQL MCP",
"command": "node",
"args": ["/path/to/your/mysql-mcp-server.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_USER": "your-username",
"MYSQL_PASSWORD": "your-password",
"MYSQL_DATABASE": "your-database",
"MYSQL_PORT": "3306"
}
}
}
}
```
Replace `/path/to/your/mysql-mcp-server.js` with the actual path to your server file and update the environment variables with your database credentials.
## Available Tools
### 1. mysql_query
Execute any SQL query against the database.
**Parameters:**
- `query` (string): The SQL query to execute
**Example:**
```sql
SELECT * FROM users WHERE role = 'admin'
```
### 2. mysql_describe_table
Get the structure and schema information for a specific table.
**Parameters:**
- `table_name` (string): Name of the table to describe
**Example:**
```
mysql_describe_table("users")
```
### 3. mysql_list_tables
List all tables in the database.
**Parameters:**
None required.
## Usage Examples
Once configured in Cursor, you can use natural language to interact with your database:
- "Show me all tables in the database"
- "Describe the structure of the users table"
- "Get all admin users from the user table"
- "Show me recent appointments"
## Security Considerations
- **Database Credentials**: Store sensitive credentials securely and never commit them to version control
- **Query Permissions**: The server executes queries with the provided database user's permissions
- **Network Access**: Ensure your database is properly secured and accessible only from authorized sources
- **Input Validation**: While the server handles errors, always validate and sanitize inputs in production
## Troubleshooting
### Server Shows as Red in Cursor
- Check that all environment variables are correctly set
- Verify database connectivity
- Ensure Node.js and mysql2 package are properly installed
- Check Cursor's developer console for error messages
### Connection Errors
- Verify database host, port, and credentials
- Check network connectivity to the database
- Ensure the database allows connections from your IP
- Verify the database name exists
### "0 tools enabled" Error
- Restart Cursor after making configuration changes
- Check the MCP server file path in the configuration
- Ensure the server implements the MCP protocol correctly
## Development
### File Structure
```
mcp/
├── mysql-mcp-server.js # Main MCP server implementation
├── package.json # Node.js dependencies
└── README.md # This file
```
### Dependencies
- `mysql2`: MySQL client for Node.js with promise support
## Contributing
Feel free to submit issues, feature requests, or pull requests to improve this MCP server.
## License
This project is open source and available under the MIT License.
## Changelog
### v1.0.0
- Initial release
- Basic MCP protocol implementation
- Three core database tools (query, describe, list)
- Error handling and logging
- Cursor integration support