Description
Fyrins Content Manager for AI Agents registers content management abilities with the WordPress Abilities API. With the MCP Adapter active, an MCP client (Claude, ChatGPT, Cursor…) can discover and run them: an AI agent can draft and publish posts, fix a typo across a page, upload images, classify content, fill in SEO fields or build a variable product, always within the permissions of the WordPress user it authenticates as.
Ability families, with a few names:
- Content: five abilities for each public post type, such as
list-posts,get-page,create-post,update-page,delete-post, with dates, sticky posts and terms in every taxonomy. Plusreplace-in-post-content, which swaps a literal string without resending the whole content, with a dry run and an expected count. - Taxonomies:
list-taxonomies,list-terms,get-term,create-term,update-term,delete-term. - Media:
list-media,upload-media(from a URL),update-media,set-featured-image,delete-media. - Meta:
get-post-meta,update-post-meta,get-term-meta,update-term-meta,delete-term-meta. - Templates:
list-templates,get-template,create-template,update-template,delete-template, for block templates and template parts. - WooCommerce, when active:
create-product,update-product, product variations and global attributes. - SEOPress, when active:
get-post-seopress,update-post-seopress,get-term-seopress,update-term-seopress, andupdate-post-schemas-seopresswith SEOPress Pro. - WP Grid Builder, when active:
list-wpgb-facets,index-wpgb-facets(queues facets for indexing, off by default) andclear-wpgb-cache, for users who can manage options.
Every name carries the cm4ai/ prefix.
Each ability can be switched on or off from Settings Fyrins Content Manager for AI Agents. Abilities that delete something are off until you enable them.
Requirements
- WordPress 6.9 or later: the Abilities API ships with core from 6.9.
- The MCP Adapter plugin, to reach the abilities from an MCP client. Without it, the abilities are still registered and usable through the Abilities API, and a notice on the Plugins screen and the settings screen says the adapter is missing.
Security
- Every call runs as a logged-in WordPress user and is checked against that user’s capabilities, on the object it targets:
edit_postordelete_poston that very post,edit_termon that term. Publishing, changing the author, pinning a post and assigning terms need the same capabilities as in the admin. - Protected meta keys (starting with
_) stay out of reach unless a developer allow-lists them. - Templates can only be changed by users who can edit the theme (
edit_theme_options). - WP Grid Builder facets, index and cache are reserved to users who can manage options (
manage_options), as in its own screens. - Markup goes through the usual WordPress filtering for users without the
unfiltered_htmlcapability, and the response says when something was stripped. - Destructive abilities are disabled by default, and any ability can be disabled individually. The settings screen requires
manage_options.
Third-party abilities
The settings screen also lists the abilities other plugins register, grouped by plugin.
- An ability its plugin opened to MCP can be switched off for MCP requests. The plugin that provides it keeps using it everywhere else.
- An ability its plugin kept closed to MCP (SEOPress’s own abilities, for instance) can be exposed to the MCP server as a tool. These are off by default, and exposing one grants no extra right: the ability’s own permission check still decides.
Core and MCP Adapter abilities are never listed.
Privacy
- The plugin sends no data to its author or any third party, collects nothing, and has no tracking or telemetry.
- The only outgoing request it can make is the download performed by
upload-media, to the URL the MCP client supplies. - The MCP client acts with the rights of the WordPress user it authenticates as, and sees what that user can see. Choose that account, and its role, deliberately.
- What the AI service connected to your MCP client does with the content it reads is governed by that service, not by this plugin.
For developers
Every query, result and permission decision can be adjusted through cm4ai_* filters, and new abilities can be added. Custom abilities are added on the cm4ai_register_abilities action, and every call can be observed or adjusted with cm4ai_before_execute, cm4ai_execute_result and cm4ai_after_execute. Full reference on GitHub: https://github.com/Fyrins/content-manager-for-ai
Source code
The settings screen ships compiled in build/. Its sources live in src/ in the public repository, https://github.com/Fyrins/content-manager-for-ai, and are built with @wordpress/scripts: npm install, then npm run build.
Screenshots



Installation
- Install and activate Fyrins Content Manager for AI Agents.
- Install and activate the MCP Adapter from its GitHub releases.
- Go to Settings Fyrins Content Manager for AI Agents and choose which abilities are enabled.
- In the Connection tab, create an application password for the WordPress user the agent will act as.
- Copy the configuration of your client (Claude Code, Claude Desktop, Cursor, Codex or another HTTP client) into it. It points at
https://your-site.example/wp-json/mcp/mcp-adapter-default-server, authenticated with that user and application password.
FAQ
-
Which MCP clients work with it?
-
Any MCP client that can reach the MCP Adapter’s server and authenticate as a WordPress user, for instance with an application password. The abilities are found through the adapter’s discovery tool and run through its execute tool.
-
What can the agent do on my site?
-
Exactly what the WordPress user it authenticates as can do, limited to the abilities you left enabled. An Author account cannot publish someone else’s post through an ability any more than in the admin.
-
How do I disable an ability?
-
Uncheck it under Settings Fyrins Content Manager for AI Agents. A disabled ability is not registered at all, so MCP clients do not see it. Developers can also force the state with the
cm4ai_is_enabledfilter. -
WooCommerce or SEOPress is not installed. Does it matter?
-
No. Their abilities are simply not registered, and they appear on their own once the plugin is active. The SEOPress schema ability also needs SEOPress Pro.
-
Does it work without the MCP Adapter?
-
The abilities are registered through the core Abilities API and can be used by any other consumer of that API. To reach them from an MCP client, install the adapter. A notice on the Plugins screen and on the plugin’s settings screen reminds you until it runs.
-
Why is the MCP Adapter not bundled?
-
It is not hosted on WordPress.org, and several plugins may ship it. Installing it once, as its own plugin, avoids version conflicts.
-
Can I extend or restrict it from code?
-
Yes. Filters let you narrow the post types and taxonomies, remove operations, override any permission decision, allow-list protected meta keys, change queries and results, and add your own abilities. See the developer documentation on GitHub.
-
Does it delete anything on its own?
-
No. Abilities only run when a client calls them, and every ability that deletes is off until an administrator enables it. Uninstalling the plugin removes its two options.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Fyrins Content Manager for AI Agents” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Fyrins Content Manager for AI Agents” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.0
- Renamed from WP MCP Abilities to Fyrins Content Manager for AI Agents, for its release on WordPress.org. The plugin folder, text domain and every identifier change: abilities are now named
cm4ai/<name>, hooks and options use thecm4ai_prefix. Update the MCP clients and code that call the former names. - The switches saved under the former name are copied on activation.
- Security: writing or deleting a meta key also checks the meta capability of that key, so an
auth_callbackgiven toregister_meta()applies. - Fix:
upload-mediastops the download as soon as the file exceeds the allowed size, instead of writing it to disk in full first.
Earlier versions, released as WP MCP Abilities: https://github.com/Fyrins/content-manager-for-ai/blob/main/CHANGELOG.md
