Skip to main content
Glama
keleshteri

MCP MySQL Server

by keleshteri

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
-
security - not tested
F
license - not found
-
quality - not tested

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/keleshteri/mcp-mysql-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server