WordPress REST API vs MCP 1

WordPress gives an AI two ways in: the REST API with an Application Password, or an MCP plugin that signs in with OAuth. Both can put an AI to work on your site. The difference that matters is the credential you hand over: what it can do, how long it lasts, and the record it leaves behind.

If you have been weighing AI assistants for WordPress, this is the MCP vs API question in practice: keep using the REST API password your AI can already handle, or add an MCP plugin that gives each connection an access level and keeps a change record. The overview comes first, then the five situations where the difference shows.

The two options, side by side

Application Passwords are built into WordPress core and have shipped with it since version 5.6. You generate them per user on the profile screen, and each one authenticates REST API requests over HTTPS. Where XML-RPC is enabled, the same password also works for that legacy API in place of the account’s real password. WordPress documents it in the REST API authentication handbook.

MCP (Model Context Protocol) is an open-source standard for connecting AI applications to external systems. Where an API exposes endpoints for code to call, an MCP server exposes named tools with descriptions that an AI client discovers and calls, and it often sits on top of an existing API. For servers reached over HTTP, its optional authorization spec builds on OAuth 2.1 and recommends short-lived access tokens. New to the acronym? Start with what MCP means for WordPress.

On WordPress, the MCP route is a plugin such as Easy MCP AI. It runs inside your site: the AI signs in with OAuth on a consent screen, each connection gets an access level you choose (never more than the WordPress account behind it can do), and each access token lasts 1 hour.

Easy MCP AI is made by Themeisle, the company behind this blog.

The line “MCP is just another API” is half right, since many MCP servers wrap one. On a WordPress site, what separates the two routes is the credential, its limits, and the record it leaves:

Concept graphic: an unlabeled key with no expiry next to a labeled, timed MCP pass with an access level.
REST API + Application PasswordMCP plugin (Easy MCP AI)
CredentialA password generated for one user accountAn OAuth connection approved on a consent screen
What it can doEverything that user can do via the REST API; no per-password scopeCapped by the access level you picked and what the WordPress account can do
ExpiryNone; works until revokedAccess tokens last 1 hour and refresh; refresh tokens last 30 days; revocable anytime
Record on the sitePost revisions, plus a Last Used date and IPRevisions, an audit row per call, and a change history of every write
After removing the pluginStill works; it is part of WordPress coreConnections and data removed with it
Built forScripts, apps and fixed workflowsAI clients editing the site

Your AI can already use the REST API

Chat apps that can run code, such as claude.ai and ChatGPT, can call your REST API themselves if you paste an Application Password into the chat. No plugin to install, no new protocol to learn: generate the password, paste it, describe the job. To connect Claude to your site without pasting a password, see how Claude connectors work.

The cost sits in the credential. That password is unscoped, so the chat can do anything the account can do through the REST API. It has no expiry. It stays in the chat history. And once the job is done, WordPress core keeps no record of what the AI changed beyond the usual post revisions: the password’s only trace is a Last Used date and IP, and several apps sharing one password overwrite each other’s trace.

claude.ai itself has suggested revoking an Application Password after it was shared in a chat. Sound advice, as long as someone remembers to follow it.

⚠️ NOTE: an Application Password can’t open wp-admin, which sounds reassuring. Through the REST API, though, it can do whatever its user can do through that API. Treat it with the same care as the account’s real password.

You run a WooCommerce store 🛒

Raw REST calls do exactly what they say, including the part you didn’t mean. WooCommerce’s product endpoint replaces the whole category list when you send categories, so asking an AI to add a product to a category can quietly drop the ones it already had, unless the request includes them too.

Easy MCP AI’s category tool adds a category and keeps the ones the product already has. Every write through it also lands in the change history with the tool, the time and the account behind it, kept for 30 days by default, so you can see what the AI touched and when.

Easy MCP AI change history listing two AI edits to one post, each with the tool used and the account behind it.

You automate with n8n, Zapier or scripts

If the workflow does the same thing every time and no AI is deciding anything, REST plus an Application Password is the right tool. For ideas, see these WordPress Zapier recipes.

💡 PRO TIP: create a dedicated user account for the automation and give it the lowest role that still works. The password inherits that role, so a leaked password can only do what the role allows.

Someone else needs AI access

A writer, a VA or a client sometimes needs an AI working on your site. With an Application Password, the credential inherits that person’s whole user role, and there is no way to narrow a single password today: WordPress says scoping is expected “in future versions“.

Easy MCP AI handles this on its consent screen. Each connection picks an access level: Full access, Match a role (such as Editor or Author), Read-only, or Custom, and none of them goes beyond what the WordPress account behind it can do. An optional approvals setting can hold destructive actions until a person approves them, and you can revoke a connection without touching anyone’s password. It also refuses to create Application Passwords through its tools, because a new password would outlive the connection and bypass its tool list.

Easy MCP AI consent screen showing the four access levels: Full access, Match a role, Read-only and Custom.

When you stop using it

An Application Password lives in WordPress core, so removing any plugin leaves it working. It works until you revoke it on the user’s Edit User or Profile screen, one by one or with “Revoke all application passwords”.

The Application Passwords list under Users > Profile: name, created and last used dates, and a revoke link for each password.

Removing Easy MCP AI runs the other way: uninstalling it removes its connections and data, its endpoint returns a 404, and its tokens die with it.

When the REST API is the better choice

Some situations belong to the plain REST route:

  • Nothing about the job changes from run to run, so a fixed request is all it needs.
  • You are a developer working in an agent that can run code, and you would rather write the requests yourself.
  • No plugin may be installed on the site.

And this isn’t a one-way decision. Easy MCP AI itself ships REST read and write tools, so an MCP connection can still make a plain REST call when that’s the right tool for the job. 👍

The quick chooser 🧭

One line per situation:

SituationREST API + Application PasswordMCP plugin
Your chat app can run codeWorks today with a pasted password; revoke it afterwardsOAuth on the site’s consent screen, plus an access level and a record
WooCommerce store editsThe product endpoint replaces the category list; send the existing ones tooA category tool that keeps existing ones, and a record of every write
Fixed automationsThe right tool; use a dedicated low-role userAlso works, through Easy MCP AI’s REST read and write tools
Access for a writer, VA or clientInherits the whole role, nothing narrowerPick an access level on the consent screen; revoke anytime
A clean exitRevoke passwords one by one, or all of a user’s at onceRemoving the plugin removes its connections

Whichever route you pick, the checklist stays short: know what the credential can do, know how long it lasts, and know what record it leaves. If the MCP route fits your site, see the best WordPress MCP server plugins. Which setup are you running? Let us know in the comments section below! 👋

Yay! 🎉 You made it to the end of the article!

0 Comments
Newest
Oldest Most Voted