WP MCP Connector

One payment · unlimited sites · no licence key

Your sites. Your server. No subscription.

An MCP server for WordPress that gives Claude Code, Cursor, Windsurf — any MCP client — structured access to your content, media, settings and page-builder layouts. It makes no outbound requests of its own: no relay, no telemetry, nothing phoning home.

Buy once, install on every site you run — yours and your clients’

No relay · No telemetry · No licence server · No per-site fee · Works offline

Nine builders written in their own native format: Muffin (BeTheme) · Elementor · Beaver Builder · Bricks · Oxygen · WPBakery · Divi · Fusion · Block editor

See it in action

Watch a session drive WordPress

A scripted replay of an MCP session — the same tool names and payload shapes the connector exposes to any client.

Not a mockup of the idea, either: every page on this site is built and maintained through the connector itself.

Honestly

There is a free one. Should you use it?

Sometimes, yes. WordPress publishes an official MCP Adapter at no cost. It is a bridge: it exposes whatever abilities your site has already registered. If core content is all you need, and the plugins you care about register abilities, start there and save your money.

Where it stops

Most page builders register no abilities, so there is nothing for a bridge to expose. This connector reads and writes nine builders in their own native storage format, detecting how each one encodes a layout rather than assuming.

Nothing phones home

The plugin makes no outbound network requests at all — no relay to route your content through, no telemetry, no licence server to check in with. Your content goes from your server to your editor and nowhere else. It keeps working offline.

One payment, every site

Not a subscription and not per-site. Install it on every site you run, yours and your clients’, for the one price. There is no key to manage and nothing that expires, so an agency pays the same as a hobbyist.

Capabilities

What it does

Full content control

Create, read, update and delete posts, pages and any registered custom post type. Post meta, media uploads, options and Customizer theme mods included.

Page-builder aware

Reads and writes layouts for nine builders. Ask for a page and you get the structure, its storage location and the detected encoding.

Builds plugins on the fly

Write, read, list and delete plugin files, then activate them — scaffold a whole plugin from a conversation without touching FTP.

Faithful round-trips

Storage encoding is detected, not assumed — base64, serialize, JSON or raw. Layouts come back out the way the builder wrote them.

Theme-agnostic by design

Nothing in the core assumes a theme or a builder. Every builder is an adapter, and you can register your own with a filter.

Scoped filesystem access

Read and write under plugins, themes, mu-plugins or uploads — each root independently switchable, and every one of them off until you turn it on.

Beyond content

It writes code, not just posts

The same connection that edits a page can scaffold a plugin, draft a child theme, or bulk-edit a catalogue — because every one of those is just files and post types underneath.

Build plugins on the fly

Write PHP, JS and CSS straight into wp-content/plugins and activate the result without leaving your editor. This site runs two plugins that were built exactly that way — the store that sold you this and the styles you are reading.

Draft themes and child themes

The themes directory is a write root like any other, so an assistant can stand up a child theme, add a template part or patch a stylesheet. Off by default; you switch it on for the job and off again after.

Catalogues and custom post types

Products, listings, events, docs — anything registered as a post type is readable and writable, with meta and now categories and tags too. Enough to build and reorganise a WooCommerce catalogue from a prompt.

Setup

Running in three steps

1

Install and activate

Upload the plugin and activate it. Your unique API key is generated automatically.

2

Copy the config

Dashboard → MCP shows a ready-made .mcp.json block with your endpoint and key.

3

Point your client at it

Paste it into Claude Code, Cursor, Windsurf, VS Code — any MCP client. The tools appear immediately.

.mcp.json
{
  "mcpServers": {
    "my-site": {
      "type": "http",
      "url": "https://example.com/wp-json/custom-mcp/v1/mcp",
      "headers": { "x-custom-mcp-api-key": "your-key-here" }
    }
  }
}

Setup guides: Claude Code · Cursor · Windsurf · VS Code · Cline · Zed · Gemini CLI · Antigravity · Codex CLI

Security

Security you can reason about

Unique key per install

A 256-bit key is generated on activation. No shared default key ever ships, and the endpoint fails closed until one exists.

Constant-time comparison

Keys are checked with hash_equals, so the endpoint gives nothing away to timing probes. An optional IP allowlist narrows it further.

Guarded writes

Paths are validated segment by segment against traversal and restricted to an extension allowlist. Every write is recorded in an audit log you can read.

Extensibility

Extend it without forking

Three filters cover what the defaults miss — register a builder the plugin has never heard of, add your own tools, or handle them yourself.

functions.php
add_filter( 'custom_mcp_builders', function ( $builders ) {
    $builders['my-builder'] = array(
        'label'      => 'My Builder',
        'store'      => 'meta',
        'meta_key'   => '_my_builder_data',
        'after_save' => 'my_builder_flush_cache',
    );
    return $builders;
} );

One plugin. Any theme. Every builder.