Connect Claude Code, Cursor, opencode, or any MCP-compatible AI directly to your WordPress REST API. It reads the page, flags what's broken, fixes it, and logs every change so it can undo it later.
Most WordPress SEO work is either done by hand, page by page, or handed to a plugin dashboard that lives behind a login — outside the terminal or editor where the actual work happens.
Opening every post to check a title tag, an alt attribute, or a stale canonical URL doesn't scale past a handful of pages.
And it leaves no record of what changed, or why.
Helpful, but disconnected from the editor or terminal session where content actually gets written and reviewed.
Every read is a structured analysis. Every write passes through validation, rate limiting, and a SQLite audit log — so "apply the fix" is never a one-way door. Ask in plain language, or call the tools yourself.
A single call from your AI assistant passes through five middleware stages before reaching a plugin, and the plugin before it ever touches WordPress.
Every tool the server registers with your AI assistant, grouped by the part of SEO it handles.
Add, list, or remove connected WordPress sites.
Checks meta title, description, OG, and Twitter tags.
Fixes missing, short, or overlong meta tags.
Inspects existing JSON-LD structured data on a page.
Injects Article, Organization, and BreadcrumbList schema.
Checks headings, word count, and keyword usage.
Checks alt text and lazy-loading on page images.
Checks canonical URL, robots rules, and hreflang.
Generates an XML sitemap, optionally submitted to Google.
Generates keyword ideas for a given topic.
Pulls Google Search Console analytics, if configured.
Undoes the last SEO change made to a page.
Views the full change history for a page.
"Optimize this page for SEO" runs this exact sequence automatically. Here's what it looks like called directly.
Every SEO capability is isolated behind the same plugin interface, so adding a new check means adding a new plugin — not touching the pipeline.
Set GSC_API_KEY and GSC_SITE_URL in the server's environment config, and the search-analytics tool comes online — plus automatic sitemap submission from generate-sitemap.
Leave them unset and everything else works exactly the same; this is additive, not a requirement.
Not a replacement for a full SEO suite — a narrower, auditable layer for the fixes an AI assistant can safely make on its own.
| Manual, page by page | Dashboard plugin | wordpress-seo-mcp | |
|---|---|---|---|
| Runs inside your AI assistant's session | ✕ | ✕ | ✓ |
| Structured before/after analysis | ✕ | partial | ✓ |
| Change history per post | ✕ | partial | ✓ |
| One-call rollback | ✕ | ✕ | ✓ |
| Works across many sites from one config | ✕ | ✕ | ✓ |
Register each client site once, then run the same analysis-and-fix pass across all of them from one assistant session.
Ask the assistant in plain language and let it run the checklist — no dashboard to learn first.
Call the tools directly from Claude Code, Cursor, or opencode as part of a larger publishing or migration workflow.
Anything that speaks the Model Context Protocol — the README specifically calls out opencode, Claude Code, and Cursor, but any MCP-compatible client will work.
A site with the REST API enabled, plus an Application Password for authentication — no separate plugin install required on the WordPress side.
Every applied change is written to a local SQLite audit log first, so rollback-seo can undo the most recent change to a given page.
No. It's optional — set two environment variables to enable analytics and sitemap submission; everything else runs without it.
MIT. The source, tests, and docs are in the public GitHub repository.
Requires Node.js 18+ and a WordPress site with the REST API enabled.
The server starts automatically and exposes all 13 tools. From here, just say:
Free, MIT-licensed, and works alongside Claude Code, Cursor, and opencode.
Star it on GitHub →