Skip to content

WordPress Settings

Read and update core WordPress settings (general / reading / writing / discussion / media / permalinks) over MCP. Both tools work against a curated, typed allowlist. There is no arbitrary option access. Both require manage_options.

Safety boundaries:

  • Allowlist only: keys outside it are never read or written.
  • siteurl / home and users_can_register / default_role are excluded entirely.
  • admin_email is read-only (returned by get-settings, rejected by update-settings).

Reads allowlisted WordPress settings across all groups. Doubles as discovery: each entry includes its type, label, enum options (where applicable), and a writable flag.

Input: group (optional, limit to one of general, reading, writing, discussion, media, permalinks).

Returns: array of { key, value, type, label, options?, writable }.

Capability: manage_options. Read-only.

Batch-updates allowlisted settings. Partial failure never aborts the batch: any non-allowlisted, read-only, or invalid value is reported in skipped[] while the rest apply. Changing a permalink setting auto-flushes rewrite rules.

Input: settings: a key/value map of allowlisted settings to write.

Returns: { updated: [...], skipped: [{ key, reason }] }.

Capability: manage_options.

get-settings { "group": "reading" }
→ discover posts_per_page, show_on_front, page_on_front, …
update-settings { "settings": { "posts_per_page": 12, "blog_public": 1 } }
→ { updated: ["posts_per_page", "blog_public"], skipped: [] }