Skip to main content
Agency Program 50% cashback. 10% commissions. Priority support. Built for growing agencies. 50% cashback for agencies Speak to the team Join free

WordPress MCP Adapter Review (2026): Setup, Security, Verdict

The WordPress MCP Adapter is the official WordPress plugin that turns abilities registered through the Abilities API into Model Context Protocol tools, resources and prompts, so AI clients like Claude, Cursor and VS Code can call them.

NS
Neha Sharma
Content, InstaWP
Updated Sep 11, 2026 29 min read

The WordPress MCP Adapter is the official WordPress plugin that turns abilities registered through the Abilities API into Model Context Protocol tools, resources and prompts, so AI clients like Claude, Cursor and VS Code can call them. It lives in the WordPress/mcp-adapter repository, it is at version 0.6.1, and it requires WordPress 6.9 or newer. It is a well-engineered connector, not a full development workflow.

This WordPress MCP Adapter review is written against the code as it stands on 11 September 2026. It covers what actually ships today, how you install and expose abilities, the security default most people miss, where the adapter genuinely falls short, and when a hosted WordPress MCP server is the more practical option. If you only read one section, read the security default.

Key Takeaways

  • The MCP Adapter is the official WordPress package for MCP. It is distributed as a plugin and as the Composer package wordpress/mcp-adapter, and it is not a rewrite of the REST API.

  • The current release is v0.6.1, released on August 13, 2026. It requires WordPress 6.9 and PHP 7.4 or newer, is tested up to WordPress 7.1, and remains a pre-1.0 release.

  • Nothing is exposed until you opt in. An ability needs meta.mcp.public = true or meta.public. This is why a fresh installation can connect successfully while showing almost nothing.

  • The default permission check is is_user_logged_in(). Unless you pass a permission callback, any logged-in Subscriber can reach your MCP server. This is the most important security detail in this review.

  • The adapter solves the protocol problem well. It does not create, clone, snapshot, or reset environments, which is the protection you need before allowing an agent to write to a production site.

What Is the WordPress MCP Adapter?

The WordPress MCP Adapter is an official WordPress plugin that reads the abilities registered on a site and republishes them over the Model Context Protocol as tools, resources and prompts. An AI client connects to one endpoint, asks what the site can do, reads the schema for the action it wants, and calls it. InstaWP has covered the protocol itself at length, so if you need the concept first, read WordPress MCP and come back. This page is only about the adapter.

Two things get conflated constantly, so separate them before anything else. The Abilities API (introduced here) is the WordPress core registry, added in WordPress 6.9. It defines what a site can do, with typed inputs, typed outputs and a capability-based permission callback per ability. The MCP Adapter sits on top and is the translation layer. The Abilities API decides what exists. The adapter decides what an AI agent is allowed to see and call.

That split matters practically. If an ability is wrong, the adapter faithfully exposes something wrong. InstaWP has seen this pattern in support: teams debug the MCP connection for an hour when the actual fault is a permission callback that returns __return_true.

LayerWhat it isWho owns itShips where
Abilities APITyped registry of what a site can doWordPress coreCore, since 6.9
MCP AdapterExposes abilities as MCP tools, resources and promptsWordPress AI TeamPlugin + Composer package, v0.6.1
MCP clientClaude, Cursor, VS Code, Claude Code and similarThe client vendorYour machine or a hosted app
TransportHow the client reaches WordPress: STDIO or HTTPMCP AdapterBuilt in, plus a custom transport interface
The four layers of a WordPress MCP setup. The adapter is only the second one.

Where Is the WordPress MCP Adapter Repo, and Which One Is Official?

The official WordPress MCP Adapter lives at github.com/WordPress/mcp-adapter, published under the WordPress GitHub organisation as part of the AI Building Blocks for WordPress initiative. The Composer package is wordpress/mcp-adapter on Packagist. Those two names are the same project. If a search result sends you anywhere else, check it against the table below.

This confuses people because there were three repositories in play during 2025, and two of them are now archived.

RepositoryStatus on 11 Sep 2026What to do
WordPress/mcp-adapterActive. 1,691 stars, 192 forks, 62 open issues, last pushed 11 September 2026Use this one
Automattic/wordpress-mcpArchived and read-only. The repo description itself redirects you to WordPress/mcp-adapterMigrate off it
WordPress/abilities-apiArchived. The API shipped in WordPress core 6.9, so there is nothing left to installUpgrade to WordPress 6.9+ instead
Verified against the GitHub API on 11 September 2026.

That last row is the one that trips up older tutorials. Any guide telling you to install an abilities-api plugin alongside the adapter is out of date. On WordPress 6.9 and later, wp_register_ability() is already there. The archived Automattic/wordpress-mcp plugin, often written as the “WordPress MCP plugin”, was the earlier Automattic experiment and is not the same codebase.

Looking for the repo?

The exact string people search is wordpress/mcp-adapter, which is both the GitHub path and the Composer package name. Releases live at github.com/WordPress/mcp-adapter/releases and the documentation lives in the docs/ folder of the same repo, not on WordPress.org.

What Version of the MCP Adapter Actually Ships Today?

The current release is v0.6.1, published on 13 August 2026. The project is still pre-1.0. That is not a warning against using it, but it does mean the public API can move between minor versions, and it already has: the repo ships migration guides for v0.3.0 and v0.5.0.

RequirementValueSource
WordPress6.9 minimum, tested up to 7.1Plugin header, mcp-adapter.php
PHP7.4 minimum, ^7.4 || ^8.0composer.json
Latest releasev0.6.1, 13 August 2026GitHub Releases
LicenceGPL-2.0-or-laterLICENSE.md
Composer packagewordpress/mcp-adapterPackagist
Runtime dependencieswordpress/php-mcp-schema, automattic/jetpack-autoloader, ext-jsoncomposer.json
WordPress.org directoryNot listed as of 11 September 2026WordPress.org plugin API
Compatibility as read from the v0.6.1 source on 11 September 2026.

Two of those rows deserve a sentence each, because no other review states them.

The adapter is not in the WordPress.org plugin directory yet. Query the WordPress.org plugin API for the mcp-adapter slug and it returns “Plugin not found”, even though the bundled readme.txt tells you to search for “MCP Adapter” under Plugins, Add New. InstaWP checked this on 11 September 2026. The practical consequence is real: the documented Requires Plugins: mcp-adapter plugin-dependency header only works for plugins hosted on WordPress.org, so if you are building on top of the adapter you cannot rely on WordPress to load it for you. The installation guide says as much.

Adoption is already substantial. Packagist records 448,960 total installs of wordpress/mcp-adapter, 131,357 in the last month, with 887 stars on the package. For a pre-1.0 package that is a healthy signal, and it is a better adoption proxy than GitHub stars because it counts builds rather than bookmarks.

Release history, for anyone deciding whether to pin a version:

ReleaseDateWhat changed
v0.6.113 Aug 2026Repaired the release ZIP. No API, hook or protocol change
v0.6.012 Aug 2026Protocol compatibility, resource metadata handling, session reliability
v0.5.015 Apr 2026Typed protocol DTOs and wordpress/php-mcp-schema. Has a migration guide
v0.4.19 Dec 2025JSON-RPC error response structure and HTTP status codes
v0.4.04 Dec 2025MCP specification compliance for flattened schemas and tool annotations
v0.3.06 Nov 2025Unified HTTP transport, better error handling. Has a migration guide
v0.1.014 Aug 2025First tagged release
Tagged releases of WordPress/mcp-adapter. Dates from the GitHub Releases API.

Is the MCP Adapter a Plugin or a Library?

Both, and the answer changes what you install. Searches for “WordPress MCP adapter plugin” and “MCP adapter plugin” usually mean the first option below, but plugin authors almost always want the second.

Use it asHowWhen this is right
A standalone pluginInstall the release ZIP, or wp plugin install from the release URLYou are connecting an AI client to a site you control
A declared dependencyAdd Requires Plugins: mcp-adapter to your plugin headerBlocked today: the header only resolves for WordPress.org-hosted plugins, and the adapter is not listed
A Composer packagecomposer require wordpress/mcp-adapterYou build sites with Composer and deploy the whole stack
A bundled dependencyVendor it inside your own pluginThe docs advise against it. If you must, use Jetpack Autoloader or Strauss to avoid conflicts
The four distribution routes, from the adapter installation guide.

The bundling warning is worth taking seriously. Two plugins each shipping their own copy of the adapter is the classic WordPress conflict, and the adapter ships a Jetpack Autoloader rather than a plain vendor/autoload.php specifically to survive that. The right check inside your own plugin is for the class, not for an autoloader:

add_action( 'plugins_loaded', function () {
    if ( ! class_exists( 'WP\\MCP\\Core\\McpAdapter' ) ) {
        add_action( 'admin_notices', function () {
            echo '<div class="notice notice-error"><p>MCP Adapter must be active.</p></div>';
        } );
        return;
    }

    // Safe to register servers and abilities from here.
} );

There is also a WP_MCP_VERSION constant if you need to gate on a minimum adapter version.

How Do You Install the WordPress MCP Adapter?

There are four routes. The fastest is one WP-CLI line, and it is the one the official docs lead with:

wp plugin install https://github.com/WordPress/mcp-adapter/releases/latest/download/mcp-adapter.zip --activate

If you prefer Composer, because you deploy the whole site as a Composer project:

composer require wordpress/mcp-adapter

For a throwaway local environment, wp-env takes the same release URL in the plugins array of .wp-env.json. And if you only want to look at it, the repo ships a WordPress Playground blueprint, so you can run the adapter in a browser tab without installing anything at all. That is the cheapest way to answer “is this worth my afternoon”.

The manual route, which is what most people do the first time, is downloading the ZIP from the releases page and uploading it.

WordPress MCP Adapter installation

Take the mcp-adapter.zip release asset. Do not clone the repository and upload that, for the reason in the next paragraph.

Resources of WordPress MCP Adapter

In WP Admin, go to Plugins, then Add New, then Upload Plugin, and choose the ZIP.

Uploading WordPress MCP Adapter as plugin

Activate it once the upload finishes.

WordPress MCP Adapter installed on the site

It then appears in your plugin list like any other plugin.

Watch out

If you install from a source checkout instead of the release ZIP, WordPress fatals with “The Composer autoloader was not found”. The release ZIP ships its own vendor/ directory; a Git clone does not. Either run composer install inside wp-content/plugins/mcp-adapter, or reinstall from the release URL with --force. Note the autoloader file is vendor/autoload_packages.php, not vendor/autoload.php.

Activation registers a default MCP server at /wp-json/mcp/mcp-adapter-default-server and exposes three core adapter abilities:

  • mcp-adapter/discover-abilities
  • mcp-adapter/get-ability-info
  • mcp-adapter/execute-ability

Those three are meta-tools, not your site’s functionality. The design is deliberate and it is the cleverest thing in the adapter: no matter how many abilities a site registers, an AI client’s tools/list response stays at three tool schemas. The agent discovers, inspects, then executes. On a site with sixty abilities that is the difference between a usable context window and a wasted one.

One naming detail that costs people time. The abilities are registered with slashes (mcp-adapter/discover-abilities) but MCP tool names cannot contain a slash, so McpNameSanitizer converts them to hyphens. The tool your client actually calls is mcp-adapter-discover-abilities. If you are debugging a “tool not found” error, that is usually why.

How Do You Expose an Ability to MCP?

This is where a fresh install stops being interesting. Abilities are private by default, so an MCP client connects successfully, lists three meta-tools, calls discover, and finds nothing. That is not a bug. You have to opt each ability in.

meta.mcp.public = true

In a real ability registration, that flag sits in the meta array:

wp_register_ability( 'my-plugin/summarise-post', array(
    'label'               => __( 'Summarise a post', 'my-plugin' ),
    'description'         => __( 'Returns a short summary of a published post.', 'my-plugin' ),
    'input_schema'        => array(
        'type'       => 'object',
        'properties' => array(
            'post_id' => array( 'type' => 'integer' ),
        ),
        'required'   => array( 'post_id' ),
    ),
    'execute_callback'    => 'my_plugin_summarise_post',
    'permission_callback' => function () {
        return current_user_can( 'edit_posts' );
    },
    'meta'                => array(
        'mcp' => array(
            'public' => true,
        ),
    ),
) );

Three details the creating-abilities guide spells out and most tutorials skip. meta.public works as a broader alias for meta.mcp.public. An explicit meta.mcp.public = false opts an otherwise public ability back out of MCP specifically, which is the escape hatch when an ability should be public to other consumers but not to agents. And for abilities registered by core or by a plugin you do not control, you hook the wp_register_ability_args filter rather than editing anything.

Once you get past a handful of abilities you have a choice between two server shapes, and the adapter supports running both at once.

Default serverCustom server
How it is createdAutomatically on plugin loadExplicitly, via the mcp_adapter_init hook
What the AI seesThree meta-tools; abilities found at runtimeEach ability as its own MCP tool with a full schema
Agent round tripsDiscover, inspect, executeOne call
tools/list sizeConstant, three schemasGrows with every tool you add
ConfigurationZero-config, abilities opt inExplicit ability list per server
Best forSites where the ability set changesA small, fixed, well-described toolset
Default server versus custom server, from the adapter default-server guide.

Two filters are worth knowing before you go custom. mcp_adapter_create_default_server set to __return_false removes the default server and its three meta-tools entirely. mcp_adapter_default_server_config lets you keep the default server but rename it, swap the error handler, or append one of your own tools alongside the meta-tools. Reaching for the second is usually better than disabling and rebuilding.

How Do You Connect an MCP Client to the Adapter?

The adapter ships two transports, and the choice is really a choice about where your WordPress install lives. People searching for a “WordPress MCP connector” are usually looking for this section.

STDIO transport, for local sites

STDIO runs the MCP server as a WP-CLI subprocess on your own machine. There is no network surface at all, which makes it the right default for plugin development. The adapter adds two commands:

# Serve the default MCP server as a specific WordPress user
wp mcp-adapter serve --server=mcp-adapter-default-server --user=admin

# List every MCP server registered on the site
wp mcp-adapter list --format=json

The --user flag is not optional in practice. Without it the process runs unauthenticated with very limited capabilities, which shows up as an empty tool list rather than an error. Most MCP clients can launch a subprocess directly, so the client config points at the wp binary:

{
  "mcpServers": {
    "wordpress": {
      "command": "wp",
      "args": [
        "--path=/path/to/your/wordpress/site",
        "mcp-adapter",
        "serve",
        "--server=mcp-adapter-default-server",
        "--user=admin"
      ]
    }
  }
}

The limitation is structural rather than technical. STDIO assumes the person using the AI client also owns the machine WordPress runs on. That is fine for one developer on one laptop and awkward the moment a second person, a remote staging site or a CI job needs the same access.

HTTP transport, and its session handshake

HTTP exposes the server at /wp-json/mcp/mcp-adapter-default-server, authenticated with WordPress application passwords over Basic auth, or with your own OAuth layer. Custom servers follow the pattern /wp-json/{namespace}/mcp. HTTPS is required, which is not a suggestion when you are sending an application password on every call.

Here is the part that generates most of the “it connected but nothing works” reports. The HTTP transport implements the MCP session protocol, so every request after initialize must carry an Mcp-Session-Id header returned by that first call. Omit it and you get JSON-RPC error -32600, “Missing Mcp-Session-Id header”.

# 1. Initialize, and read Mcp-Session-Id out of the response headers
curl -s -D - -X POST "https://example.com/wp-json/mcp/mcp-adapter-default-server" \
  --user "username:application_password" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0.0"}}}'

# 2. Every later request carries the header
curl -s -X POST "https://example.com/wp-json/mcp/mcp-adapter-default-server" \
  --user "username:application_password" \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: <session-id-from-step-1>" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# 3. Clean up when you are done
curl -s -X DELETE "https://example.com/wp-json/mcp/mcp-adapter-default-server" \
  --user "username:application_password" \
  -H "Mcp-Session-Id: <session-id-from-step-1>"

Three consequences worth writing down. Sessions expire after 24 hours of inactivity by default, adjustable with the mcp_adapter_session_inactivity_timeout filter, and an expired session returns “Invalid or expired session” rather than a 401, so it reads like an auth failure when it is not. Server-sent events are not implemented yet: a GET to the endpoint returns 405 Method Not Allowed, so any client that insists on SSE streaming will not connect. And STDIO does not use HTTP sessions at all, so if you see session errors on a WP-CLI setup you are on the wrong transport.

A fourth, duller cause of 404s: the REST API has to work and permalinks must not be set to Plain. wp option get permalink_structure answers that in one line, and the troubleshooting guide lists the rest.

How Secure Is the WordPress MCP Adapter?

The exposure model is correct by design and the default permission is weaker than most people assume. Both of those are true at the same time, and the second one is what InstaWP would flag in a client audit.

The good part first. Nothing is reachable until you mark it public, so the attack surface starts at zero and only grows on purpose. Abilities carry their own permission_callback, which runs on every call, so an agent is bounded by WordPress capabilities rather than by prompt instructions. That is a far better posture than a plugin that exposes the whole REST API behind one token.

The fix is a few lines. A transport permission callback can return a boolean, or a WP_Error if you want the client to see why it was refused:

function (): WP_Error|bool {
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 'not_logged_in', 'Please log in', array( 'status' => 401 ) );
    }

    if ( ! current_user_can( 'manage_options' ) ) {
        return new WP_Error( 'insufficient_permissions', 'Admin access required', array( 'status' => 403 ) );
    }

    return true;
}

One behaviour to know about: if your callback throws, the adapter logs the failure and falls back to is_user_logged_in(). It fails to a lower bar rather than closed. Test the callback rather than assuming it runs.

The practical checklist InstaWP would apply before pointing an agent at a production site:

  • Create a dedicated WordPress user for MCP access with the narrowest role that works, and generate the application password against that user, not your own admin account.
  • Never use __return_true as a permission_callback on an ability that writes, deletes or changes settings.
  • Prefer read-only abilities on anything reachable over HTTP. Keep write abilities on STDIO or behind an admin-only custom server.
  • Set a transport permission callback explicitly, even when the answer is “logged in is fine”. Writing it down is what stops the default drifting past you.
  • Enforce HTTPS. Application passwords travel as Basic auth, which is base64, not encryption.
  • Swap in an observability handler via McpObservabilityHandlerInterface and actually read the log. An agent calling something unexpected is only visible if you are recording calls.
  • Rotate the application password when someone leaves the project. There is no per-client revocation, so the password is the whole key.

Security issues in the adapter itself go through the WordPress HackerOne programme, which is the same disclosure route as core. That is a point in its favour over a random MCP plugin.

WordPress 7 and MCP: What Actually Changed

Plenty of 2025 coverage promised that the Abilities API would “land in WordPress 7.0“. That is not what happened, and the correction matters because it changes your minimum version.

The Abilities API shipped in WordPress 6.9, not 7.0. The abilities-api repository has since been archived because there is nothing left to ship separately. By September 2026 the current WordPress branch is 7.1, with 7.0.4 still being served for auto-updates, and the MCP Adapter plugin header declares “Tested up to: 7.1”.

WordPress versionWhat it means for MCP
6.8 and earlierNo Abilities API in core. The MCP Adapter will not run
6.9Abilities API in core. Minimum version for the MCP Adapter
7.0Abilities API already present. Nothing MCP-specific was added by the version number itself
7.1Current branch, and the version v0.6.1 is tested against
WordPress version against MCP Adapter support, checked 11 September 2026.

So the practical answer on WordPress 7 MCP support is that you do not need WordPress 7 at all. You need 6.9. If you are on WordPress 7.0 or 7.1 you are comfortably inside the tested range, and if you are below 6.9 the upgrade is the prerequisite, not the adapter.

The forward-looking claim that does hold up is the architectural one. Because abilities are registered in core, every plugin and theme that registers one becomes callable by an AI agent without bundling an SDK, and the adapter is the bridge that stays stable while the MCP specification itself moves. The WordPress developer blog describes that adapter-and-bridge shape as the deliberate long-term approach, which is the honest reason to build against it rather than against a vendor plugin.

Where the WordPress MCP Adapter Falls Short

None of these are reasons to avoid the adapter. They are the things you should know before you plan a quarter around it.

It is still pre-1.0, and it has broken a release

v0.6.1 exists because v0.6.0 shipped a broken production ZIP. The release build carried a Jetpack Autoloader class map listing test-only global classes, including WP_CLI and WP_CLI_Command, mapped to files under tests/phpunit/ that the ZIP excludes. Any plugin calling class_exists( 'WP_CLI' ) on a normal web request could trigger an uncaught fatal error. The v0.6.1 release notes say so plainly, and installs built from source or required through Composer were unaffected.

InstaWP reads that two ways. The disclosure was fast, specific and honest, which is a good sign about the maintainers. It is also a fair warning that a pre-1.0 release ZIP is not the thing to auto-update on twelve client sites at once.

No SSE streaming yet

A GET on the HTTP endpoint returns 405 Method Not Allowed because server-sent events are not implemented. Clients that require SSE rather than plain request and response will not connect over HTTP today.

Not in the WordPress.org directory

It is not installable from the Plugins, Add New search, there is no one-click update path, and the documented Requires Plugins: mcp-adapter dependency header does not resolve. For a single site that is a minor annoyance. Across a fleet it means you own the update mechanism.

Exposure configuration becomes real work at scale

The default-deny model is correct and it is also a per-site decision multiplied by every site you run. You decide which abilities are public, keep that parity between staging and production by hand, and separate read-only audits from anything that writes. On one local install this is ten minutes. Across thirty client sites it is configuration drift waiting to happen, and drift in an exposure list is not the kind you notice until an agent does something surprising.

Also, it comes with certain limitations:

  • Not suitable for distributed teams
  • Requires local CLI alignment
  • Harder to replicate across remote staging
  • No built in environment scaling

It does not manage environments, which is the gap that matters

The adapter is excellent as a command layer. It is genuinely good at environment audits, compatibility checks, structured diagnostics, controlled admin operations and plugin-specific reporting, because abilities are typed and permission-gated so tool calls behave deterministically instead of being improvised from a prompt.

What it does not do, by design:

  • Environment creation
  • Cloning for bug reproduction
  • Resetting to known good state
  • Multi version compatibility matrices
  • Snapshot based experimentation

That is not a criticism of the project. It was built to solve the protocol problem and it solves it. But if an agent is going to write to a WordPress site, someone has to answer “what happens when it gets it wrong”, and the adapter does not answer that question. Safe iteration needs spin up, test, snapshot, reset, repeat. The adapter gives you the test step.

Hosts are shipping it, mostly read-only

Worth knowing where the wider market is. Pressable shipped a WordPress MCP Adapter integration as a developer preview on 18 February 2026, toggled from MyPressable under Tools, WordPress MCP. Their own changelog states “the current version is limited to read-only interactions and does not support active site management or file modification”. So the managed-host route to the official adapter exists, and as of that release it reads but does not write.

When a Hosted WordPress MCP Server Is a Better Fit

The WordPress MCP adapter is a protocol layer you add to an existing WordPress install. A hosted built-in WordPress MCP server is part of the platform, so the setup work the adapter leaves to you is already done.

On InstaWP that is a single toggle per site, which installs the plugin, generates a scoped token and hands back a connection URL with the token embedded. No JSON configuration, no application password to create, no proxy.

InstaWP's built-in MCP Server

The security model is different in shape rather than in strictness. Instead of writing a transport permission callback, you pick token scopes, and the tools that can run arbitrary code sit behind a separate Safe Mode switch that is off until an administrator turns it on. Revocation is turning the toggle off, which kills the connection URL without visiting each client. The WordPress MCP page has the full scope list.

The more important difference for agencies is not the toggle. It is what sits underneath it. AI agents make mistakes, and the question that decides whether you can let one near a client site is how cheaply you can undo one. WordPress staging sites that spin up in seconds, snapshots taken before an agent runs, and cloning that reproduces a client-specific bug without touching the original are the parts the adapter deliberately leaves out.

Watch it in action.

Neither model makes the other wrong. If you are writing a plugin and you want AI clients to discover and execute your plugin’s abilities, the official adapter is the correct thing to build against, and it is what other people will expect you to have used.

If you are running MCP across many sites and you want the environment lifecycle rather than the protocol exercise, a hosted server gets you there sooner. Several teams run both: the adapter in plugin development, a hosted server for client work. InstaWP has compared the realistic options side by side in best WordPress MCP servers if you are still choosing.

MCP Adapter vs a Hosted WordPress MCP Server

WordPress MCP Adapter (v0.6.1)InstaWP built-in MCP server
What it isOfficial WordPress plugin and Composer packageMCP server built into the hosting platform
SetupInstall plugin, mark abilities public, choose transport, configure authOne toggle per site
Minimum WordPress6.9Provided by the platform
What it exposesWhatever abilities you opt in, via three meta-toolsA fixed set of typed tools for content, taxonomies, blocks, media, plugins and themes
AuthApplication passwords over Basic auth, or your own OAuthScoped token embedded in a generated connection URL
Default permissionis_user_logged_in() unless you pass a callbackToken scope plus the WordPress role behind it
TransportsSTDIO via WP-CLI, HTTP via REST. No SSE yetHTTP
Environment lifecycleNot in scopeStaging, cloning, snapshots and reset are part of the platform
ExtensibilityRegister any ability you like, custom servers, custom transportsFixed toolset, not extended by registering abilities
Best forPlugin authors, and teams who want full control of the surfaceAgencies and developers who want repeatable environments
The two models answer different questions. The extensibility row is the adapter’s real advantage.

If your answer is “I want to expose my own plugin’s functionality to AI agents”, the adapter wins that row outright and nothing hosted replaces it. If your answer is “I want AI to safely operate sites I already run”, the environment row is the one that decides it.

Spin up a WordPress sandbox, turn on the built-in MCP server, and point your AI client at it. Free credits, no server setup.

Create a free WordPress sandbox

Verdict: Should You Use the WordPress MCP Adapter?

Yes, if you are a plugin developer. The WordPress MCP Adapter is the official, correctly-designed way to make your plugin callable by AI agents, it is backed by the WordPress AI Team, security reports go through the WordPress HackerOne programme, and the discover-inspect-execute model is genuinely better engineering than dumping fifty tool schemas into a context window. Build against it.

With caveats, if you run client sites. It is pre-1.0, it is not in the plugin directory so you own updates, exposure configuration multiplies per site, and the default transport permission is any logged-in user. None of that is disqualifying. All of it is work you should cost before you promise an agentic workflow to a client.

If you areVerdict
A plugin or theme authorUse it. Register abilities, mark the safe ones public, ship it
A solo developer on a local installUse it with STDIO. It is the cleanest setup available
An agency running many client sitesUse it where you need custom abilities, and pair it with a platform that owns staging, snapshots and reset
Running WordPress below 6.9Upgrade first. The adapter will not load
Needing SSE streaming or a WordPress.org update pathWait, or use a hosted server today
Who the WordPress MCP Adapter is for, as of v0.6.1.

The one-line summary has not changed since the first version of this review, only the evidence behind it has got sharper: the adapter makes WordPress AI-capable, and something else has to make it AI-operational.

Conclusion

The WordPress MCP Adapter is the right protocol layer and the Abilities API underneath it is now core infrastructure, so this is not a bet on a trend. Start with STDIO locally, keep your permission_callback disciplined, set a transport permission callback explicitly rather than inheriting is_user_logged_in(), and pin a version rather than auto-updating a pre-1.0 release ZIP across a fleet.

What the adapter will not give you is the environment lifecycle that makes AI automation safe to repeat: instant staging, a snapshot before the agent runs, and a reset path when something unexpected happens. That has to come from somewhere, and deciding where is the actual architectural choice, not which MCP server you install.

Get $25 in free credits and build your first MCP-enabled WordPress site on InstaWP.

Spin up a staging environment in seconds, enable the built-in MCP server from a single toggle, and test AI-driven workflows without touching production.

Start building now on InstaWP

Pricing for production sites is on the InstaWP pricing page, and the agency-side workflow is covered in WordPress MCP for agencies.

Frequently Asked Questions

Where is the WordPress MCP Adapter repository?

The official repository is github.com/WordPress/mcp-adapter, published under the WordPress GitHub organisation. The same project is available as the Composer package wordpress/mcp-adapter on Packagist. Releases, including the installable mcp-adapter.zip, are on the repository’s Releases page, and the documentation lives in the repo’s docs folder. The older Automattic/wordpress-mcp repository is archived and its description points at WordPress/mcp-adapter.

What version of the WordPress MCP Adapter is current?

Version 0.6.1, released on 13 August 2026. It requires WordPress 6.9 or newer and PHP 7.4 or newer, and its plugin header declares it tested up to WordPress 7.1. The project is still pre-1.0, so the public API can change between minor releases; the repository ships migration guides for v0.3.0 and v0.5.0.

Is the MCP Adapter a plugin or a Composer package?

Both. You can install the release ZIP as an ordinary WordPress plugin, or run composer require wordpress/mcp-adapter in a Composer-managed site. As of 11 September 2026 it is not listed in the WordPress.org plugin directory, so it cannot be found through Plugins, Add New, and the Requires Plugins: mcp-adapter dependency header does not resolve.

Do I need WordPress 7 to use MCP?

No. The Abilities API shipped in WordPress 6.9, which is the MCP Adapter’s minimum version. WordPress 7.0 and 7.1 both include it, and v0.6.1 is tested up to 7.1, but the version number 7 is not a requirement. Sites on 6.8 or earlier cannot run the adapter and need the core upgrade first.

What is the difference between the WordPress MCP Adapter and the WordPress MCP plugin?

The MCP Adapter is the official WordPress package that exposes abilities registered by core, themes and other plugins. The WordPress MCP plugin usually refers to Automattic/wordpress-mcp, the earlier experiment, which is now archived and redirects to the adapter. Third-party MCP plugins also exist; those define their own fixed capabilities rather than reading the Abilities registry.

Why does my MCP client connect but show no tools?

Because abilities are private by default. An ability only reaches MCP when its registration sets meta.mcp.public to true, or meta.public as a broader alias. A fresh install therefore exposes only the three adapter meta-tools: discover-abilities, get-ability-info and execute-ability. Note that MCP tool names use hyphens, so the tool you call is mcp-adapter-discover-abilities, not mcp-adapter/discover-abilities.

What is the Mcp-Session-Id header and why do I need it?

The HTTP transport implements the MCP session protocol. The first initialize request returns an Mcp-Session-Id header, and every request after that must send it back or you get JSON-RPC error -32600, Missing Mcp-Session-Id header. Sessions expire after 24 hours of inactivity by default, adjustable with the mcp_adapter_session_inactivity_timeout filter. STDIO transport over WP-CLI does not use HTTP sessions at all.

Can I use the WordPress MCP Adapter on production sites?

Yes, with care. Create a dedicated WordPress user with the narrowest role that works and generate the application password against it, enforce HTTPS, keep write abilities off any publicly reachable HTTP server, and set a transport permission callback explicitly. The default is is_user_logged_in(), which any Subscriber passes. Pin a version rather than auto-updating a pre-1.0 release ZIP across many sites.

What is the biggest gap in using only the WordPress MCP Adapter?

Environment lifecycle. The adapter is the execution layer, so it does not create environments, clone a site to reproduce a bug, snapshot before an agent runs, reset to a known-good state, or run the same checks across multiple PHP and WordPress versions. That matters because the question that decides whether an agent can touch a client site is how cheaply you can undo a mistake.

How does InstaWP’s built-in MCP server compare to the WordPress MCP Adapter?

They solve different halves of the problem. The adapter is a protocol layer you add to an existing install and extend by registering your own abilities, which is exactly what a plugin author wants. InstaWP’s built-in MCP server is part of the platform: one toggle per site generates a scoped connection URL, and staging, cloning, snapshots and reset come with it. Plugin authors should build on the adapter. Teams operating many sites usually want the environment lifecycle as well.

NS
Neha Sharma
Content, InstaWP

Neha writes practical WordPress tutorials and agency playbooks, with a focus on dev workflows and AI building.