MySQL MCP server has 10 tools with basic schemas and descriptions, but significant gaps prevent production use. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization) and input schemas are present but minimal. Critical issues: (1) No parameter descriptions, every tool's parameters lack explanatory text, violating the 100% baseline for A+ tools. (2) No output schema documentation, responses are unstructured JSON with no field definitions, forcing LLMs to guess at result structure. (3) No error handling guidance, errors return raw exception messages instead of actionable recovery steps. (4) SQL injection risk in query/execute_ddl tools, user input passed directly to JDBC without sanitization. (5) Missing tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. (6) No pagination support despite query potentially returning thousands of rows. Naming is acceptable (verb_noun pattern: query, list_tables, describe_table, execute_ddl) but descriptions are too terse to guide LLM selection.
Get detailed information about a table's structure
Execute DDL (Data Definition Language) statements
List all databases available on the MySQL server
List all tables in the current database
Execute a SQL query against the MySQL database
Show the current process list on the MySQL server
Show MySQL server status variables
No parameter descriptions on any tool. Every parameter (sql, table_name, pattern) lacks explanatory text. LLMs cannot infer meaning from names alone, 'pattern' could mean regex, glob, or substring match.
No output schema documentation. Tools return unstructured JSON (success, rowCount, data array) with no field type definitions. LLMs cannot plan downstream calls or extract typed data.
SQL injection vulnerability. query and execute_ddl accept raw SQL strings and pass them directly to JDBC without sanitization. Malicious input like 'DROP TABLE users; --' executes unfiltered.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
Show all constraints for a specific table
Show all indexes for a specific table
Show MySQL server configuration variables
No error handling guidance. Errors return raw DataAccessException messages (e.g. 'SQL execution failed: ...'). LLMs receive no actionable recovery steps, should suggest alternatives like search_tables() if table not found.
Missing tool annotations. execute_ddl is destructive (WRITE risk) but lacks destructiveHint annotation. query and read-only tools lack readOnlyHint. Agents cannot distinguish safe from unsafe operations.