MySQL Legacy MCP
Inspect and query MySQL 5.0–5.6; opt-in INSERT/UPDATE/DELETE/DDL. Live-verified 5.0–8.0.
What can you do with MySQL Legacy MCP?
- Read-only
SELECTtool with parser checks and result-size limits, wrapped in a read-only transaction on MySQL 5.6.5+ SHOW-based database, table, column, CREATE TABLE, and index inspection- Opt-in INSERT/UPDATE/DELETE/DDL tools, each disabled by default and gated by its own
MYSQL_LEGACY_ALLOW_*flag; UPDATE and DELETE always require a WHERE clause - A small pooled set of MySQL connections (
MYSQL_LEGACY_POOL_SIZE); no reliance on CTEs, JSON functions, or modern metadata columns
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
mysql-legacy-mcpclaude mcp add mysql-legacy-mcp -e 'MYSQL_LEGACY_HOST=<MYSQL_LEGACY_HOST>' -e 'MYSQL_LEGACY_USER=<MYSQL_LEGACY_USER>' -e 'MYSQL_LEGACY_PASSWORD=<your mysql_legacy_password>' -e 'MYSQL_LEGACY_PORT=3306' -e 'MYSQL_LEGACY_DATABASE=<MYSQL_LEGACY_DATABASE>' -e 'MYSQL_LEGACY_HIDE_SYSTEM_DATABASES=true' -e 'MYSQL_LEGACY_QUERY_TIMEOUT=10000' -e 'MYSQL_LEGACY_MAX_ROWS=200' -e 'MYSQL_LEGACY_MAX_RESULT_BYTES=262144' -e 'MYSQL_LEGACY_CONNECT_TIMEOUT=10000' -e 'MYSQL_LEGACY_POOL_SIZE=5' -e 'MYSQL_LEGACY_ALLOW_INSERT=false' -e 'MYSQL_LEGACY_ALLOW_UPDATE=false' -e 'MYSQL_LEGACY_ALLOW_DELETE=false' -e 'MYSQL_LEGACY_ALLOW_DDL=false' -e 'MYSQL_LEGACY_DISABLE_READ_ONLY_TRANSACTIONS=false' -- npx -y mysql-legacy-mcp@0.2.1
{
"mcpServers": {
"mysql-legacy-mcp": {
"command": "npx",
"args": [
"-y",
"mysql-legacy-mcp@0.2.1"
],
"env": {
"MYSQL_LEGACY_HOST": "<MYSQL_LEGACY_HOST>",
"MYSQL_LEGACY_USER": "<MYSQL_LEGACY_USER>",
"MYSQL_LEGACY_PASSWORD": "<your mysql_legacy_password>",
"MYSQL_LEGACY_PORT": "3306",
"MYSQL_LEGACY_DATABASE": "<MYSQL_LEGACY_DATABASE>",
"MYSQL_LEGACY_HIDE_SYSTEM_DATABASES": "true",
"MYSQL_LEGACY_QUERY_TIMEOUT": "10000",
"MYSQL_LEGACY_MAX_ROWS": "200",
"MYSQL_LEGACY_MAX_RESULT_BYTES": "262144",
"MYSQL_LEGACY_CONNECT_TIMEOUT": "10000",
"MYSQL_LEGACY_POOL_SIZE": "5",
"MYSQL_LEGACY_ALLOW_INSERT": "false",
"MYSQL_LEGACY_ALLOW_UPDATE": "false",
"MYSQL_LEGACY_ALLOW_DELETE": "false",
"MYSQL_LEGACY_ALLOW_DDL": "false",
"MYSQL_LEGACY_DISABLE_READ_ONLY_TRANSACTIONS": "false"
}
}
}
}
Environment variables
MYSQL_LEGACY_HOSTrequired Database host or local tunnel endpointMYSQL_LEGACY_USERrequired Dedicated database reader accountMYSQL_LEGACY_PASSWORDrequired secret Nonempty database account passwordMYSQL_LEGACY_PORTTCP port, 1–65535MYSQL_LEGACY_DATABASEOptional default databaseMYSQL_LEGACY_HIDE_SYSTEM_DATABASESHide mysql and information_schema from listingsMYSQL_LEGACY_QUERY_TIMEOUTDriver query timeout, 100–60000 millisecondsMYSQL_LEGACY_MAX_ROWSSELECT response row limit, 1–1000MYSQL_LEGACY_MAX_RESULT_BYTESSELECT row-data JSON byte limit, 1024–1048576MYSQL_LEGACY_CONNECT_TIMEOUTConnection-establishment timeout, 100–60000 millisecondsMYSQL_LEGACY_POOL_SIZEPooled connection limit, 1–50MYSQL_LEGACY_ALLOW_INSERTEnable the mysql_legacy_insert toolMYSQL_LEGACY_ALLOW_UPDATEEnable the mysql_legacy_update tool (WHERE clause always required)MYSQL_LEGACY_ALLOW_DELETEEnable the mysql_legacy_delete tool (WHERE clause always required)MYSQL_LEGACY_ALLOW_DDLEnable the mysql_legacy_ddl tool (table-level statements only)MYSQL_LEGACY_DISABLE_READ_ONLY_TRANSACTIONSDisable the read-only transaction wrap around mysql_legacy_select on MySQL 5.6.5+
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
MySQL Legacy MCP
MCP server for legacy MySQL 5.0–5.6 databases through stdio. The package is on npm as mysql-legacy-mcp and in the official MCP Registry as io.github.Rufflet/mysql-legacy-mcp.
It uses MySQL 5.1-compatible SQL and SHOW metadata queries. Live MCP tests cover MySQL 5.0.51a, 5.1.73, 5.5.62, and 5.6.51. It is deliberately small: read-only by default, with INSERT/UPDATE/DELETE/DDL as opt-in tools disabled unless explicitly enabled; no TLS configuration, and no custom authentication or charset options.
Is this for you?
- You need an AI agent to inspect a MySQL 5.0, 5.1, 5.5, or 5.6 database.
- Your current MySQL MCP server assumes MySQL 5.7+, JSON functions, or newer
information_schemafields. - You need schema inspection and SELECT queries, with write operations off by default and opt-in per statement type.
If you are seeing ER_NOT_SUPPORTED_AUTH_MODE, HANDSHAKE_INSECURE_AUTH, Old password authentication is not supported, legacy TLS errors, or garbled cp1251 / latin1 text, read Troubleshooting first. Those symptoms are not all solved by this package.
Requirements
- Node.js 18.14.1 or later
- npm
- A dedicated MySQL account with only the required read and metadata privileges
Where it is listed
Installation is always local stdio via npm (npx -y mysql-legacy-mcp). Directory pages do not make that faster; they are discovery indexes. The official MCP Registry is the machine-readable source (io.github.Rufflet/mysql-legacy-mcp) that aggregators ingest, including env-var metadata from server.json. Clients that speak that registry can pre-fill configuration from it.
Maintainer submission status for other directories is in docs/RELEASE_CHECKLIST.md.
Quick install
Claude Code
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
Codex
codex mcp add 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
Cursor and other clients
{
"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"
}
}
}
}
Use the schema required by your client. Full copy-paste instructions for Claude Desktop, Codex, VS Code, Windsurf, Gemini, Trae, Qoder, and more are in the Installation guide.
Compatibility
| MySQL | Status |
|---|---|
| 5.0 | Verified: 5.0.51a |
| 5.1 | Verified: 5.1.73 |
| 5.5 | Verified: 5.5.62 |
| 5.6 | Verified: 5.6.51 |
| 5.7 | Verified reference only: 5.7.44 |
| 8.0 | Not a target; default caching_sha2_password is unsupported |
Each tested target passed all 11 tools — the 7 read-only tools plus the 4 opt-in write tools, with MYSQL_LEGACY_ALLOW_* flags checked both left at their default false and explicitly enabled — through a real MCP stdio session. On MySQL 5.6.5 and later, this also exercised the actual START TRANSACTION READ ONLY path used by mysql_legacy_select; below that version it exercised the silent plain-query fallback. Exact sources, test conditions, and the MySQL 8.0 boundary are recorded in the compatibility audit. This does not cover pre-4.1 old_password, custom connection charsets, TLS, or your server's exact patch level.
Compared with modern MySQL MCP servers
| Server | Stated MySQL baseline | Focus |
|---|---|---|
mysql-legacy-mcp | Verified live: 5.0–5.6 | Legacy schema inspection and SELECT by default; opt-in INSERT/UPDATE/DELETE/DDL, with UPDATE/DELETE always requiring a WHERE clause |
@benborla29/mcp-server-mysql | 5.7+; 8.0+ recommended | Modern MySQL features such as TLS, SSH tunnels, and optional writes |
This is a compatibility distinction, not a benchmark: choose the modern server for its modern-database features.
Features
- Read-only
SELECTtool with parser checks and result-size limits, wrapped in a read-only transaction on MySQL 5.6.5+ SHOW-based database, table, column, CREATE TABLE, and index inspection- Opt-in INSERT/UPDATE/DELETE/DDL tools, each disabled by default and gated by its own
MYSQL_LEGACY_ALLOW_*flag; UPDATE and DELETE always require a WHERE clause - A small pooled set of MySQL connections (
MYSQL_LEGACY_POOL_SIZE); no reliance on CTEs, JSON functions, or modern metadata columns
Tools
| Tool | Purpose |
|---|---|
mysql_legacy_ping | Return VERSION() |
mysql_legacy_select | Run one parsed SELECT statement |
mysql_legacy_insert | Run one INSERT statement (opt-in, MYSQL_LEGACY_ALLOW_INSERT) |
mysql_legacy_update | Run one UPDATE statement with a required WHERE clause (opt-in, MYSQL_LEGACY_ALLOW_UPDATE) |
mysql_legacy_delete | Run one DELETE statement with a required WHERE clause (opt-in, MYSQL_LEGACY_ALLOW_DELETE) |
mysql_legacy_ddl | Run one table-level CREATE/ALTER/DROP/TRUNCATE/RENAME statement (opt-in, MYSQL_LEGACY_ALLOW_DDL) |
mysql_legacy_list_databases | List databases |
mysql_legacy_list_tables | List tables and views |
mysql_legacy_describe_table | Show columns |
mysql_legacy_show_create_table | Show table DDL |
mysql_legacy_list_indexes | Show indexes |
Documentation
- Installation guide — client-specific setup
- Configuration — environment variables, privileges, and security limits
- Troubleshooting — authentication, TLS, encoding, and startup errors
- Compatibility audit — reproducible version evidence
- Roadmap — deliberately deferred work and why
Why this exists
This project came from a QA/fullstack workflow that needed AI-assisted inspection of a production MySQL 5.1 database. It is a focused utility for exploring legacy schemas and preparing migrations.
Contributing
See CONTRIBUTING.md for how to propose changes, run checks locally, and what evidence a compatibility claim needs. Quick start:
npm ci
npm run check
npm run smoke:static
For authorized database testing, see the smoke-test instructions in the compatibility audit.
License
MIT.
Frequently asked questions
What is MySQL Legacy MCP?
Inspect and query MySQL 5.0–5.6; opt-in INSERT/UPDATE/DELETE/DDL. Live-verified 5.0–8.0.
How do I install MySQL Legacy MCP?
It runs on your machine. In Claude Code: claude mcp add mysql-legacy-mcp -e 'MYSQL_LEGACY_HOST=<MYSQL_LEGACY_HOST>' -e 'MYSQL_LEGACY_USER=<MYSQL_LEGACY_USER>' -e 'MYSQL_LEGACY_PASSWORD=<your mysql_legacy_password>' -e 'MYSQL_LEGACY_PORT=3306' -e 'MYSQL_LEGACY_DATABASE=<MYSQL_LEGACY_DATABASE>' -e 'MYSQL_LEGACY_HIDE_SYSTEM_DATABASES=true' -e 'MYSQL_LEGACY_QUERY_TIMEOUT=10000' -e 'MYSQL_LEGACY_MAX_ROWS=200' -e 'MYSQL_LEGACY_MAX_RESULT_BYTES=262144' -e 'MYSQL_LEGACY_CONNECT_TIMEOUT=10000' -e 'MYSQL_LEGACY_POOL_SIZE=5' -e 'MYSQL_LEGACY_ALLOW_INSERT=false' -e 'MYSQL_LEGACY_ALLOW_UPDATE=false' -e 'MYSQL_LEGACY_ALLOW_DELETE=false' -e 'MYSQL_LEGACY_ALLOW_DDL=false' -e 'MYSQL_LEGACY_DISABLE_READ_ONLY_TRANSACTIONS=false' -- npx -y mysql-legacy-mcp@0.2.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does MySQL Legacy MCP need an API key?
Yes. It expects MYSQL_LEGACY_HOST, MYSQL_LEGACY_USER, MYSQL_LEGACY_PASSWORD, which you set in its configuration.
Is MySQL Legacy MCP open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains MySQL Legacy MCP?
It is published by Rufflet. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.