mcp-mysql-server

keleshteri/mcp-mysql-server

3.1

If you are the rightful owner of mcp-mysql-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The MCP MySQL Server is a streamlined and efficient server designed for seamless interactions with MySQL databases through the Model Context Protocol, specifically tailored for integration with Claude Desktop.

MCP MySQL Server

A clean, simple, and well-organized Model Context Protocol (MCP) server for MySQL database interactions with Claude Desktop.

Features

  • šŸ” Query Execution: Run SQL queries with proper validation and security
  • šŸ—‚ļø Multi-Database Support: Switch between multiple databases easily
  • šŸ”’ Security First: Read-only by default, configurable write permissions
  • šŸ“Š Schema Discovery: Automatic database and table schema information
  • ⚔ Connection Pooling: Efficient database connection management
  • šŸ›”ļø Query Validation: Built-in SQL injection protection
  • šŸ“ Comprehensive Logging: Optional detailed logging for debugging

Quick Start

1. Clone and Install

git clone <your-repo-url>
cd mcp-mysql-server
npm install

2. Configure Environment

cp .env.example .env
# Edit .env with your MySQL credentials

3. Build

npm run build

4. Configure Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "mysql-server": {
      "command": "node",
      "args": ["/full/path/to/mcp-mysql-server/dist/index.js"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306", 
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database",
        "ENABLE_LOGGING": "true"
      }
    }
  }
}

Configuration Options

Basic Connection

  • MYSQL_HOST: Database host (default: localhost)
  • MYSQL_PORT: Database port (default: 3306)
  • MYSQL_USER: Database username (default: root)
  • MYSQL_PASSWORD: Database password
  • MYSQL_DATABASE: Target database (leave empty for multi-DB mode)
  • MYSQL_SOCKET_PATH: Unix socket path (optional, overrides host/port)

Security & Permissions

  • ALLOW_WRITE: Enable all write operations (default: false)
  • ALLOW_INSERT: Enable INSERT statements (default: false)
  • ALLOW_UPDATE: Enable UPDATE statements (default: false)
  • ALLOW_DELETE: Enable DELETE statements (default: false)
  • ALLOW_DDL: Enable DDL operations CREATE/ALTER/DROP (default: false)

Performance Settings

  • POOL_SIZE: Connection pool size (default: 10)
  • QUERY_TIMEOUT: Query timeout in milliseconds (default: 30000)

Logging

  • ENABLE_LOGGING: Enable detailed logging (default: false)

Multi-Database Mode

Leave MYSQL_DATABASE empty to enable multi-database mode. This allows querying any database the MySQL user has access to.

Example queries in multi-DB mode:

-- Use qualified table names
SELECT * FROM database_name.table_name;

-- Switch databases
USE database_name;
SELECT * FROM table_name;

Security Best Practices

  1. Use Read-Only by Default: Only enable write operations when necessary
  2. Create Dedicated MySQL User: Don't use root account
  3. Limit Database Access: Grant permissions only to required databases
  4. Backup Before Writes: Always backup data before enabling write operations
  5. Monitor Query Logs: Enable logging to track database activities

Project Structure

src/
ā”œā”€ā”€ config/         # Configuration management
ā”œā”€ā”€ database/       # Database connection and management  
ā”œā”€ā”€ handlers/       # MCP request handlers
ā”œā”€ā”€ types/          # TypeScript type definitions
└── utils/          # Utility functions (logger, validator)

Development

# Development mode with auto-reload
npm run dev

# Watch mode for building
npm run watch

# Run tests
npm test

# Lint code
npm run lint