Governed MySQL/MariaDB DBA ops: slow-query, lock-wait, replication & fragmentation RCA; 33 tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Oracle Corporation or the MariaDB Foundation. "MySQL" is a trademark of Oracle Corporation; "MariaDB" is a trademark of MariaDB plc; all product/trademark names belong to their respective owners. MIT licensed.
Governed AI-ops for MySQL 8.x and MariaDB 10.6+ DBA operations β connecting
to a server with PyMySQL and reading information_schema /
performance_schema β with a built-in governance harness: unified audit
log, token/runaway budget guard, undo-token recording, and descriptive
risk-tier labels. The server flavor (mysql vs mariadb) is
detected from version() and flavor-dependent statements branch automatically
(SHOW REPLICA STATUS vs SHOW SLAVE STATUS).
Four flagship signature analyses, plus the guarded reads and writes around them:
events_statements_summary_by_digest
entry (plus an optional EXPLAIN FORMAT=JSON plan) and map its numbers β
no-index share (SUM_NO_INDEX_USED), lock-time share, rows-examined/sent
ratio, tmp-disk spill, call count, plan access types β to a cited cause and a
concrete action. Every finding carries its measured number, not a black-box
verdict.performance_schema.data_lock_waits (MariaDB:
information_schema.innodb_lock_waits), name the root blocker (blocks
others, waits on none), and parse the last deadlock out of
SHOW ENGINE INNODB STATUS.Seconds_Behind_Source and error fields to a cited cause + action
(stopped IO thread, failed applier statement, lagging applier, intentional
SQL_Delay).data_free
from information_schema.tables into cited OPTIMIZE TABLE candidates.mysql-aiops ...): init, overview, server, activity, query, index, table, repl, analyze, remediate, secret, doctor, mcp.mysql-aiops mcp or mysql-aiops-mcp): 35 tools (26 read, 9 write), every one wrapped with the bundled @governed_tool harness.~/.mysql-aiops/secrets.enc (Fernet + scrypt) β never plaintext on disk. Unlock with a master password from MYSQL_AIOPS_MASTER_PASSWORD (MCP/CI) or an interactive prompt (CLI).create_indexβdrop_index; drop_index captures the index definition out of SHOW CREATE TABLE so undo recreates it exactly; set_global_variable captures the prior value from SHOW GLOBAL VARIABLES so undo sets it back. Irreversible ops (kill_session, kill_query, optimize_table, analyze_table, reset_query_stats) record prior state for audit but declare no undo.--dry-run and requires double confirmation; every write MCP tool takes a dry_run preview. All identifiers that cannot be parameterised (schema/table/index/column/variable names) are validated against a strict charset and backtick-quoted; all values are bound query parameters.It delivers MySQL / MariaDB DBA operations β reads and writes β accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the account you connect it with: point it at a MySQL/MariaDB account granted only SELECT / PROCESS / REPLICATION CLIENT and no write privileges (no INSERT/UPDATE/DELETE/DDL), and the writes fail at the server β the place that actually owns the permission.
So there is no read-only switch, no policy file, no approval gate to configure. The one
thing the tool guarantees is that nothing is silent: every call, over MCP and over the
CLI alike, lands an audit row in ~/.mysql-aiops/audit.db, and destructive writes still
capture their before-state and record an inverse where one exists.
Each tool declares a
risk_level, carried into the audit row as a descriptive tier (none/confirm/review) β so a reviewer can see at a glance that a row was a high-risk delete. It is a label, not a gate.
Running a smaller / local model? See agent-guardrails.md β it lists the guardrails this tool now enforces for you (so you don't spend prompt budget restating them) and gives a ready-made system prompt for what's left.
| Domain | Tools | Count | R/W |
|---|---|---|---|
| Overview | overview | 1 | read |
| Server | server_version, show_variables, show_status, list_databases, list_engines, connection_stats | 6 | read |
| Activity | list_sessions, long_running_queries, list_transactions, lock_waits | 4 | read |
| Queries | top_queries, explain_query | 2 | read |
| Indexes | unused_indexes, redundant_indexes, index_stats | 3 | read |
| Tables | table_sizes, table_fragmentation, table_status | 3 | read |
| Replication | replica_status, binlog_status | 2 | read |
| Analysis (flagship) | slow_query_rca, lock_wait_rca, replication_lag_rca, fragmentation_analysis | 4 | read |
| Writes | kill_session, kill_query, drop_index | 3 | write (high) |
optimize_table, analyze_table, create_index, set_global_variable, reset_query_stats | 5 | write (medium) | |
| Undo | undo_list, undo_apply | 2 | read / write |
The flagship analyses accept injected records for pure/offline analysis, or pull
live from a configured target. top_queries/slow_query_rca require
performance_schema=ON; the read account should have PROCESS,
REPLICATION CLIENT and SELECT on performance_schema.
| Platform | Status |
|---|---|
| MySQL 8.0 / 8.4 | targeted (SHOW REPLICA STATUS, performance_schema.data_lock_waits) |
| MariaDB 10.6+ / 11.x | targeted (SHOW SLAVE STATUS, information_schema.innodb_lock_waits) |
| MySQL 5.7 and older | not targeted (EOL; pre-8.0 digest/lock views untested) |
| Cloud-managed MySQL (RDS/Aurora/Cloud SQL flavors) | wire-compatible reads should work; managed restrictions (KILL, SET GLOBAL) apply β untested |
One install gives an agent both the skill and the MCP server:
The MCP server is fetched with uv and pinned to the
package version this plugin declares, so an audit row can be traced back to the
code that wrote it. Credentials are still configured with mysql-aiops init β see below.
The same bundle is published on ClawHub, where one install delivers the skill and its MCP server together:
Restart the OpenClaw gateway afterwards so it loads the plugin. The MCP server is
fetched with uv, pinned to this exact release, so
uvx has to be on PATH β without it the skill still installs but reports
Visible to model: no. Credentials are configured exactly as below.
Run as an MCP server (stdio):
Where that password then lives: an exported variable is readable by every process this shell starts and is recorded by shell history. On a shared or long-lived host, prefer the interactive prompt, or inject it from a secret manager for the life of the one command that needs it.
Claude Desktop / MCP client config:
Env-block caveat: the
envblock above is the only environment the MCP server sees β GUI-launched clients do not inherit your shell profile. PutMYSQL_AIOPS_MASTER_PASSWORD(andMYSQL_AIOPS_HOME/MYSQL_AUDIT_APPROVED_BYif you use them) there, or the server cannot unlock the secret store.
Every MCP tool passes through the bundled @governed_tool harness:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mysql-aiops)<a href="https://allmcps.com/mcp/mysql-aiops"><img src="https://allmcps.com/api/badge/mysql-aiops?style=directory" alt="MySQL AIops on AllMCPs" /></a>