Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

Explore

  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Tags index
  • Submit a server
  • Pricing

Learn

  • Guides hub
  • What is MCP?
  • Install guide
  • Troubleshooting
  • Security
  • Blog
  • Blog RSS

Tools

  • All tools
  • Config generator
  • Config validator
  • MCP playground
  • OpenAPI โ†’ MCP
  • Badge generator

For agents

  • API docs
  • Trust & traffic
  • llms.txt โ†— (opens in a new tab)
  • Catalog JSON โ†— (opens in a new tab)
  • Remote MCP โ†— (opens in a new tab)

Company

  • About
  • Contact
  • X (@AllMCPs) โ†— (opens in a new tab)
  • GitHub โ†— (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on Buildlist
ยฉ 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. ๐Ÿ—„๏ธ Databases
  3. MySQL (security First)
M
Health: Not checked yetWe have not completed a health check for this listing yet.Last checked 8/11/2026, 12:05:13 AM

MySQL (security First)

Enrichment pendingWe havenโ€™t run our AI enrichment pass on this listing yet, so the overview, use cases, and FAQ below may be sparse or missing. We work through the catalog over time โ€” check back soon.
View Repository

Security-first MySQL MCP server: AST-validated SQL (fail-closed), default-deny whitelist, audit.

Quick Install

Automated & IDE Setup

Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ€” or use 1-click editor setup below.

Add to CursorAdd to VS Code
Manual Client & Custom JSON ConfigExpand JSON โ–พ

Install Config Generator

Choose your client
claude_desktop_config.json
{
  "mcpServers": {
    "mysql-security-first": {
      "command": "npx",
      "args": [
        "-y",
        "mysql-security-first"
      ]
    }
  }
}

๐Ÿ’ก Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

Install Directory Badge Claim listing Alternatives๐Ÿ—„๏ธ More in Databases

Documentation Overview

mcp-server-mysql

English | ็ฎ€ไฝ“ไธญๆ–‡

Release License Go Docker

A security-first MySQL MCP server. Every SQL statement must survive a full AST parse by an industrial-grade SQL parser (TiDB parser) before it can touch your database โ€” backed by a read-only transaction fallback and a driver-level multi-statement lockout. Three independent layers of defense-in-depth: let AI query your database, without letting it walk off with your database.

Why this one?

Most MySQL MCP servers enforce "read-only" with regex/keyword matching, or by wrapping queries in a read-only transaction. Both are broken:

  • Regex checks are defeated by SQL comments and creative rewriting.
  • A read-only transaction alone is defeated by COMMIT; DROP TABLE ... stacked-statement injection โ€” the exact attack Datadog demonstrated against the official Postgres reference server, which has since been archived.

This project puts the security boundary on real SQL semantic parsing instead. Every statement is parsed into an AST by the TiDB parser (MySQL 8.0-grammar compatible); anything the parser cannot understand is rejected โ€” fail-closed, so incomplete grammar coverage can only over-block, never under-block. And because the parser sees real MySQL semantics, tricks like hiding a JOIN mysql.user inside a versioned comment /*!80000 ... */ are extracted and checked like any other table reference.

Highlights

  • Statement-class gating โ€” SELECT / INSERT / UPDATE / DELETE / DDL are individually switchable; the default is read-only. SET, GRANT, CALL, USE, LOAD DATA, LOCK TABLES, and transaction control (BEGIN/COMMIT/ROLLBACK) are rejected unconditionally โ€” classification itself is an allowlist, so unknown statement types land on the deny side by construction.
  • Default-deny table whitelist โ€” nothing is visible until whitelisted; patterns like db.*, db.table, app_*.logs (glob per side, case-insensitive). Every table reference is extracted from the AST: JOINs, subqueries, derived tables, CTEs (scope-aware โ€” a CTE name can't shadow a real table to smuggle it past the check), multi-table DML, INSERT ... SELECT, and versioned comments.
  • MCP table-schema resources โ€” after the MCP connection initializes, every privilege-visible, whitelisted base table is exposed as mysql:///schema/{database}/{table}. Reading a resource returns live SHOW CREATE TABLE SQL with only the volatile table-level AUTO_INCREMENT=N counter removed.
  • Execution guardrails โ€” hard row cap, per-query timeout, single-statement enforcement, and a tripwire for UPDATE/DELETE without WHERE.
  • Built-in observability โ€” per-query latency and row counts, slow-query flagging, and a mysql_stats tool so you can ask "which query was slowest?" right in the conversation.
  • Structured audit, opt-in โ€” JSONL with daily rotation; denied SQL is recorded with the exact rule that fired. Off by default: no log files unless you enable it.
  • Atomic scripts โ€” mysql_script runs a multi-statement script in a single transaction with every statement individually re-validated; any failure rolls back everything. DDL is banned inside scripts because MySQL's implicit commit would break atomicity.
  • Query-plan analysis โ€” mysql_explain with traditional / json / tree formats and EXPLAIN ANALYZE support.
  • Easy to run, small to trust โ€” a single static Go binary over stdio, built on the official MCP Go SDK; the Docker image is distroless and runs as a non-root user.

Tools

ToolWhat it does
mysql_queryRun one read-only statement (SELECT / SHOW / DESCRIBE / EXPLAIN)
mysql_executeRun one write statement (INSERT / UPDATE / DELETE / DDL โ€” each type must be enabled in config); returns affected rows
mysql_scriptRun a ;-separated multi-statement script atomically in one transaction โ€” all-or-nothing; DDL banned
mysql_explainExecution plan for a single SELECT (format: traditional / json / tree; analyze: true runs EXPLAIN ANALYZE)
mysql_list_tablesList the base tables visible through the whitelist
mysql_describe_tableColumn structure of a whitelisted table
mysql_statsSession stats: totals / denials, average & P95 latency, top-N slow queries, per-table access counts

Resources

The server takes one table snapshot when the MCP connection is initialized and registers one direct resource per visible base table:

URIMIME typeContent
mysql:///schema/{database}/{table}application/sqlCurrent normalized SHOW CREATE TABLE output

"Visible" is the intersection of what the configured MySQL account can see and security.table_whitelist. Views are not registered. Resource discovery is not capped by security.max_rows, and resource reads remain available even when select is absent from allowed_statements, because both operations execute fixed server-owned metadata SQL rather than user-submitted SQL.

The resource set is a connection-time snapshot: a table created later appears after reconnecting, while a dropped or newly inaccessible table returns MCP Resource Not Found. The resource content is live, so ALTER TABLE is reflected on the next read. Resource discovery and reads do not enter the audit log or mysql_stats; initialization failures are written to stderr and leave an empty resource list without disabling the tools.

Quick start

1. Get the binary

Prebuilt โ€” download the tarball for your platform (linux_amd64 / linux_arm64 / darwin_arm64) from Releases (checksums included), or install with Go:

bash
go install github.com/Kurok1/mcp-server-mysql/cmd/mcp-server-mysql@latest

Docker โ€” multi-arch images are published to GitHub Container Registry:

Terminal
docker pull ghcr.io/kurok1/mcp-server-mysql:latest

2. Configure

Copy config.example.yaml and adjust:

bash
mkdir -p ~/.mcp-server-mysql
cp config.example.yaml ~/.mcp-server-mysql/config.yaml

A minimal config:

yaml
mysql:
  host: 127.0.0.1
  port: 3306
  user: mcp_dev                  # use a dedicated least-privilege account, not root
  password: ${MYSQL_MCP_PASSWORD}
  database: myapp

security:
  allowed_statements: [select]   # add insert/update/delete/ddl only if you need them
  table_whitelist:
    - "myapp.*"

3. Wire up your MCP client

Claude Code:

Terminal
claude mcp add mysql --env MYSQL_MCP_PASSWORD=your-password -- \
  ~/go/bin/mcp-server-mysql --config ~/.mcp-server-mysql/config.yaml

Claude Desktop or any JSON-configured client:

config.json
{
  "mcpServers": {
    "mysql": {
      "command": "/usr/local/bin/mcp-server-mysql",
      "args": ["--config", "/Users/me/.mcp-server-mysql/config.yaml"],
      "env": { "MYSQL_MCP_PASSWORD": "..." }
    }
  }
}

Docker:

config.json
{
  "mcpServers": {
    "mysql": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/me/.mcp-server-mysql:/data",
        "-e", "MYSQL_MCP_PASSWORD",
        "ghcr.io/kurok1/mcp-server-mysql:latest",
        "--config", "/data/config.yaml"
      ],
      "env": { "MYSQL_MCP_PASSWORD": "..." }
    }
  }
}

Docker note 1 โ€” audit logs must live on a mounted volume. The container is destroyed with the session; if you enable audit logging, point audit.log_dir at the mounted volume (e.g. /data/logs) or the logs vanish with the container.

Docker note 2 โ€” reaching MySQL on the host. On macOS/Windows set mysql.host: host.docker.internal; on Linux also append "--add-host=host.docker.internal:host-gateway" to args.

Security model

text
            MCP client  (Claude Code / Claude Desktop / โ€ฆ)
                               โ”‚  stdio
                               โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  mcp-server-mysql  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                                  โ”‚
โ”‚  Table resources: mysql:///schema/{database}/{table}             โ”‚
โ”‚  fixed metadata SQL ยท base tables only ยท whitelist-filtered      โ”‚
โ”‚                                                                  โ”‚
โ”‚  mysql_query ยท mysql_execute ยท mysql_script ยท mysql_explain      โ”‚
โ”‚  mysql_list_tables ยท mysql_describe_table ยท mysql_stats          โ”‚
โ”‚                             โ”‚                                    โ”‚
โ”‚                             โ–ผ                                    โ”‚
โ”‚  โ”Œ Layer 1 ยท AST main gate (TiDB parser) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚  โ”‚ unparseable โ‡’ denied (fail-closed) โ†’ single statement    โ”‚    โ”‚
โ”‚  โ”‚ โ†’ statement-class allowlist + read/write tool check      โ”‚    โ”‚
โ”‚  โ”‚ โ†’ per-class switches (default: select only)              โ”‚    โ”‚
โ”‚  โ”‚ โ†’ dangerous constructs (INTO OUTFILE / LOAD_FILE)        โ”‚    โ”‚
โ”‚  โ”‚ โ†’ missing-WHERE tripwire                                 โ”‚    โ”‚
โ”‚  โ”‚ โ†’ default-deny table whitelist (JOIN / subquery /        โ”‚    โ”‚
โ”‚  โ”‚   CTE scope-aware / versioned comments)                  โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ”‚               โ”‚ allowed                       โ”‚ denied           โ”‚
โ”‚               โ–ผ                               โ–ผ                  โ”‚
โ”‚  โ”Œ Layer 2 ยท executor โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    DENIED [rule]: reason    โ”‚
โ”‚  โ”‚ single-stmt reads: READ ONLY tx โ”‚    is returned to the model โ”‚
โ”‚  โ”‚ row cap ยท query timeout         โ”‚    with the rule name       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                             โ”‚
โ”‚               โ–ผ                                                  โ”‚
โ”‚  โ”Œ Layer 3 ยท driver โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                             โ”‚
โ”‚  โ”‚ multiStatements=false: stacked  โ”‚                             โ”‚
โ”‚  โ”‚ injection impossible            โ”‚                             โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                             โ”‚
โ”‚               โ”‚   guard decisions โ€” allowed & denied โ€” go to     โ”‚
โ”‚               โ”‚   audit: ring buffer (+ optional JSONL files)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ–ผ
      MySQL  โ€”  Layer 0: dedicated least-privilege account

Layer 0 โ€” your MySQL account (strongly recommended). Run the server with a dedicated account that has only the privileges you intend to use (read-only workloads get SELECT only). Never root. This is the containment layer everything below reinforces.

Layer 1 โ€” the AST main gate. Every statement is parsed by the TiDB parser (parse failure โ‡’ denied), then must pass, in order: single-statement enforcement โ†’ statement-class allowlist (with a read/write tool cross-check: a write sent through mysql_query is denied even if writes are enabled) โ†’ per-class enable switches โ†’ dangerous-construct scan (SELECT ... INTO OUTFILE/DUMPFILE, LOAD_FILE() at any nesting depth) โ†’ missing-WHERE tripwire โ†’ full table-reference extraction checked against the default-deny whitelist.

Layer 2 โ€” read-only transaction fallback. Reads executed through the single-statement read path (mysql_query, mysql_explain, mysql_list_tables, mysql_describe_table) and the fixed resource metadata path run inside START TRANSACTION READ ONLY โ€” if the parser ever misclassified a write as a read, MySQL itself rejects it. (Write statements you explicitly enabled, and everything inside mysql_script โ€” reads included โ€” run outside this backstop; there, Layer 1 and Layer 0 are the controls.)

Layer 3 โ€” driver-level lockout. The connection sets multiStatements=false, so COMMIT; DROP TABLE ...-style stacked injection is impossible at the protocol level even if every layer above failed.

Every denial comes back as machine-readable text โ€” DENIED [rule_name]: reason โ€” and the rule names are stable:

RuleFires when
parse_errorThe SQL fails to parse (fail-closed โ€” syntax errors and parser gaps alike)
multi_statementMore than one statement in a single call
unsupported_statementSET / GRANT / CALL / USE / LOAD DATA / LOCK TABLES / transaction control
wrong_toolWrite statement via mysql_query, or read statement via mysql_execute
statement_not_enabledStatement class not listed in allowed_statements
table_whitelistAny referenced table falls outside the whitelist
dangerous_constructINTO OUTFILE / INTO DUMPFILE / LOAD_FILE()
unfiltered_writeUPDATE / DELETE without a WHERE clause
script_ddl / script_too_long / script_emptyDDL inside a script / script over the statement cap / empty script
invalid_query / not_select / invalid_format / invalid_identifierParameter validation of mysql_explain / mysql_describe_table

mysql_script denials prefix the reason with the position of the offending statement: DENIED [rule]: statement N: reason.

The guard is the test suite's center of gravity: ~100 table-driven cases cover stacked-statement injection, versioned-comment smuggling, CTE-shadowing whitelist bypasses, INSERT ... SELECT table extraction, and more; end-to-end tests โ€” whitelist enforcement, the READ ONLY backstop rejecting writes, script rollback, EXPLAIN-tree denials โ€” run against a real MySQL 8.0 in testcontainers.

The fine print

Security documentation you can't verify is marketing. The precise boundaries:

  • The read-only transaction backstop covers the single-statement read path. Write types you explicitly enable โ€” and every statement inside mysql_script, reads included, since they share the script's read-write transaction โ€” execute without it; there, the AST gate plus your database account privileges (Layer 0) are the controls.
  • unfiltered_write is a missing-WHERE tripwire, not full-table-write prevention: UPDATE t SET a=1 WHERE 1=1 passes it. It catches mistakes, not malice.
  • Fixed, non-user metadata SQL is used by mysql_list_tables and MCP resource discovery/read. Table discovery queries information_schema for base tables and filters every result through the whitelist; resource reads re-check the whitelist before SHOW CREATE TABLE. EXPLAIN FORMAT=TREE is another fixed-prefix path: the inner SELECT still passes the full guard pipeline first (the TiDB parser cannot parse FORMAT=TREE as a whole statement).
  • Audit records cover SQL that reaches the guard pipeline, allowed and denied. Not audited: MCP resource discovery/reads, mysql_stats calls, mysql_describe_table pre-check denials (invalid_identifier and its table_whitelist name check), and mysql_explain parameter denials (invalid_query, not_select, invalid_format). Script auditing follows actual execution: a guard-denied script yields one record for the whole script, and statements after a failed one โ€” validated but never executed โ€” are not recorded.
  • The MySQL connection is plain TCP โ€” no TLS option and no Unix socket yet. Keep the server and the database on a trusted network, or tunnel the connection.

Configuration

Full annotated example: config.example.yaml. The governing principle is secure by default: omit allowed_statements and you're read-only; omit table_whitelist and everything is denied; leave block_unfiltered_writes unset and it's on.

And it fails closed at startup: an unreadable file, an unknown/misspelled key, an invalid duration, a malformed whitelist pattern, an unknown statement type, a negative script cap, or a missing mysql.user/mysql.database all abort the process โ€” it refuses to run sick rather than degrade silently.

KeyDefaultNotes
mysql.host127.0.0.1Use host.docker.internal from inside Docker
mysql.port3306
mysql.userโ€” requiredDedicated least-privilege account recommended
mysql.password""Use ${MYSQL_MCP_PASSWORD} โ€” see below
mysql.databaseโ€” requiredAlso used to qualify unqualified table names
mysql.pool.max_open / max_idle5 / 2Connection pool
security.allowed_statements[select]Any of select / insert / update / delete / ddl; SHOW/DESCRIBE/EXPLAIN ride on select
security.table_whitelist[] = deny alldb.table patterns, glob per side (myapp.*, app_*.logs), case-insensitive
security.max_rows1000Result sets truncated beyond this, with a marker
security.query_timeout30sPer-query context timeout
security.block_unfiltered_writestrueDeny UPDATE/DELETE without WHERE
security.max_script_statements50Statement cap per mysql_script call
audit.enabledfalseJSONL disk logging; in-memory session stats work regardless
audit.log_dir~/.mcp-server-mysql/logsMust be a mounted volume under Docker
audit.slow_query_threshold1sQueries above this are flagged slow
audit.ring_buffer_size1000In-memory window backing mysql_stats

Secrets never need to live in the file: the whole config is passed through environment-variable expansion before parsing, so ${ENV_VAR} works in any field. The config path itself can come from the MYSQL_MCP_CONFIG environment variable instead of --config.

Audit log

Disk logging is controlled by audit.enabled โ€” default false: no log files, no log directory created. Session statistics (mysql_stats) are backed by an in-memory ring buffer and work either way (reset on restart).

When enabled, JSONL files rotate daily (audit-2026-07-02.jsonl), one JSON object per line:

FieldMeaning
ts / tool / sqlTimestamp, tool name, original SQL
decision / ruleallowed or denied, and the rule that fired on denial
class / tablesStatement class, referenced tables
duration_ms / rowsLatency, rows returned or affected
slow / truncated / errorSlow-query flag, truncation flag, error message

Claude Code skill

skills/mysql-mcp is a companion skill that teaches Claude to use these tools well: pick the right tool, respect the security boundaries (single statement, whitelist, WHERE tripwire), and read DENIED [rule] messages correctly instead of blindly retrying. Install:

bash
cp -r skills/mysql-mcp ~/.claude/skills/

Compatibility

  • MySQL 8.x โ€” the E2E suite runs against MySQL 8.0 (8.0.45) via testcontainers. MySQL 5.7 and MariaDB are untested.
  • Transport โ€” stdio; server identity mcp-server-mysql. Exposes 7 tools and direct MySQL table-schema resources (no prompts).

Development

bash
go test ./... -short           # unit tests (no Docker needed)
go test ./... -timeout 600s    # full suite incl. testcontainers integration/E2E (needs Docker)

Design docs live in docs/superpowers โ€” each feature ships with a spec and an implementation plan.

License

Apache-2.0

Related MCP Servers

View all in Databases View all alternatives
  • AllMCPs Server logoAllMCPs Server
    โ˜… Featured

    The official MCP server for AllMCPs.com - submit and manage tools directly from your AI. The open directory for MCP servers. Connect Claude, Cursor, Windsurf, and AI agents to databases, tools, files, and APIs. Explore 3,181+ servers. AllMCPs is the premier, open directory for discovering, evaluating, and installing Model Context Protocol (MCP) servers to equip AI agents and LLMs with real-world superpowers.

    ๐Ÿ—„๏ธ Databases7 views
    Compare vs AllMCPs Server โ†’
  • Genai Toolbox logoGenai Toolbox

    Open source MCP server specializing in easy, fast, and secure tools for Databases.

    ๐Ÿ—„๏ธ Databases3 views
    Compare vs Genai Toolbox โ†’
  • Mcp Mysql Server logoMcp Mysql Server

    Node.js-based MySQL database integration that provides secure MySQL database operations

    ๐Ÿ—„๏ธ Databases2 views
    Compare vs Mcp Mysql Server โ†’
  • Mcp Server Duckdb logoMcp Server Duckdb

    DuckDB database integration with schema inspection and query capabilities

    ๐Ÿ—„๏ธ Databases2 views
    Compare vs Mcp Server Duckdb โ†’

Frequently Asked Questions about MySQL (security First)

Add the following block to your claude_desktop_config.json under mcpServers: "mcpServers": { "mysql-security-first": { "command": "npx", "args": ["-y", "MySQL (security-first)"] } }

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewMySQL (security First) AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/mysql-security-first?style=directory)](https://allmcps.com/mcp/mysql-security-first)
HTML Embed
<a href="https://allmcps.com/mcp/mysql-security-first"><img src="https://allmcps.com/api/badge/mysql-security-first?style=directory" alt="MySQL (security First) on AllMCPs" /></a>

Technical Specs & Signals

Category๐Ÿ—„๏ธDatabases
More technical detailsExpand โ–พ
TransportSTDIO
RuntimeNode.js
0/4 checks healthy over the last 6h
Views0
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
27Quality signal: Emerging ยท 27/100How this signal is calculated โ–พ
Server availabilityNot measured

Not scored for repo-hosted servers โ€” we can't reach the running server, only its GitHub page. Hosted MCP endpoints are health-checked live.

Verified ownership8/20
Documentation & tools11/30
Adoption & activity1/15
Community engagement0/10

A guidance signal from public completeness & health data โ€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Free dofollow backlink: after claiming, verify your product site and place a dofollow AllMCPs badge โ€” we recheck it stays live.

Claim & get free dofollow

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.

Explore more

More in ๐Ÿ—„๏ธ Databases โ†’Best MCP servers for Databases โ†’Alternatives to MySQL (security First) โ†’Install in Claude DesktopInstall in CursorInstall in VS Code