Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Self-hosted WordPress MCP server with per-capability permission controls and a full audit log.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://{hostname}/wp-json/agent-abilities-for-mcp/mcpThe address contains {…} parts that only you know (such as your account), so copy it and fill them in.
Run this in your terminal
claude mcp add --transport http agent-abilities-for 'https://{hostname}/wp-json/agent-abilities-for-mcp/mcp'The address contains {…} parts that only you know (such as your account), so copy it and fill them in.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"agent-abilities-for": {
"url": "https://{hostname}/wp-json/agent-abilities-for-mcp/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
The address contains {…} parts that only you know (such as your account), so copy it and fill them in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"agent-abilities-for": {
"type": "http",
"url": "https://{hostname}/wp-json/agent-abilities-for-mcp/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://{hostname}/wp-json/agent-abilities-for-mcp/mcpThe address contains {…} parts that only you know (such as your account), so copy it and fill them in.
Menu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
The address needs your own values, so we cannot read the tool list for you.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 9, 2026
The registry name was verified with the GitHub account unaibamir, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
The address needs your own account values, so we cannot check it for you
The address needs your own account values, so we cannot check it for you
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.11.0) reached the registry 2 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Systemdox
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
WordPress MCP server for Claude and ChatGPT with limited access, a pause switch, read-only mode, drafts you approve, playbooks and an audit log.
| Contributors | unaibamir |
| Tags | mcp-server, ai-agent, claude, mcp, abilities-api |
| Requires at least | 6.9 |
| Tested up to | 7.1 |
| Requires PHP | 7.4 |
| Stable tag | 1.11.0 |
| License | GPL-2.0-or-later |
This is the GitHub home of a free WordPress plugin that adds an MCP endpoint to a site, so Claude, ChatGPT, Cursor and other MCP clients can work on it as a WordPress user you choose. It ships 184 abilities (90 core, 94 for plugins such as WooCommerce, ACF and Yoast SEO) and every one starts switched off.
The listing for site owners lives on WordPress.org. This page is for anyone who wants to read the code, wire the plugin into their own stack or send a patch.
Abilities are registered on the WordPress 6.9 Abilities API and served through the official MCP Adapter, which is bundled, so if the standalone Adapter plugin is active too the plugin simply uses whichever copy loads first. Every call to its tools runs as the WordPress user the connection belongs to, over OAuth or an Application Password, and is checked against that user's capabilities.
The admin screen has a switch for each ability, plus read-only mode, per-role and per-connection allowlists, a rate limit, an IP allowlist and Pause all access, and each OAuth connection gets its own pause, end date, rate limit and access preset. An Activity Log table in the site's own database records the acting user, the tool, the argument keys and an identifier-only note, and it never stores free-text content.
Playbooks are step-by-step instructions the owner writes, and agents read the Active ones through two read tools, aafm/list-playbooks and aafm/get-playbook. Writes through the general content tools to pages owned by Elementor, Divi, Beaver Builder, Avada or Visual Composer are refused. Avada's two dedicated tools are the exception, and they refuse changes to its shortcodes.
One scope note: the Adapter has a default server that other plugins can publish tools to, and those tools are outside this plugin's controls. A Settings choice (Automatic, Always on, Always off) decides whether that server runs, and this plugin's own tools are never on it.
/wp-content/plugins/agent-abilities-for-mcp, or install it from the Plugins screen, and activate it.The getting started guide and connecting a client cover each client. Claude takes the endpoint under Customize, then Connectors, as a custom connector, while ChatGPT takes it on the web under Plugins, Add custom MCP server, and per OpenAI's help article that needs a Business or Enterprise/Edu workspace for full access, or Pro for read and fetch only.
The endpoint sits under your REST API (replace example.com with your domain):
https://example.com/wp-json/agent-abilities-for-mcp/mcp
OAuth discovery documents are served at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server, so a server rule that blocks dotfile paths makes discovery fail, and the nginx rule that fixes it is in the troubleshooting guide.
Editors and command-line clients use a config file. The standard block runs the open-source mcp-remote bridge on your own machine, which walks you through the same one-time OAuth approval in the browser, so the file itself holds no secret:
{
"mcpServers": { "agent-abilities": { "command": "npx", "args": ["-y", "mcp-remote", "https://example.com/wp-json/agent-abilities-for-mcp/mcp"] } } }
VS Code keys the same block as servers in .vscode/mcp.json. If you'd rather use an Application Password, create the dedicated agent user the Connection tab offers (a Subscriber, so raise its role to match the job) and connect through the @automattic/mcp-wordpress-remote bridge:
{
"mcpServers": { "agent-abilities": { "command": "npx", "args": ["-y", "@automattic/mcp-wordpress-remote@latest"], "env": { "WP_API_URL": "https://example.com/wp-json/agent-abilities-for-mcp/mcp", "WP_API_USERNAME": "your-agent-user", "WP_API_PASSWORD": "PASTE-APPLICATION-PASSWORD-HERE" } } } }
The Connection tab generates both blocks with your real endpoint, plus a Windows variant that wraps npx in cmd /c. Keep in mind that an Application Password works across the whole REST API, so this plugin's limits apply only to calls through its MCP endpoint, whereas a token it issues over OAuth works on that endpoint alone.
These are the main extension points. Every name starts with aafm_.
| Hook | Type | What it does |
|---|---|---|
aafm_mcp_allowed_origins | filter | The browser origins allowed to call the endpoint, as scheme://host[:port]. Defaults to the site's own origin plus claude.ai, claude.com, chatgpt.com and chat.openai.com. A request with no Origin header is never affected. |
aafm_meta_write_full_resave | filter | Receives false, 'post' or 'term', and the ID. Return true to re-save the object after an agent changes only its custom fields, for page caches that listen to save_post. The default only clears the cache entry. |
aafm_agent_meta_written | action | Fires with 'post' or 'term' and the ID after an agent changes only custom fields. |
aafm_oauth_min_capability | filter | The capability needed to approve an OAuth connection. Default edit_posts. If any callback is attached, it overrides the Settings role list. |
aafm_playbook_starters | filter | Add starter playbooks. The five built-in starters are restored after the filter, so it cannot remove or replace them. |
aafm_ability_called | action | Fires with the normalized record after an Activity Log row is written. |
aafm_write_completed | action | Fires with a copy of the result and the target once a write's outcome is decided, for every status. |
aafm_force_read_only_mode | filter | Return true to force read-only mode on. It can only turn the mode on, never off. |
aafm_high_risk_abilities | filter | Add aafm/* ability names to the high-risk set. The built-ins are merged back in, so it can only add. Bridged abilities are not affected. |
aafm_rate_limit_per_min, aafm_ip_allowlist, aafm_max_title_len | filters | Adjust the stored value. A filter cannot switch off a limit the site owner set in Settings. |
aafm_page_builder_markers | filter | Map of post meta key to builder name used by the page builder guard. |
aafm_allowed_post_types | filter | Custom post types exposed to the content tools. Types that fail the eligibility check stay refused. |
wp aafm catalog export [--pretty] [--include-native]
It prints the abilities that other active plugins register as aafm.catalog/v1 JSON, and --include-native appends this plugin's own abilities.
Everything runs in DDEV on PHP 8.3:
ddev exec phpunit
ddev exec phpcs ddev exec phpstan analyse
Don't run wp plugin check against the dev checkout, because the plugin is symlinked to the repo root and Plugin Check follows the link into the bundled WordPress install. CONTRIBUTING.md explains how to run it against a clean export, and how an ability goes from a registry row to an MCP tool.
Patches are welcome. Read CONTRIBUTING.md first and keep each commit to one logical change. A vulnerability should go through the Report a vulnerability option on the repository's Security tab (see SECURITY.md) and not a public issue.
The plugin calls no AI provider and sends no telemetry. It makes two kinds of request itself: the Connection tab's checks against your own site's address and, only if you enable the off-by-default upload-media-from-url ability, a fetch of the HTTPS URL an agent supplies, which refuses private and reserved addresses, follows no redirects and carries none of your content or credentials. The bridges above run on your own machine and are not bundled.
The Model Context Protocol is an open specification that Anthropic originally developed. Claude, ChatGPT, Cursor, VS Code, Gemini and other product names belong to their owners, and Agent Abilities for MCP is a third-party plugin that isn't affiliated with, endorsed by or sponsored by any of them.
Only the beginning is shown; read the rest in the repo