MCP server for WordPress MySQL/MariaDB database exploration, read-only when the connecting database user is SELECT-only
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"wp-db-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# WP Database MCP MCP server for exploring WordPress MySQL/MariaDB databases — schema inspection, relationship mapping, and raw SQL querying. It is read-only when you point it at a `SELECT`-only database user, which is how it is meant to be run; see [Security](#security) for why that grant, rather than anything in this process, is what makes it read-only. ## Features - Auto-detects WordPress table prefix - Full schema generation (JSON / CSV) - WordPress relationship mapping (posts, terms, meta, users, comments) - Raw SQL querying with SELECT-only validation as a guardrail (see [Security](#security)) - Automatic redaction of credential-shaped values (passwords, keys, tokens, secrets) - Multisite support, including correct resolution of network-shared tables - Query timeout (MySQL and MariaDB syntax both handled) and a configurable row cap - Post search by title/content, with sane content-type/status defaults - Startup audit of the database account's grants - Extensible to plugin tables (WooCommerce, ACF, etc.) ## Security **Read-only is enforced by the database grant, not by this server.** Create a MySQL/MariaDB user that only has `SELECT`, and use that user's credentials. That grant is the actual security boundary; everything else below is defence in depth on top of it. ### The SQL validator is a guardrail, not a boundary `wp_query` runs every statement through `validate_select_only()` before execution. It rejects non-`SELECT`/`SHOW`/`DESCRIBE`/`EXPLAIN` statements, DDL/DML keywords, filesystem/locking/timing functions, `SHOW GRANTS`/`SHOW VARIABLES`, MySQL "executable comments" (`/*! ... */`), and access to the `mysql`, `performance_schema`, and `sys` schemas. It is lexical analysis of a language with a real grammar, and it exists to stop a confused model from firing off a destructive statement by accident and to explain clearly why it was rejected. It is **not** a sandbox a determined or malicious caller cannot escape. Concretely: `aiomysql` unconditional…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.