mysql-legacy-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool has a distinct, non-overlapping purpose: ping for connectivity, select for queries, and the rest for metadata (databases, tables, columns, DDL, indexes). There is no ambiguity between tools, and an agent can reliably choose the right one.
Naming Consistency5/5All tools follow the exact same 'mysql_legacy_' prefix with a verb_noun pattern (select, list_databases, describe_table). The naming is predictable, consistent, and adheres to a single convention, making it easy to infer functionality.
Tool Count5/5Seven tools is a well-scoped number for a read-only MySQL metadata and query server. Each tool earns its place: ping, select, and four metadata operations cover the core needs without bloat or redundancy.
Completeness4/5The surface covers the essential read-only operations: connectivity check, arbitrary SELECTs, database/table listing, table structure, DDL definition, and indexes. It lacks advanced metadata (e.g., variables, status, grants) but these are minor gaps for the stated legacy read-only purpose.
Average 3.9/5 across 7 of 7 tools scored. Lowest: 2.7/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description is the only source of behavior. It states read-only, which is helpful, but lacks details like whether it requires specific privileges or what the output format is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, one sentence front-loaded with intent. No wasted words, though it could be slightly more detailed within the same space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness1/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and minimal parameter documentation, this description is incomplete. It fails to mention output structure, prerequisites, or any edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the parameters beyond naming them. An agent gets no additional meaning for database or table beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists columns via SHOW FULL COLUMNS for a specified database and table, distinguishing it from siblings like list_tables and show_create_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It implies use for column information, but doesn't contrast with show_create_table or list_indexes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the important read-only trait and the fact that a definition is returned. However, it does not describe the return format, behavior for missing tables, or permission requirements, leaving the agent with a minimal but not complete behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence, front-loads the main purpose, and appends the read-only caveat. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only tool, the description covers the essential purpose, parameter positions, and safety trait. However, it omits the return type/structure and any sibling-selection guidance, so an agent may be uncertain about how to interpret the result or when to prefer this over describe_table.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does this well by embedding both parameters in the SHOW CREATE TABLE <database>.<table> pattern, clarifying their roles and ordering. For two simple string parameters, this is sufficient, though it adds no extra constraints or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Returns the definition'), the exact resource (SHOW CREATE TABLE for a given database.table), and marks the operation as read-only. This makes it easy to distinguish from sibling tools like mysql_legacy_describe_table or mysql_legacy_select even without explicitly naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as mysql_legacy_describe_table, mysql_legacy_list_tables, or mysql_legacy_list_indexes. The SQL command name implies a use case, but the description does not state it explicitly or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because annotations are absent, the description is the sole source of behavioral information. It explicitly labels the tool as read-only and reveals the exact SQL syntax, which is useful. However, it does not disclose authorization requirements, error behavior, or the type of result rows returned, leaving a partial outlook.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and the underlying SQL, ending with a useful safety note. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with only two required parameters and no output schema, the description covers the basic invocation and reveals the SQL command. It doesn't describe the exact result structure of SHOW INDEX or error conditions, but it is enough for the agent to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It clearly maps the parameters to the placeholders in the SHOW INDEX statement (<database> and <table>), giving useful meaning beyond the raw schema types. It doesn't describe how the parameters behave for special cases, but it suffices for basic usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Lists') and resource ('indexes from a table') and gives the exact SQL command ('SHOW INDEX FROM <database>.<table>'), making it clearly distinguishable from sibling tools like list_tables or describe_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives. It offers no mention of when the SQL or when to prefer describe_table or show_create_table. The read-only flag implies safe use but not actionable direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses a key behavior beyond the name: system databases are hidden by default based on MYSQL_LEGACY_HIDE_SYSTEM_DATABASES. This gives useful context about filtering behavior, though it does not explicitly state read-only semantics or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core operation is front-loaded, followed by the important default-filtering behavior. Every sentence contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-boolean list tool, the description is largely complete: it names the operation, the SQL method, and the default behavior. The lack of an output schema is not a major issue since listing databases implies returning database names, but explicit mention of response format would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema, so schema description coverage is 100%. The description does not need to re-explain the parameter, but it also does not add extra semantic value beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Lists databases using SHOW DATABASES.' It names a specific verb, resource, and even the underlying MySQL command. The resource 'databases' inherently distinguishes it from sibling tools like mysql_legacy_list_tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and resource: use this when you need to list databases. However, there is no explicit guidance about when to prefer this tool over alternatives, nor any mention of exclusions or prerequisites. The description does not route users away from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly discloses that the operation is read-only and names the exact SQL command, which is significant behavioral context for a tool. It doesn't discuss permission requirements or output details, but for a simple SHOW command this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The primary action is front-loaded, the SQL semantics are compactly included, and the read-only trait is crisply stated. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter listing tool with no output schema, the description is nearly complete: it says what is listed, how it is listed, and the database source. It could add a little more about output shape or permission behavior, but SHOW FULL TABLES is a well-known operation and the given context is sufficient in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only the 'database' string with min/max length and no description. The description's command template 'FROM <database>' clearly indicates that the parameter is the database whose tables should be listed, adding meaning beyond the bare schema. For a single obvious parameter this is sufficient compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lists'), a precise resource ('base tables and views'), and the implementation approach ('SHOW FULL TABLES FROM <database>'). This clearly distinguishes it from siblings like mysql_legacy_list_databases, mysql_legacy_describe_table, or mysql_legacy_ping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied by the description: use this to enumerate tables/views in a given database. However, there is no explicit guidance about when to prefer this over sibling tools or any exclusions, leaving the agent to infer the decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses read-only behavior, rejects SELECT INTO and locking reads, and names result limits. It could also explain what happens when a limit is exceeded, but the core safety and constraints are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the main action front-loaded. Every clause adds useful constraint information, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool, the description covers the key invocation constraints and safety behavior. There is no output schema, and the description does not specify the return shape or limit-exceeded behavior, but this is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single sql parameter. The description adds context about read-only and compatibility but does not meaningfully extend parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Executes'), a precise resource ('exactly one read-only SELECT statement'), and the key scoping rule. This clearly distinguishes it from sibling metadata tools like mysql_legacy_list_tables or mysql_legacy_describe_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this tool is for executing SELECT queries, while the sibling names cover connectivity, listing, and schema inspection. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without any annotations, the description carries the full burden and does well by stating it is read-only and revealing the exact query. It does not elaborate on error handling or response format, but for a simple ping that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The core purpose and read-only nature are front-loaded, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter ping tool, the description is sufficient. It specifies the action and the read-only nature, and the query implies a version result. It does not explicitly describe the return format, but that is minor for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so no parameter explanation is needed. The description adds nothing about parameters, but that is appropriate given the tool takes none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the legacy MySQL connection and specifies the exact query used. This distinguishes it from sibling tools that handle data operations (select, list, etc.), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it obvious this is for connectivity verification, and since siblings are all data operations, there is no confusion about when to use it. However, it does not explicitly contrast with alternatives or state exclusions, so a perfect score is not warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md: