Free on WordPress.org, built on the Abilities API

Let AI agents work in WordPress, on a leash you hold.

Agent Abilities for MCP turns your site into a governed WordPress MCP server: the agent connects as a real, scoped user, not an admin key. Nothing is exposed until you switch it on, and every call is checked and written to a log in your own database.

Install it with everything off. Turn on your first ability when you are ready, not before.

  • Free on WordPress.org
  • Zero outbound calls
  • No telemetry
  • Off by default
  • Every call audited
153+
governed abilities, every one off until you enable it
83
across WordPress core: reads, plus writes that stay guarded
70
from optional integrations, and only while their plugin is active

Agent Abilities for MCP ships 153 governed abilities: 83 across WordPress core and 70 from optional integrations. The catalog keeps growing. Every count on this site is read from one file, so it never drifts from the plugin.

Control first. Capability second.

Other MCP plugins count their tools. This one governs them. These six guarantees hold on every connection and every call, not just the first one.

Least privilege by design

The agent connects as a real WordPress user, never an admin-equivalent key. It takes the capabilities of whichever account approves the connection, so approve while logged in as the account you want the agent to be. With an Application Password you pick that account up front.

Off by default

Nothing is exposed until you enable it, and updates never silently widen access.

Two-layer capability gating

A connection only sees the tools its user can call, and every call re-checks that capability before it runs.

Honest audit log

Every call is recorded, denied attempts included, with the principal and the argument keys, never the values. It lives in your own database.

Bounded by construction

No arbitrary option or meta access, no remote URL fetch, no code execution. Deletes go to Trash where supported; the last administrator can never be removed.

No data leaves your site

The plugin contacts no AI provider and no external service. Your AI client connects in; the plugin never reaches out. Zero telemetry.

One conversation. Fully governed.

One conversation, and the work lands in WordPress.

Tell your AI what you want in plain words. It signs in as the scoped user you picked, does the actual WordPress work, and leaves a trail you can read. You never open wp-admin, and it never gets more reach than you granted.

  1. Step 1

    Ask

    Say what you want in plain words: draft this post, set its SEO title and meta, tag it, and save it as a draft.

  2. Step 2

    Scoped in

    It signs in as the least-privilege WordPress user you bound it to, never an admin key, with only the abilities you switched on.

  3. Step 3

    Real WordPress work

    It drafts posts and pages, sorts terms and media, and fills in SEO fields for Yoast, Rank Math, or All in One SEO.

  4. Step 4

    Guardrails hold

    Force-to-draft, rate limits, and a capability re-check before every call. Anything out of scope gets refused.

  5. Step 5

    On the record

    Every call, and every refusal, lands in an audit log in your own database, with the argument keys but never the values.

One conversation instead of a dozen trips to wp-admin.

Your AI can draft a post, set its SEO fields, tag and categorize it, and leave it as a draft, all without you opening the editor. You bring the intent. The plugin keeps every step scoped to the user you picked, checked against that user's capabilities, and written to the log.

Draft a post on our new returns policy, set the Yoast focus keyword and meta description, tag it under Announcements, and leave it as a draft for me to review.

Then it runs, one governed call at a time.

A few more things you can ask

  • Read onlySearch every post type for our summer sale wording and show me each place it still appears.
  • Guarded writeMove every post still filed under Uncategorized into News, and leave the posts themselves untouched.
  • Read onlyShow me what changed between the last two revisions of our About page.
agent-abilities · one conversationGoverned
Agent asksDraft our returns-policy post, set the Yoast focus keyword and meta description, tag it under Announcements, and leave it as a draft.
Draftcreate-post { title: "Our updated returns policy", status: "draft" }
Set SEOset-yoast-meta { focus_keyword: "returns policy", meta_description: "How refunds and exchanges work." }
Organizeset-post-terms { taxonomy: "category", terms: ["Announcements"] }
CapabilityAllowededit_posts re-checked for user "editor" on every call: allowed
Audit logprincipal=editor tools=[create-post, set-yoast-meta, set-post-terms] keys=[title, status, focus_keyword, meta_description, terms] result=ok
ResultDraft saved with its SEO fields and category. Nothing goes public until you publish.
Agent asksNow delete the site administrator so no one can change it back.
CapabilityDenieddelete_users on the last admin: denied
Audit logprincipal=editor tool=delete-user keys=[user_id] result=denied
ResultRefused, and the refusal is logged. The last administrator can never be removed.

An illustrative run: three governed calls from one request, then a refusal. Each one lands in the audit log, and the values never do.

It all runs from one screen in your admin.

No external dashboard, no account with us. The plugin lives in wp-admin: your endpoint, the abilities you enabled, the agent users, and the audit log, all in your own database.

  • Your MCP endpoint
  • The abilities you enabled
  • The agent users
  • The audit log
The Agent Abilities for MCP dashboard in wp-admin, with a setup checklist, 9 of 153 abilities enabled, the audit log count, the MCP endpoint, and the version panel
The plugin dashboard in wp-admin: a setup checklist, the counts, your endpoint, and the versions. Nine of 153 abilities are on here and 144 are still off. A real screenshot of the plugin.

What happens on every call.

Discovery and execution are gated separately, so an agent never gets more reach than the user you bound it to. Here is the path one call takes.

  1. Connect as a scoped user

    The agent authenticates through OAuth or an Application Password as a real, least-privilege WordPress account you pick. Never an admin key.

  2. See only what that user can call

    The tool list is filtered to the connected user’s capabilities. An agent cannot list a tool it has no right to run.

  3. Re-check on every call

    Before an ability runs, the plugin checks that user’s capability again. Discovery and execution are gated separately.

  4. Record it, denials included

    Every call lands in an audit log in your own database, with the principal and the argument keys, never the values.

  5. Stay bounded by construction

    No arbitrary option access, no remote fetch, no code execution. Deletes go to Trash where supported.

153 governed abilities, and growing.

Curated WordPress actions, exposed to the agent as MCP tools. Each one is off until you switch it on, so the catalog is a menu, not a default.

70 from optional integrations

Each set appears only while its host plugin is active, and stays off until you enable it.

WooCommerce and ACF can reach real personal data, so they sit behind a clear admin notice before you turn them on.

The Abilities tab in the plugin admin, showing 9 of 153 enabled, a badge for each category, and individual read abilities switched on one at a time
The Abilities tab. Filter by category and switch abilities on one at a time, or use Enable all reads to turn on the reads and leave every write off. A real screenshot of the plugin.

Browse the full catalog

New in 1.1.0

Bridge other plugins’ abilities

Your other active plugins can register their own WordPress abilities. This plugin brings them in as governed MCP tools, each one off until you switch it on. They come in through the WordPress Abilities API, and sit on top of the 153 in the catalog, off until you choose it.

See how bridging works

Where it works today.

9 clients connect right now, some directly and some through an open-source bridge that runs on your own machine.

Not yet

These want a streamable HTTP connector the adapter does not serve natively yet.

  • Gemini app planned

Connecting clients: Clients that cannot open a remote MCP connection use the open-source mcp-remote bridge, which runs on your own machine.

Two ways to connect. Both least privilege.

The agent acts as a real WordPress user, never an admin-equivalent key, and it takes that account's capabilities. Choose the method that fits how you work.

OAuth

Approve once in the browser

Approve the agent once in the browser, while logged in as the account you want the agent to be, because it takes that account’s capabilities. There is no secret to store.

Application Password

Bind a low-privilege user

Point a dedicated low-privilege user at the endpoint. A guided screen builds the client config and checks the endpoint for you.

Illustrative endpoint (your real one shows on the Connection tab)https://your-site.com/wp-json/…/mcp
Optional guardrails, all off until you set them:Per-minute rate limit offIP allowlist offForce-to-draft mode offTitle-length cap offBlock-markup validation (warn or strict) off

Requires WordPress 6.9+ and PHP 7.4+. Free on WordPress.org, no paid tier, no API key to buy, no usage limits.

Questions, answered.

The short version. The full FAQ lives in the docs.

Is it safe to connect an AI agent to my WordPress site?

Yes, as long as the connection is scoped, and scoping is what Agent Abilities for MCP is built around. The agent connects as a real WordPress user and takes that account’s capabilities, so approve the connection while logged in as the account you want the agent to be. Point it at a least-privilege user and it can do no more than that user can do. Every ability stays off until you enable it. Every call is written to the audit log, denials included.

What is a WordPress MCP server?

It is a WordPress site that speaks the Model Context Protocol, so an AI client can discover and call the site’s abilities as tools. Agent Abilities for MCP turns any WordPress site into one, built on the WordPress 6.9 Abilities API and the official MCP Adapter, and wraps every ability in a governance layer: off by default, capped at the capabilities of the WordPress account the agent connects as, and audited on every call.

What can I ask an AI agent to do on my WordPress site?

Whatever abilities you switched on, and nothing you did not. With the content abilities enabled, an agent can describe your site, count and search your posts, read a page and summarize it, draft a post for a human to publish, and fix a typo in place. It cannot publish, delete, or change settings unless you enable those abilities and bind the agent to a user that holds the capability. Every call is logged either way.

Can I give an agent read access without any write access?

Yes. Read-only mode is a switch on the Settings tab, and while it is on nothing that writes gets registered as an MCP tool, whatever you have ticked. A blocked write is missing from the agent’s tool list rather than refused when it calls. It covers abilities bridged from your other plugins as well, each judged by that plugin’s own annotation, and anything that declares neither way counts as a write and stays out, so the mode fails closed. Turning it on enables nothing by itself, and turning it off enables nothing either, so your selections are where you left them when you switch back. The switch is written to the audit log. It arrived in 1.6.0 and is off by default.

Does the agent get admin access?

Only if you connect it as an administrator. The agent takes the capabilities of the account it connects as. Over OAuth that is whichever account approves the connection in the browser, so log in as the dedicated low-privilege user the plugin creates before you approve, and the agent can only do what that user can do. An Application Password works the same way: generate it on that user rather than on your own admin account. Each ability re-checks the capability before it runs.

Does it send my content to OpenAI, Anthropic, or Google?

No. The plugin connects to no AI provider and makes no outbound requests of its own. Your own AI client connects in and calls the abilities you enabled.

Does it work with ChatGPT?

Yes. Agent Abilities for MCP works with ChatGPT through Developer Mode. Turn Developer Mode on in ChatGPT settings, then add your site as a custom connector. Approve it once over OAuth. ChatGPT then calls the abilities you enabled as the scoped user you pick. Custom connectors are a beta feature on ChatGPT’s paid plans. Claude.ai and Manus connect the same way, through a custom connector. Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, and Gemini CLI connect as well.

How do I connect an AI agent to my WordPress site?

Install Agent Abilities for MCP, then open the first-run Quick Connect wizard on the plugin page. The wizard puts the whole first connection on one screen. For a hosted client like ChatGPT or Claude, turn on OAuth and copy the site endpoint. For a client that runs on your own machine, create a dedicated agent user and generate an application password. Either way, finish by switching on content reads. Nothing is exposed until you enable it. The wizard never turns on a delete.

Does it work with WPML?

Yes, and there is nothing to configure either way. On a WPML site the content reads take an optional language argument. They report back which language they returned, and a single-item read can fetch a specific translation. Agent Abilities for MCP reads only what WPML already holds. It translates nothing, and it makes no outbound calls. Sites without WPML are unaffected.

What is the difference between this and the WordPress REST API?

The REST API exposes raw endpoints. MCP describes your site’s abilities as discoverable tools an agent can reason about and call, and this plugin wraps each one in a governance layer: off by default, capability-gated on every call, and logged.

What happens if the agent tries to delete or break something?

The agent can only do what the WordPress user it connected as can do. Agent Abilities for MCP re-checks that capability before every call. Deletes go to Trash where WordPress supports it, so they can be restored. The last administrator can never be removed, no matter what the agent asks. Anything the agent is not allowed to do is refused. The refusal is written to the audit log too.

How is this different from other MCP plugins for WordPress?

Not on tool count. The agent enters as a WordPress user rather than through a key the plugin issues with a scope of its own, and WordPress re-checks that user’s capabilities before every call, in core rather than in code of ours. Every ability is off until you enable it, and every call lands in an audit log in your own database, refusals included. Several other WordPress MCP plugins now describe strict defaults and audit logs in similar terms, so the part worth checking is the rest: nothing in the chain belongs to a vendor, there is no external service, and there is no paid tier waiting behind the free plugin.

How does Agent Abilities for MCP compare to Easy MCP or Royal MCP?

All three are free WordPress MCP plugins. Easy MCP leads on raw tool count and external data connectors. Royal MCP leads on client breadth. Agent Abilities for MCP starts with everything off, gives the agent a WordPress account instead of an API key of its own, and makes no outbound calls. Easy MCP binds its token to a WordPress user too, so on identity the two of us are close; Royal’s API-key path runs as full admin. The site has honest, dated side-by-side comparisons for each.

Which WordPress MCP server should I use?

It depends on the job, so the site publishes a roundup of the whole field rather than an answer that always ends in us. AI Engine is the pick if you want a full AI suite with MCP as one part of it. Royal MCP documents the most clients and platforms. Easy MCP AI advertises the largest tool catalog and the only external data connectors. EMCP goes deepest into Elementor. Agent Abilities for MCP is the one that starts with everything off, hands the agent a WordPress account rather than a key of its own, and stays free at every tier. The roundup orders every plugin by active installs, which puts ours last, and it links to a head-to-head for each one.

What is the WordPress Abilities API?

WordPress 6.9 added a standard registry where plugins declare abilities: a name, a description, an input and output schema, a permission callback, and an execute callback. The official MCP Adapter reads that registry and exposes each ability to AI clients as an MCP tool. Agent Abilities for MCP builds its governed catalog on this API, and it can also bridge abilities that your other active plugins register.

Can I expose abilities from my other plugins?

Yes. WordPress 6.9 lets any plugin register abilities, and Agent Abilities for MCP can bridge the ones your other active plugins declare. They appear on an “Other plugins” screen, grouped by the plugin that registered them and off by default, so you turn on each one yourself, the same as the core abilities. Once enabled, a bridged ability runs under the same governance as the built-in catalog: scoped to the bound user, capability-checked on every call, rate-limited, and audited.

How do I see what changed in each release?

The changelog page lists every release, newest first, copied word for word from the plugin’s own readme. Permission and security fixes are written out in full rather than softened into a line about general improvements. Releases that change behaviour you might be relying on also carry an upgrade note, so you can see what to expect before you update.

Can an AI agent issue a refund or change a payment gateway?

Only if you deliberately allow it twice. Eight WooCommerce abilities in Agent Abilities for MCP move money or grant authority. They cover refunds, order status, order updates, payment gateway settings, coupon creation and updates, and tax rate creation and updates. Turning one of those on is not enough by itself. It stays locked until you also switch on a separate high-risk control in Settings. That switch is written to the audit log like any other change. Everything else in the catalog needs only its own toggle.

Put AI to work in WordPress, on your terms.

Install it, keep everything off, and switch on one ability at a time as you build trust. You hold the leash the whole way.

Free on WordPress.org, with no paid tier waiting behind it.