WordPress MCP server providing WPML translation management, Elementor gallery media repair, language switcher configuration, and translation integrity audit abilities
14 tools with complete JSON schemas and descriptions. Naming follows verb_noun pattern (audit-, repair-, get-, list-, set-, link-, unlink-, delete-). Descriptions range 80-250 chars, meeting baseline. However, parameter descriptions are sparse or missing for many tools (e.g., 'source_ids' in audit-translation-integrity lacks context). No output schemas documented. Error handling is minimal, no recovery guidance or actionable error messages visible in code. Risk annotations (WRITE, READ_ONLY, DESTRUCTIVE) are present but not formalized as tool annotations in the MCP sense. Composition is sound: tools are single-purpose and chainable (e.g., audit → repair). Security: input validation present (sanitize_key, type casting) but no explicit permission gates visible beyond WordPress capability checks.
Audits Elementor galleries across posts for missing translated media, caption language issues, and frontend rendering problems.
Audits a translated post/page/template for internal links that point to source-language originals when a target-language translation exists. Optionally replaces them with translated URLs.
Batch audits multiple translated posts for internal links pointing to source-language originals. Optionally replaces them with translated URLs.
Audits translated posts for missing translations, broken links, gallery mismatches, and caption language issues.
Removes WPML language metadata from a post, leaving the post content intact.
Returns normalized WPML language switcher settings with overview and optional raw normalized payload.
No output schemas documented. LLMs cannot infer response structure, forcing them to guess what fields are returned and how to chain tools.
Parameter descriptions are sparse or missing context. E.g., 'source_ids' in audit-translation-integrity lacks explanation of when to use it vs 'ids'. 'ignore_terms' lacks format guidance (comma-separated? array of strings?).
No error recovery guidance. Code returns generic success/failure with messages, but does not guide LLM on next steps (e.g., 'Element not found, try audit-elementor-galleries first to discover valid element IDs').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Links an existing post as a translation of another post in a different language within an existing translation group.
Lists WPML language-switcher slots across statics, menus, and sidebars with type and risk metadata.
Resets and re-reads WPML language switcher settings. Reports whether WPML has populated the option; a reset does not prove a rendered switcher was rebuilt.
Regenerate missing thumbnail metadata/files for WPML-translated media used by an Elementor gallery.
Deletes the WPML language switcher option so WPML can rebuild it from defaults/internal state.
Registers WPML language details for an existing post/CPT item that has no language metadata yet.
Removes the translation link between a post and its translation in a different language, leaving both posts intact.
Validates WPML language-switcher option structure and flags suspicious slot payloads before writes/recovery.
Destructive operations (reset, rebuild, delete, unlink) lack dry-run or confirmation patterns. Agents can irreversibly modify WPML state without safeguards.
Risk annotations (WRITE, READ_ONLY, DESTRUCTIVE) are informal metadata, not formalized as MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot reliably parse risk from unstructured labels.