WordPress MCP releases
Universal Model Context Protocol (MCP) server for WordPress. Connects any client site to Claude (chat & Claude Code) for hands-on SEO / AEO / GEO work - engine-agnostic Yoast or RankMat content publishing. Built for digital marketers and SEO agencies.
by Konko Maji · github.com/konkomaji/wordpress-mcp · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/konkomaji/wordpress-mcp/releases/download/v1.4.0/wordpress-mcp.zipReadme
WordPress MCP
Turn any WordPress site into a remote server that Claude can read, see, and work on directly — with an undo button.
Engine-agnostic SEO (Yoast / Rank Math) · AEO/GEO (JSON-LD, llms.txt, robots, redirects, IndexNow) · complete WooCommerce store operations · page-builder aware editing · site speed auditing and optimisation · live Search Console / GA4 / PageSpeed — over one authenticated endpoint.
🔶 Built exclusively for Claude
This plugin is the bridge between WordPress and Claude — both Claude Code (Bearer-header MCP) and Claude chat / Claude Desktop (URL custom connector). Install it on a client site, add it to Claude once, and the agent can see the real site state and implement changes itself. No copy-paste, no second OAuth, no guessing which SEO plugin the client runs.
Table of contents
- What it does
- Who it's for
- Why it exists
- What makes it different
- Quick start
- Architecture
- Request lifecycle (the wire)
- Safety: dry run, undo, audit
- Error handling
- Capability model
- Tool catalogue (162)
- Media and images
- Page-builder editing
- Commerce operations
- Engine-agnostic SEO layer
- Technical SEO: links, sitemaps, IndexNow
- AEO / GEO layer
- Performance layer
- Editing WordPress from Claude Code
- Google Site Kit bridge
- Security model
- Workflow — how an agency uses it
- Extending
- Release history
- License
What it does
One plugin, one endpoint, 162 typed tools. Claude connects once per site and can then do the whole job rather than describe it:
| 📊 Read the real site | What is published, which SEO engine runs, what schema exists, what Search Console actually reports, what is slow, what is out of stock. |
| 👁️ Look at the images | get_image_bytes returns a picture, not a filename — so alt text and product copy come from what is in the photograph. |
| ✍️ Write to the live site | Meta through whatever SEO plugin the client runs, JSON-LD, posts, products, prices, stock, menus, widgets, theme files. |
| 🧩 Edit builder pages safely | Elementor, Gutenberg, Divi, WPBakery — edited in their own data structure, not by flattening post_content. |
| 🛒 Run the store | Catalogue, variations, images, bulk repricing, scheduled sales, inventory, coupons — with orders and customer data behind their own switch. |
| 🚀 Make the site faster | Audit, apply reversible front-end fixes, clean the database, and prove the change with real Core Web Vitals. |
| ↩️ Take it all back | Writes are journalled. Every change returns an operation_id; one call reverses it. |
Who it's for
| You are… | You get… |
|---|---|
| SEO agency / freelancer running many WordPress clients | One plugin per client → each site wired into Claude. Audit, plan, and ship SEO/AEO/GEO at agency scale, with an undo journal behind every write. |
| Digital marketer who lives in Claude | Ask in plain English; it reads Search Console, finds quick wins, writes the meta, publishes the post. |
| Developer / power user | A clean JSON-RPC MCP surface with 162 typed tools, filesystem and raw-SQL access (gated), batching, and a two-step way to add your own tool. |
| WooCommerce store owner | Product copy, images, pricing, stock, categories, and Merchant-grade product schema — handled by the agent. |
Powerful by default for content and SEO. Safe by configuration for everything dangerous.
Why it exists
You manage SEO for many clients on WordPress. The friction: an AI assistant can't see a client's site — what's published, which schema exists, what the product photo actually shows, what Search Console reports — and can't act on it without you shuttling data between tools.
WordPress MCP closes that loop. It turns each client site into a remote MCP server. You add it to Claude once per client with a single command; from then on the agent can list content, audit SEO, look at images, write meta to whichever SEO plugin the client runs, generate schema, publish optimised posts and products, control llms.txt / robots / redirects / sitemaps, and pull live Google data — all over one authenticated endpoint.
Design principle: the core SEO and content work is always available and safe to delegate; the dangerous power (filesystem, raw SQL, user and plugin management) exists but ships off, behind explicit capability switches; and anything that writes can be previewed first and reversed afterwards.
What makes it different
Plenty of things can talk to WordPress. What matters is what happens when an agent is actually trusted with a client's live site.
1. It writes to the SEO plugin the client already has
You never tell the agent whether it's Yoast or Rank Math. One normalised field set maps to the right meta keys, including the social-image pair that most integrations get half-right. → Engine-agnostic SEO layer
2. It edits builder pages without destroying them
Overwriting post_content on an Elementor or Divi page does nothing, or wrecks the layout. These tools read the page as an addressable tree and rewrite one element inside the builder's own data. → Page-builder editing
3. Every write can be taken back
Bulk repricing, a site-wide search and replace, an SEO sweep — all one-way in most tooling. Here each instrumented write records the value it overwrites, and undo_operation puts it back. → Safety: dry run, undo, audit
4. The agent can see the images
Alt text written from a filename is a guess. get_image_bytes hands Claude the actual picture, so the alt text, the caption and the product description describe what is in it — and you can confirm the right photo is on the right product. → Media and images
5. Failures are recoverable, not just reported
Every error carries a stable code, a human message, an actionable hint, and structured details. The agent fixes its own call instead of guessing. → Error handling
6. Long jobs finish
A three-thousand-product audit doesn't die at PHP's execution limit. Sweeps stop early, return a resume offset, and report progress to a second connection while they run. → Safety: dry run, undo, audit
7. Two hundred edits, one request
batch runs up to 50 tool calls in a single round trip, each with its own result or error, reversible as one operation.
8. Danger is opt-in, per site, per engagement
Filesystem, raw SQL, site management and customer data each sit behind their own switch, enforced server-side. A content engagement cannot read user emails. → Capability model
Quick start
- Upload the ZIP from Releases via Plugins → Add New → Upload Plugin, or copy the folder to
wp-content/plugins/wordpress-mcp/. - Activate WordPress MCP.
- Open WordPress MCP in the admin menu; copy the endpoint, key, and the ready-made connect command.
Claude Code (Bearer header — recommended):
claude mcp add --transport http my-client-site \
https://client.example.com/wp-json/wp-mcp/v1/mcp \
--header "Authorization: Bearer YOUR_KEY_HERE"
Claude chat / Claude Desktop (custom connector). The connector UI takes a URL only — no header field — so the key travels in the query string. In Claude, go to Settings → Connectors → Add custom connector and paste the URL shown on the settings screen:
https://client.example.com/wp-json/wp-mcp/v1/mcp?key=YOUR_KEY_HERE
Because the key is in the URL for chat connectors, serve the site over HTTPS (the key is then inside the encrypted request, not the hostname) and regenerate the key if a URL is ever shared. Header auth (Claude Code) keeps the key out of the URL entirely.
- Toggle the capability groups you need. Defaults are safe.
Then ask for something real:
"Audit this site's SEO, show me the ten worst pages, and fix the missing meta descriptions."
Requires WordPress 5.6+ and PHP 7.4+. WooCommerce and Google Site Kit are optional — their tools appear only when the plugin is active.
Read the full README on GitHub →