Skip to main content
Glama
dkabx

MySQL MCP Server

by dkabx
README.md
# 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