Skip to content

WordPress MCP Adapter: Setup, Limits, and When a Plugin Is Easier

The WordPress MCP Adapter is the official WordPress plugin for connecting an AI app such as Claude Desktop or Claude Code to your site over MCP, an open standard for connecting AI apps to external tools. It is a solid foundation, and on a normal blog it is also a bare one: on WordPress 7.1 or newer, with no plugin that registers abilities, a connected AI gets three read-only abilities and cannot change a thing.

You may have heard that WordPress now has an official way to plug an AI into your blog. It does, and the pitch is tempting: ask for a draft intro, a sharper SEO title, or alt text for a photo, right from the chat app you already use.

Here’s what the WordPress MCP Adapter is in plain words, what connecting really takes, what your AI can do once it is in, and when a plugin is the easier route. Let’s dive in. 🥽

📚 Table of contents:


What the WordPress MCP Adapter is (and isn’t)

🧙 Beginner’s note: MCP, short for Model Context Protocol, is an open standard for connecting AI apps to external systems. Instead of every AI app needing its own custom integration for every tool, a system describes what it can do in a shared format, and any MCP-compatible app can use it.

The adapter’s key word is “ability”. An ability is one action registered by WordPress or by a plugin, such as “get site info” or “create a draft post”. Your plugins decide which abilities exist; the adapter makes the public ones reachable from an AI app, and exposure is opt-in: an ability is reachable only if it has been marked public, and permission checks still run before anything executes.

The project comes from the WordPress Core AI team, whose launch post calls it a canonical plugin: one shared implementation that end-users and plugin developers can rely on “without worrying about multiple conflicting, outdated copies”. It sits at version 0.7.1, with 50,000+ active installs. It needs WordPress 6.9 or newer and PHP 7.4 or newer. And the team describes it as “still experimental”, on the way to a stable 1.0.

Two things the adapter is not. It is not an AI and “does not provide any AI features itself”; everything it exposes comes from the abilities on your site. And it adds no new screens to wp-admin. Whatever the AI does, it does as the WordPress user you connect with: every action runs with that user’s role and permissions, so an assistant connected as an Editor cannot do what an Editor cannot do.


How to set up the MCP Adapter 🔌

The adapter’s site-owner guide puts the whole job at about ten minutes. What you need: WordPress 6.9 or newer with the adapter installed, HTTPS on your site (WordPress only offers Application Passwords over HTTPS, except on local development sites), a WordPress user for the assistant, and, for most desktop apps, Node.js on your computer.


Step 1: Install the plugin

In wp-admin, open Plugins and search the installer for “MCP Adapter”. The right card reads “By WordPress.org” and describes the plugin as “Expose WordPress abilities as Model Context Protocol (MCP) tools, resources, and prompts for AI agents”. Install and activate it. Skip any tutorial that tells you to download it from GitHub: a copy installed from GitHub source code is missing files it needs, and the guide says to install from WordPress.org instead.


Step 2: Create an Application Password

Go to Users and open Profile (or edit the user the assistant will use), then scroll to Application Passwords. Type a name you will recognize later, such as “Claude on my laptop”, and click Add Application Password. Copy the password that appears: WordPress shows it only once, and the spaces in it are part of the format, so they can stay.

The section looks like this:

WordPress Application Passwords section, with an application password named “Claude Code”.

Step 3: Connect your AI app

Your site’s MCP address is its Site Address (URL), found under Settings > General, plus /wp-json/mcp/mcp-adapter-default-server. A site at https://example.com becomes https://example.com/wp-json/mcp/mcp-adapter-default-server.

Most desktop apps, such as Claude Desktop, Cursor, VS Code, and Windsurf, read a JSON config file, and the connection runs through a small helper that npx starts on your computer, which is where Node.js comes in. The entry looks like this, with your own values:

{
  "mcpServers": {
    "my-wordpress-site": {
      "command": "npx",
      "args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
      "env": {
        "WP_API_URL": "https://example.com/wp-json/mcp/mcp-adapter-default-server",
        "WP_API_USERNAME": "your-username",
        "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

In Claude Desktop, the file opens from Settings, then Developer, then Edit Config; in Cursor it is ~/.cursor/mcp.json. Save the file and restart the app.

🧙 Beginner’s note: two routes skip the helper. A client that accepts a URL and a custom header, such as Claude Code, connects directly with an Authorization: Basic header built from your username and Application Password. And on a site that runs on your own computer, WP-CLI lets the client start the adapter directly, with no password at all.

The browser apps are the exception: their standard sign-in needs OAuth, and the adapter adds no OAuth server, so claude.ai and ChatGPT cannot connect to it on their own. The limits section below covers why, and the one documented beta exception.


Step 4: Test the connection

Start a new chat and ask: “List the WordPress abilities you can use on my site.” The assistant should answer with the abilities it found, or tell you the list is empty. Either answer means the connection works; an error means it does not, and the troubleshooting section below covers the usual causes.


What your AI can do after connecting

So what does a connected AI see on a normal blog? On WordPress 7.1 or newer, three abilities: core/get-site-info, core/get-user-info and core/get-environment-info. All three are read-only. Two of them require the manage_options capability, held by administrators by default; a connected user without that capability can run only core/get-user-info. On WordPress 6.9 and 7.0, core’s code marks none of the three public, so the list starts empty until a plugin or custom code opts abilities in.

Here is how Claude Code summarized a fresh connection through the adapter:

All three only read information, and none of them can change anything on your site.

Read-only sounds abstract until you give it a real blogging task. The same client got this request: “Find my draft post about holiday gift boxes and add a two-sentence intro that mentions our 12 oz, 2 lb and 5 lb bag sizes. Keep it as a draft.”

Its answer began:

I couldn’t make this change. The WordPress connection I have only offers three read-only tools: site info, user info and environment info. None of them can list, read or edit posts, so I couldn’t find your holiday gift boxes draft or update it.

The draft itself never moved: same content, same status, same modified time.

Writes through the adapter require public write abilities, supplied by a plugin or custom code. WooCommerce is one example: version 11.2.1 registers seven store abilities, product create, update, and delete included, and its developer docs describe how AI clients can discover and run such abilities through the adapter, subject to WordPress and WooCommerce permissions. WooCommerce calls its MCP support a developer preview. Core write abilities have not shipped: issue #402 on the project’s tracker, opened by one contributor, says it “Tracks the experimental core abilities agreed in #core-ai”, with pages, photos and settings as its first milestone.


Limits to know before you start

None of these cancels the adapter – they are worth knowing before you plan around it:

  • The browser apps cannot connect on their own. claude.ai and ChatGPT add connectors through an OAuth sign-in, and the adapter adds no OAuth server. Pointed at an adapter address, claude.ai’s answer was: “Couldn’t register with Adapter test’s sign-in service. You can try again, or add an OAuth Client ID in the connector settings.” Claude’s documentation describes a request-header option that can carry fixed credentials, but it is “in beta and available to a limited set of organizations”, and that route is untested.
  • Core’s abilities are read-only. One contributor arguing for core write abilities on the project’s tracker put it plainly: “Core’s abilities are read-only, so pages, posts, photos and settings are out of reach.” That is a proposal, not a shipped roadmap, so for now edits come from plugins.
  • It adds no screens of its own. The adapter itself adds no log screen; it ships developer-oriented handlers for error logging and observability instead. WordPress does list each Application Password, with when it was last used, on the user’s profile page.
  • It is experimental. The 0.7.0 upgrade notice warns of “Breaking changes for extensions”, and 0.6.0 changed site-level behavior (abilities marked public became exposed through the default server unless they opt out). Read the changelog before updating, and try updates on a staging copy first.
  • Most desktop apps need Node.js. The npx helper adds a moving part that a client sending its own header, such as Claude Code, does not need.

If the connection fails

These four failures are the connection errors the adapter’s guide covers, and each has a quick check:

  • A 401 Unauthorized. Use the login name or the email address of the user, not the display name, and make sure the Application Password was copied in full and has not been revoked. If both are right, your server may be removing the Authorization header before WordPress sees it; this happens on some Apache setups, and your host can pass the header through.
  • No Application Passwords section on the profile page. WordPress hides Application Passwords on sites without HTTPS, and some security plugins and hosts turn them off.
  • A 404 or a “rest_no_route” error. Open the connection address in a browser. If a web page comes back, the cause is your permalinks or the server’s rewrite rules: on plain permalinks, use https://example.com/?rest_route=/mcp/mcp-adapter-default-server instead; otherwise click Save Changes under Settings > Permalinks to write the rules again, or ask your host. If a JSON error with “rest_no_route” comes back, check the address for typos, check the adapter is active, and look for another plugin that turned the default server off; a copy installed from GitHub source code is missing files and should be replaced with the WordPress.org install.
  • “npx: command not found”. Node.js is not installed, or the app cannot find it; install Node.js and restart the app.

When a plugin is easier

The site-owner guide’s own answer to the browser-app problem is: “Use a desktop client, or a plugin that adds an OAuth sign-in to your site.” That is the decision in one line.

The adapter fits when:

  • a developer looks after your site, or you are comfortable editing a JSON config;
  • you only need the AI to read site details, or a plugin you use registers abilities for the content you want it to read;
  • a plugin you already use registers public write abilities for the job you need;
  • you want the canonical base that other plugins can build on.

A plugin fits when:

  • you want to work from claude.ai or ChatGPT in the browser;
  • you want the AI to edit drafts, and none of your plugins offers write abilities;
  • you want a screen in wp-admin that shows what the AI did.

The canonical plugin is deliberately a base layer, so vet any plugin that fills the gaps the way you would vet any plugin.

One plugin in that role is Easy MCP AI. Easy MCP AI is built by Themeisle, a sister brand of BloggingPro. It runs its own MCP server on your site and does not use the MCP Adapter, so run one MCP plugin per site, and it is free with no paid tier. Sign-in is OAuth 2.1 in the browser, the flow the adapter lacks, or an API key, and the documented clients include Claude on the web, desktop and in Claude Code, ChatGPT, Cursor, GitHub Copilot in VS Code, and Codex CLI.

Every call runs as the connected WordPress user, with that user’s permissions, and there is no hosted relay and no Easy MCP account: MCP traffic runs directly between your AI app and your site. The plugin ships 280+ built-in tools; what a given site and credential expose is smaller, with most core tools on by default and a set of riskier ones, including plugin and theme installs, WP-CLI and sending email, switched off until an admin enables them, though switching a tool off removes that tool, not every route to the action.

The same draft request went to a site running only the adapter and to a site running Easy MCP AI, each time through Claude Code with only the site connection allowed. Through the adapter, the request failed as shown above. Through the plugin, the answer began:

I added the intro to your draft “Holiday gift boxes 2026” (post ID 7). It’s the new first paragraph, and the post is still a draft.

The post stayed a draft and gained a normal WordPress revision, and each of the four tool calls landed in the plugin’s Audit log, which records every MCP tool call while it is on, and it is on by default. Here is the Audit log after that request:

Easy MCP AI’s Audit log listing the four calls the AI made to edit a draft, with their arguments and an OK status.

Side by side, the decision looks like this:

MCP AdapterEasy MCP AI
Sign-inApplication Password (Basic header), or WP-CLI on a local siteOAuth 2.1 sign-in in the browser, or an API key
claude.ai and ChatGPT in the browserNot through their OAuth sign-inDocumented, over OAuth 2.1
Edit a draft out of the boxNo, with core abilities aloneYes; the draft stayed a draft
wp-admin screensAdds no wp-admin screens of its ownDashboard, Connections, Tools, Activity, Settings
Record of AI callsNo log screen; developer observability handlersAudit log on by default, one row per call
Limit one connectionThe user’s role and each ability’s permission checkRead-only, Full access or Custom presets per credential

Three drawbacks come with the plugin route. The first is surface area: 280+ tools is a lot of capability, and since 2.1.0 the AI can also call the REST API routes of WordPress and your other plugins as the connected user, with each route’s own permission check deciding. The API-key form starts on Full access, so pick Read-only for read jobs. The second is that OAuth needs HTTPS on a live site, and connecting can fail where a host or firewall interferes: one three-star reviewer on WordPress.org described the authentication popup never showing on their setup. The third is prompt injection: text the AI reads, such as a comment or a product review, can carry instructions that a write-capable connection might follow, which is one more reason to start Read-only on a low-role user.

Whichever route you pick, the basics are the same: give the AI its own WordPress user with the lowest role that can do the job, create one password or key per app so you can revoke one without touching the others, try new things on a staging copy first, and keep regular backups with a good backup plugin.

💡 Pro tip: on the plugin route, start with a Read-only credential and keep the Audit log on. There is also an opt-in switch, “Ask before destructive actions”, that pauses Easy MCP AI’s own delete, uninstall and other destructive tools for your approval. It is off by default, and it is not absolute even when on: tools on its “Never ask for” list still run, an “Always ask for” entry wins over that, a site’s approval filter has the last word, and an API key marked Unattended never pauses.

If the plugin route fits, the full steps for connecting Claude are in the guide on how to connect Claude to WordPress.

👉 Easy MCP AI is free on WordPress.org: install it from the plugin directory.


The bottom line 🏁

The WordPress MCP Adapter is the right foundation: official and careful about permissions. On a plain blog running WordPress 7.1 or newer, what it connects is an AI that can read up to three pieces of site information and change nothing, so whether it is enough depends on your plugins. If you write code, or a plugin you use registers abilities, keep it. If you want help with drafts, SEO titles and comments from the chat apps you already use, a plugin with its own tools and a sign-in screen is the practical route – and nothing stops you from moving later.

Either way, the AI will not write your blog for you. It is an extra pair of hands for the chores, and the chores still need your judgment.

Which blog chore would you hand to an AI first: drafts, SEO titles, or comments? Let us know in the comments section below!

Comments

guest

0 Comments
Most Voted
Newest Oldest