Skip to main content
Glama
Rufflet

mysql-legacy-mcp

by Rufflet

mysql-legacy-mcp

MCP queries and schema inspection for legacy MySQL 5.0–5.6 deployments, built around MySQL 5.1-compatible SQL.

Compatibility across this range is not yet verified. This server uses mysql (mysqljs), SHOW metadata queries, and a SELECT-only tool interface. It does not expose old-password authentication, custom charset, or TLS options.

Is this for you?

  • Your MySQL MCP server fails or hangs when connecting to MySQL 5.1 or 5.5.

  • Schema inspection expects newer information_schema fields, JSON functions, or transaction features your database lacks.

  • You need to inspect a legacy ERP, CRM, or application database without exposing a write tool.

  • You found ER_NOT_SUPPORTED_AUTH_MODE, “Client does not support authentication protocol requested by server”, or “Old password authentication is not supported”. Read the limitations below: switching to this package is not a guaranteed fix.

  • You are looking for insecureAuth, working with latin1 / cp1251, or diagnosing an old MySQL TLS handshake. These are relevant limitations, not implemented features.

The error phrases above are diagnostic search terms, not a record of failures reproduced by this project.

Related MCP server: MCP MySQL Server

MySQL compatibility

No live test results are recorded in this repository. A live smoke script exists; its presence is not evidence that a version passed.

MySQL version

Status

Basis and limitations

5.0

Untested; likely compatible with appropriate authentication

Built-in tools use older SELECT / SHOW syntax. No patch-level verification; pre-4.1 password authentication is disabled.

5.1

Intended target; live verification pending

Original implementation targets 5.1. Exact version, authentication, and encoding results need recording.

5.5

Untested; likely compatible

No newer server features required by built-in tools; same authentication and transport limits.

5.6

Untested; likely compatible

Same SQL approach; user-supplied queries must still suit the server.

There is no version negotiation or SQL rewriting. mysql_legacy_ping reports VERSION(); it does not enable version-specific behavior. Modern authentication such as caching_sha2_password is outside this package's intended scope.

How it compares

Server

Minimum supported MySQL version

Focus

mysql-legacy-mcp

Not established by live tests; targets 5.0–5.6

SELECT-only tools and SHOW-based schema inspection; no TLS or auth configuration

@benborla29/mcp-server-mysql

5.7+; 8.0+ recommended

Broader features including TLS, SSH tunneling, and optional writes

Based on the other project's requirements, reviewed on 2026-09-09. This is not a benchmark or a claim about every MySQL MCP server.

Installation and Quick Start

Requires Node.js >=18.14.1 and npm. Use a currently maintained Node.js release for deployment. This is a local stdio MCP server: your client launches it as a child process.

The npm commands below are for the first published release. Until then, run npm ci in this checkout and configure your client to launch node with the absolute path to src/server.js.

Use a dedicated database account with only the needed SELECT and metadata access. Do not grant FILE, EXECUTE, or write privileges. Results are sent to your AI client. The database connection is unencrypted TCP: use a trusted local connection or an independently secured tunnel.

Claude Code

Replace the example values. The command stores credentials in client configuration and may leave them in shell history; use the client's secret handling where available.

claude mcp add --transport stdio mysql-legacy --env MYSQL_LEGACY_HOST=127.0.0.1 --env MYSQL_LEGACY_USER=legacy_reader --env MYSQL_LEGACY_PASSWORD=replace-with-a-secret --env MYSQL_LEGACY_DATABASE=legacy_app -- npx -y mysql-legacy-mcp

Restart Claude Code, then ask it to call mysql_legacy_ping. Claude Code MCP documentation.

Cursor

Merge into project .cursor/mcp.json or user ~/.cursor/mcp.json. Keep real credentials out of version control.

{
  "mcpServers": {
    "mysql-legacy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mysql-legacy-mcp"],
      "env": {
        "MYSQL_LEGACY_HOST": "127.0.0.1",
        "MYSQL_LEGACY_USER": "legacy_reader",
        "MYSQL_LEGACY_PASSWORD": "replace-with-a-secret",
        "MYSQL_LEGACY_DATABASE": "legacy_app"
      }
    }
  }
}

Restart Cursor after saving. Cursor MCP documentation.

For Claude Desktop, Codex, VS Code, Windsurf, Gemini CLI, OpenCode, Qwen Code, and other clients, see the installation guide.

Configuration reference

Set variables on the MCP server process. The server does not read .env files itself. Empty values are treated as absent; an empty password is not accepted.

Variable

Default

Meaning

MYSQL_LEGACY_HOST

Required

Database host or local tunnel endpoint

MYSQL_LEGACY_PORT

3306

TCP port, 1–65535

MYSQL_LEGACY_USER

Required

Dedicated reader account

MYSQL_LEGACY_PASSWORD

Required

Nonempty account password

MYSQL_LEGACY_DATABASE

Unset

Optional default database for SELECT queries

MYSQL_LEGACY_HIDE_SYSTEM_DATABASES

true

Hide mysql and information_schema in listings; true / false

MYSQL_LEGACY_QUERY_TIMEOUT

10000

Driver query timeout, 100–60000 ms

MYSQL_LEGACY_MAX_ROWS

200

SELECT response row limit, 1–1000

MYSQL_LEGACY_MAX_RESULT_BYTES

262144

SELECT row-data JSON byte limit, 1024–1048576

Connection timeout is fixed at 10 seconds. There are no MYSQL_LEGACY_INSECURE_AUTH, MYSQL_LEGACY_CHARSET, or MYSQL_LEGACY_SSL settings; supplying them has no effect.

Tools and limits

Tool

SQL / behavior

mysql_legacy_ping

SELECT VERSION() AS version

mysql_legacy_select

One parsed SELECT statement

mysql_legacy_list_databases

SHOW DATABASES

mysql_legacy_list_tables

SHOW FULL TABLES FROM <database>

mysql_legacy_describe_table

SHOW FULL COLUMNS FROM <database>.<table>

mysql_legacy_show_create_table

SHOW CREATE TABLE <database>.<table>

mysql_legacy_list_indexes

SHOW INDEX FROM <database>.<table>

The SELECT tool rejects parse failures, multiple statements, non-SELECT statements, SELECT INTO, and locking reads. The driver also disables multiple statements. Schema identifiers are quoted and reject control characters and semicolons.

These filters are not a database authorization boundary: SELECT expressions can call functions, acquire locks, or consume resources. Database privileges remain essential. The default database is not an allowlist, and hiding system databases is only a display filter.

SELECT responses include rows, returnedRows, totalRows, and truncated. Limits apply after the full result has been fetched into memory, and exclude the MCP envelope; they do not bound database work or memory use. Schema results are not row/byte capped. Use selective queries with explicit LIMIT. The driver timeout is not a server-side execution budget.

Troubleshooting

ER_NOT_SUPPORTED_AUTH_MODE / Client does not support authentication protocol requested by server

Check the exact MySQL version and account authentication with your DBA. This package uses mysql@2.18.1, not mysql2; changing package names alone does not make every authentication mode compatible. Diagnose with a dedicated reader account.

Old password authentication is not supported / HANDSHAKE_INSECURE_AUTH

Pre-4.1 old_password authentication and mysql_native_password differ. The mysqljs driver's insecureAuth defaults to false, and this server does not expose it. A DBA must provision a compatible dedicated account, or a separate implementation change is needed. See mysqljs connection options.

TLS / SSL handshake errors with old MySQL

This server does not configure TLS. It cannot satisfy an account requiring SSL or repair legacy TLS negotiation. Use an independently secured connection appropriate to your deployment; do not expose the plaintext database connection to an untrusted network.

latin1, cp1251, garbled text, or utf8mb4 errors

The driver defaults to UTF8_GENERAL_CI, avoiding an utf8mb4 connection request to older servers. This is not custom legacy-encoding support. Verify stored encodings and server conversion using representative text. There is no configurable connection charset. See mysqljs 2.18.1 defaults.

MCP server hangs, disconnects, or tools do not appear

The process waits for MCP messages on stdin; silence in a terminal is normal. Check client logs (stderr), Node/npm availability, and the command. Database connections happen on tool calls: successful tool discovery does not prove database reachability. Call mysql_legacy_ping first. Initial npx startup needs registry access to download dependencies.

Missing required environment variable: MYSQL_LEGACY_...

Set the variable in the client's server environment. A separate terminal's variables may not reach the client. MYSQL_HOST, MYSQL_PASS, and MYSQL_DB do not configure this package. Restart after changes.

SQL parsing failed / Exactly one SELECT statement is allowed

The MySQL parser may reject otherwise valid legacy syntax; there is no unrestricted fallback. Use schema tools for SHOW queries. Passing the parser does not guarantee validity on your MySQL version.

Codex does not load a copied JSON configuration

Codex uses TOML with mcp_servers; VS Code uses JSON with servers; OpenCode uses mcp and environment. Follow INSTALLATION.md.

Why this exists

This project grew out of a QA/fullstack workflow needing AI-assisted inspection of a production MySQL 5.1 database. Metadata queries avoid requiring SET TRANSACTION READ ONLY, CTEs, or MySQL JSON features. It is a small utility for inspecting existing databases and preparing migrations.

Contributing

From a checkout, run npm ci, then:

npm run check
npm run smoke:static

For a database you are authorized to inspect, set the connection variables plus MYSQL_LEGACY_DATABASE and MYSQL_LEGACY_SMOKE_TABLE, then run npm run smoke:live. Record the exact version, authentication, encodings, and results; redact credentials and application data. The existing live script reads metadata and performs a constant SELECT; it does not test MCP transport, index listing, or a SELECT against an application table.

Include a minimal reproducer with compatibility reports. Tie new compatibility claims to recorded evidence.

License

MIT.

Available Tools

7 tools
mysql_legacy_describe_tableC

Lists columns with SHOW FULL COLUMNS FROM .. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
databaseYes

TDQS

C2.7/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_list_databasesA

Lists databases using SHOW DATABASES. System databases are hidden by default according to MYSQL_LEGACY_HIDE_SYSTEM_DATABASES.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_system_databasesNoOverrides MYSQL_LEGACY_HIDE_SYSTEM_DATABASES for this call.

TDQS

A4/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_list_indexesA

Lists indexes with SHOW INDEX FROM .. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
databaseYes

TDQS

A3.8/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_list_tablesA

Lists base tables and views with SHOW FULL TABLES FROM . Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes

TDQS

A4.2/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_pingA

Checks the legacy MySQL connection with SELECT VERSION() AS version. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_selectA

Executes exactly one read-only SELECT statement. SELECT INTO and locking reads are rejected; results are limited by MYSQL_LEGACY_MAX_ROWS and MYSQL_LEGACY_MAX_RESULT_BYTES.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesOne MySQL 5.1-compatible SELECT statement.

TDQS

A4.2/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

mysql_legacy_show_create_tableA

Returns the definition from SHOW CREATE TABLE .. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
databaseYes

TDQS

A3.7/5.0
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/5

Is 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/5

Given 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/5

Does 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/5

Does 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/5

Does 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.0
    • First observedmysql_legacy_describe_table
    • First observedmysql_legacy_list_databases
    • First observedmysql_legacy_list_indexes
    • First observedmysql_legacy_list_tables
    • First observedmysql_legacy_ping
    • First observedmysql_legacy_select
    • First observedmysql_legacy_show_create_table

TDQS

A3.8/5.0

Scored across 7 tools

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/5

All 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/5

Seven 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/5

The 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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables read-only access to MySQL databases through natural language queries. Provides automatic table schema discovery and executes SELECT, SHOW, DESCRIBE, and EXPLAIN statements within secure read-only transactions.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides read-only access to MySQL databases, enabling schema inspection, table listing, and execution of SELECT queries through the Model Context Protocol.
    220
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables safe interaction with MySQL databases through SELECT queries, table structure inspection, and database schema exploration. Provides read-only access to query data and examine database metadata.
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables read-only MySQL database access, allowing listing databases, tables, describing schemas, and executing SELECT/SHOW/DESCRIBE/EXPLAIN queries.
    7
    45
    4
    MIT

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/Rufflet/mysql-legacy-mcp'

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