WordPress MCP server providing tools to manage Rank Math SEO plugin configuration, content metadata, rewrite rules, redirections, logs, and site-wide schema settings
This MCP server for Rank Math SEO has well-structured tool definitions with solid naming conventions, complete input/output schemas, and comprehensive parameter descriptions. However, it has moderate issues with parameter descriptions being duplicated (aliases), output schemas lacking full documentation, and error handling guidance. All 17 tools are explicitly registered with proper JSON Schema. Naming follows verb_noun patterns (refresh-, get-, update-, list-, delete-, clear-) and is action-oriented. Description quality is strong (averages ~120 chars per tool, well within 10-1024 range). The main weakness is that some output schemas are documented but could be more detailed (e.g., `rankmath/refresh-llms-route` returns a complex object but field descriptions are minimal). Error handling is present but sparse, most tools just return success/message without actionable recovery guidance. Parameter validation and sanitization are implemented (seen in callbacks with sanitize_text_field), but this is not always transparent in the schema itself.
Deletes all Rank Math 404 log entries.
Delete specific Rank Math 404 log entries by ID.
Find Rank Math redirections whose source rules match one URL or path.
Return Rank Math llms.txt module state, settings, rewrite status, and a live preview.
Get Rank Math SEO meta data for a post or page. Returns title, description, focus keyword, SEO score, robots, and other SEO settings.
Get Rank Math option values by name.
Output schemas documented but lack field-level descriptions and constraints. E.g., rankmath/refresh-llms-route returns 'before' and 'after' objects but does not specify their internal structure (rule_present, rule_count, etc.). LLMs cannot reason about which fields to extract without explicit field documentation.
Parameter aliasing (e.g., 'seo_title' with alias 'title', 'seo_description' with alias 'description') is documented but forces LLMs to choose between equivalent parameters. Prefer a single authoritative parameter name or document the canonical choice explicitly in descriptions.
Error handling is minimal. Most tools return {'success': false, 'message': '...'} but do not provide actionable recovery guidance. E.g., rankmath/get-meta only returns 'Post with ID {id} not found.' without suggesting whether to call list_posts or check_post_status.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
Inspect stored rewrite rules for llms.txt, sitemap_index.xml, or a custom regex.
Return effective global publisher/schema settings including publisher type, website name, logo, social profiles, and local SEO contact fields.
List recent Rank Math 404 log entries (read-only).
List Rank Math modules with active, disabled, and upgrade status.
List Rank Math option names stored in wp_options.
Fetch the live llms.txt output and return the first lines for inspection.
Checks whether the Rank Math llms.txt rewrite rule is present and flushes rewrite rules when needed.
Update Rank Math SEO meta data for a post or page. Can update or clear title, description, focus keyword, robots, canonical URL, and content flags. Also accepts title/description/keyword aliases for convenience.
Enable or disable Rank Math modules by slug.
Update Rank Math option values by name.
Safely update the global publisher/entity fields used by Rank Math schema and local SEO.
Destructive tools (delete-404-logs, clear-404-logs) accept a confirm boolean parameter, but there is no dry-run or explicit confirmation callback. The confirm flag is easy for an LLM to set incorrectly. Consider implementing a two-step confirmation pattern.
Pagination is not implemented for list tools. rankmath/list-404-logs and rankmath/list-options support per_page and offset, but there is no indication of total counts, next_cursor, or whether results are truncated. Large result sets will not be discoverable.
Input parameter constraints are missing or implicit. E.g., rankmath/preview-llms accepts max_lines but does not declare min/max bounds in the schema (relies on inline JS validation). rankmath/find-redirection has limit 1 - 100 but this is not enforced schema-side.