Skip to main content
Glama
raviraj-ntp

mysql-mcp

by raviraj-ntp

MySQL MCP

Feature-rich MCP server for MySQL and MariaDB with multi-connection support. Connect many instances at once — query schemas, run scripts, test stored procedures with sandbox rollback.

  • npm: @raviraj87/mysql-mcp

  • Runs locally via stdio (any MCP-compatible client)

  • Supports MySQL 5.7+, 8.x, MariaDB 10.x–11.x, InnoDB/Aria/MyISAM


Quick start

Connect to the MySQL server — no database required in the URI. Use list_databases, then pass database on each tool call (or set default_database in config).

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["-y", "@raviraj87/mysql-mcp"],
      "env": {
        "MYSQL_URI": "mysql://user:pass@localhost:3306"
      }
    }
  }
}

Typical workflow

  1. list_databases — discover databases on the server

  2. Pick a database (agent asks, or you pass it explicitly)

  3. list_tables, query, etc. with "database": "myapp"

Optional: set default_database in YAML so tools skip the database param for that connection.

Multiple connections — copy config.example.yaml~/.mysql-mcp.yaml:

default_connection: local
connections:
  local:
    uri_env: MYSQL_URI
    default_database: myapp   # optional — omit to choose per tool call
  staging:
    uri_env: MYSQL_URI_STAGING
  prod:
    uri_env: MYSQL_URI_PROD
    read_only: true

Set URIs in MCP env. Every tool accepts optional connection: "staging".

Extra connections via env:

MYSQL_EXTRA_CONNECTIONS=staging:MYSQL_URI_STAGING,prod:MYSQL_URI_PROD

Server vs database

Level

Config

Example

Server

MYSQL_URI host only

mysql://user:pass@host:3306

Default DB

default_database in YAML (optional)

myapp

Per tool

database param

{ "database": "nsm", "table": "users" }

Tools like ping, list_databases, and server_info work without a database. Schema/query tools require database or default_database.


Related MCP server: mcp-server-sqlite

Tools (~55)

Connection: list_connections, ping, server_info, connect

Metadata: list_databases, list_tables, describe_table, show_create_table, list_indexes, list_foreign_keys, table_stats, list_views, list_triggers, list_events

Read: query, query_one, explain, count, sample_rows, distinct_values, export_query

Write: execute, execute_batch, insert_rows, delete_rows, truncate_table

Routines: list_procedures, list_functions, describe_procedure, show_create_procedure, show_create_function, call_procedure, call_function, test_procedure, create_procedure, drop_procedure, routine_overview

Scripts: split_script, validate_script, run_script, test_script, load_script_file, run_script_with_vars

Admin: execute_ddl, create_database, drop_database, create_index, drop_index, show_grants

Diagnostics: processlist, status, variables, innodb_status, replication_status, kill_query, health_check

Composite: explore_table, database_overview, analyze_query, compare_tables, index_health


Stored procedures & scripts

Test a procedure (rollback by default):

{
  "tool": "test_procedure",
  "arguments": {
    "database": "myapp",
    "procedure": "sp_create_order",
    "params": { "p_customer_id": 42, "p_amount": 99.99 },
    "setup_sql": ["INSERT INTO customers (id) VALUES (42)"]
  }
}

Test a SQL script:

{
  "tool": "test_script",
  "arguments": {
    "database": "myapp",
    "script": "DELIMITER $$\nCREATE PROCEDURE ...\nEND$$\nDELIMITER ;\nCALL my_proc(1);"
  }
}

split_script handles DELIMITER changes. Sandbox rollback requires InnoDB/Aria unless compatibility.allow_myisam_sandbox: true.


Safety

  • Global or per-connection read_only

  • max_rows auto-LIMIT on SELECT

  • query_timeout_ms via session max_execution_time / max_statement_time

  • explain_check — reject full table scans

  • confirmation_required_tools — destructive ops need confirmed: true

  • test_sandbox_default: true — scripts/SP tests roll back unless committed

  • allowed_databases per connection

  • Blocks INTO OUTFILE, LOAD DATA, SHUTDOWN


Install from source

cd mysql-mcp
npm install
npm run build
{
  "command": "node",
  "args": ["/path/to/mysql-mcp/dist/index.js"]
}

License

Copyright © 2026 Ravi Raj. Licensed under the MIT License.

Install Server
A
license - permissive license
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure 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/raviraj-ntp/mysql-mcp'

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