Submit

Production Safe Mysql Mcp Server

@turkeryildirim

A Model Context Protocol (MCP) server that gives AI agents direct access to MySQL databases even on production environments.
Overview

What It Can Do

Data Query & Mutation

  • execute_query — Run SELECT, INSERT, UPDATE, or DELETE statements with parameterized query support (? placeholders)
  • execute_transaction — Execute multiple statements as an atomic batch; if any statement fails the entire transaction is automatically rolled back

Schema Management

  • create_table — Create a new table
  • alter_table — Add/drop columns, rename columns, add indexes, and more
  • drop_table — Drop a table (requires ALLOW_DESTRUCTIVE_DDL=true)
  • show_tables — List all tables in a database
  • describe_table — Show column structure of a table

Database Management

  • list_databases — List all user databases (system databases excluded)
  • create_database — Create a new database with optional charset and collation
  • drop_database — Drop a database (requires ALLOW_DESTRUCTIVE_DDL=true)

Introspection

  • ping — Check MySQL connection health
  • show_columns — Show detailed column information for a table
  • get_server_info — Return MySQL version, character set, and collation (read-only)

Multi-Database Support

Every tool accepts a database parameter. You can query different databases within the same session without any extra configuration.


What It Cannot Do

The following operations are permanently blocked by the security filter and cannot be bypassed under any circumstances:

CategoryBlocked Commands
MySQL settingsSET GLOBAL, SET @@global.*, SET @@SESSION.sql_mode
User managementCREATE USER, DROP USER, ALTER USER, RENAME USER
Privilege managementGRANT, REVOKE
System commandsFLUSH, KILL, SHUTDOWN
ReplicationRESET MASTER/REPLICA, START/STOP SLAVE/REPLICA, CHANGE MASTER
File accessLOAD DATA INFILE, SELECT INTO OUTFILE/DUMPFILE
PluginsINSTALL PLUGIN, UNINSTALL PLUGIN

Additional constraints:

  • Multiple statements separated by ; in a single call are not allowed — use execute_transaction instead
  • drop_table and drop_database are disabled by default and will return an error unless ALLOW_DESTRUCTIVE_DDL=true is set
  • Query results are capped at MAX_ROWS rows (default: 1000); add a LIMIT clause for large tables

Server Config

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": [
        "/absolute/path/to/mysql-mcp/dist/index.js"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp_user",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "",
        "MAX_ROWS": "1000",
        "ALLOW_DESTRUCTIVE_DDL": "false"
      }
    }
  }
}
© 2025 MCP.so. All rights reserved.

Build with ShipAny.