{"id":34838398,"url":"https://github.com/bjornfix/mcp-expose-abilities","last_synced_at":"2026-06-05T01:01:28.386Z","repository":{"id":328055515,"uuid":"1114098295","full_name":"bjornfix/mcp-expose-abilities","owner":"bjornfix","description":"Let AI agents do real WordPress work via MCP. 61 core abilities, 12 add-ons, 280+ ecosystem abilities for content, builders, SEO, security, files, and operations.","archived":false,"fork":false,"pushed_at":"2026-05-21T07:22:40.000Z","size":489,"stargazers_count":27,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-21T14:37:32.411Z","etag":null,"topics":["agentic-ai","ai-agents","claude","codex","mcp","model-context-protocol","wordpress","wordpress-ai","wordpress-automation","wordpress-plugin"],"latest_commit_sha":null,"homepage":"https://devenia.com/plugins/mcp-expose-abilities/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjornfix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-10T22:36:46.000Z","updated_at":"2026-05-21T07:22:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bjornfix/mcp-expose-abilities","commit_stats":null,"previous_names":["bjornfix/mcp-expose-abilities"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/bjornfix/mcp-expose-abilities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjornfix%2Fmcp-expose-abilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjornfix%2Fmcp-expose-abilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjornfix%2Fmcp-expose-abilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjornfix%2Fmcp-expose-abilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjornfix","download_url":"https://codeload.github.com/bjornfix/mcp-expose-abilities/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjornfix%2Fmcp-expose-abilities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33926275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","ai-agents","claude","codex","mcp","model-context-protocol","wordpress","wordpress-ai","wordpress-automation","wordpress-plugin"],"created_at":"2025-12-25T16:49:49.748Z","updated_at":"2026-06-05T01:01:28.371Z","avatar_url":"https://github.com/bjornfix.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCP Expose Abilities\n\nLet AI assistants edit your WordPress site via MCP.\n\n[![GitHub release](https://img.shields.io/github/v/release/bjornfix/mcp-expose-abilities)](https://github.com/bjornfix/mcp-expose-abilities/releases)\n[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/gpl-2.0)\n[![WordPress](https://img.shields.io/badge/WordPress-6.9%2B-blue.svg)](https://wordpress.org)\n[![PHP](https://img.shields.io/badge/PHP-8.0%2B-purple.svg)](https://php.net)\n\n**Tested up to:** 7.0\n**Stable tag:** 3.0.43\n**License:** GPLv2 or later\n**License URI:** https://www.gnu.org/licenses/gpl-2.0.html\n\n## What It Does\n\nThis plugin exposes WordPress functionality through MCP (Model Context Protocol), enabling AI assistants to directly interact with your WordPress site. No more copy-pasting between chat and admin.\n\n**Example:** \"Fix the phone numbers in these 25 articles to be clickable tel: links.\" - Done in 30 seconds, all 25 articles.\n\n## The Real Workflow\n\nIn practice, the human should not have to memorize the whole ecosystem.\n\nThe normal pattern is:\n\n1. point Codex or another MCP-capable agent to this repository\n2. let the agent read the README and wiki\n3. let the agent work out the required stack and relevant add-ons\n4. give the agent a clear task with boundaries\n\nThe human's job is mostly to describe the goal.\nThe agent's job is to figure out the mechanics.\n\n## Why This Feels Different\n\nMost WordPress AI demos still leave you doing the boring part yourself.\n\nThis ecosystem is different because the agent can actually do the work inside WordPress:\n\n- fix repetitive content issues across many pages\n- update menus, media, plugins, comments, and options\n- work with real builder and plugin ecosystems like Elementor, GeneratePress, Rank Math, and Wordfence\n- handle the kind of site maintenance people usually postpone because it is repetitive and dull\n\nThat changes the experience from:\n\n- `Here is what you should do in wp-admin`\n\nto:\n\n- `Tell the agent what needs doing, and let it carry out the work`\n\n## Before vs After\n\n### Before\n\n- ask the AI what to do\n- copy the answer into WordPress by hand\n- click through wp-admin for the repetitive bits\n- lose momentum because the task is boring\n- postpone the cleanup, maintenance, or optimization work again\n\n### After\n\n- tell the agent what needs doing\n- let it inspect the site directly\n- let it make the targeted change\n- verify the result\n- move on to the next useful improvement instead of getting stuck in admin drudgery\n\nThat difference is the whole point of this ecosystem.\n\n## Who It Is For\n\nThis is a good fit for:\n\n- agencies managing many WordPress sites\n- companies with repetitive content and operations work\n- organizations that want AI to do real maintenance, not just generate text\n- technical teams that are tired of copy-paste workflows between chat and wp-admin\n\nIt is especially useful when work gets postponed simply because the manual version is boring.\n\nIf you want the more specific buyer case, start here:\n\n- [Who Benefits Most](https://github.com/bjornfix/mcp-expose-abilities/wiki/Who-Benefits-Most)\n\n## Documentation\n\nFor setup and troubleshooting beyond the quick start, use the wiki:\n\n- [Why Teams Use It](https://github.com/bjornfix/mcp-expose-abilities/wiki/Why-Teams-Use-It)\n- [Use Cases](https://github.com/bjornfix/mcp-expose-abilities/wiki/Use-Cases)\n- [Who It Is For](https://github.com/bjornfix/mcp-expose-abilities/wiki/Who-It-Is-For)\n- [Who Benefits Most](https://github.com/bjornfix/mcp-expose-abilities/wiki/Who-Benefits-Most)\n- [Alternatives](https://github.com/bjornfix/mcp-expose-abilities/wiki/Alternatives)\n- [Getting Started](https://github.com/bjornfix/mcp-expose-abilities/wiki/Getting-Started)\n- [Install Order and Dependencies](https://github.com/bjornfix/mcp-expose-abilities/wiki/Install-Order-and-Dependencies)\n- [First Working MCP Connection](https://github.com/bjornfix/mcp-expose-abilities/wiki/First-Working-MCP-Connection)\n- [Which Add-On Do I Need?](https://github.com/bjornfix/mcp-expose-abilities/wiki/Which-Add-On-Do-I-Need%3F)\n- [Troubleshooting](https://github.com/bjornfix/mcp-expose-abilities/wiki/Troubleshooting)\n- [Examples](https://github.com/bjornfix/mcp-expose-abilities/wiki/Examples)\n\nIf you are using an AI agent, the simplest instruction is often just:\n\n- `Read https://github.com/bjornfix/mcp-expose-abilities and figure out the stack before making changes.`\n\n## Start Here\n\nIf you are new to the stack, use this order:\n\n1. Install **Abilities API**\n2. Install **MCP Adapter**\n3. Install **MCP Expose Abilities** (this plugin)\n4. Confirm you can list and execute core abilities\n5. Add only the vendor-specific plugins you actually need\n\nIf you skip step 4 and start installing add-ons immediately, troubleshooting gets harder than it needs to be.\n\n## What You Actually Need\n\nFor a minimal working setup, you only need:\n\n- WordPress 6.9+\n- PHP 8.0+\n- [Abilities API](https://github.com/WordPress/abilities-api)\n- [MCP Adapter](https://github.com/WordPress/mcp-adapter)\n- **MCP Expose Abilities** (this plugin)\n\nEverything else in the ecosystem is optional.\n\n## 5-Minute Setup\n\n1. Install and activate the required plugins:\n   - Abilities API: https://github.com/WordPress/abilities-api/releases/latest\n   - MCP Adapter: https://github.com/WordPress/mcp-adapter\n   - MCP Expose Abilities: download the latest release from this repo\n2. Verify the Abilities API plugin is installed as `wp-content/plugins/abilities-api/abilities-api.php`\n3. Activate all three plugins in WordPress\n4. Confirm the MCP adapter route is reachable on your site\n5. Run a simple read-only ability first, such as listing posts or reading a page\n\n## First Success Check\n\nBefore adding Elementor, Cloudflare, Gmail, or anything else, confirm the core stack works.\n\nGood first tests:\n\n- list posts\n- get a page by ID\n- list menus\n- list installed plugins\n\nIf those work, the stack is wired correctly. If they do not, fix the core stack before adding add-ons.\n\n## Modular Architecture\n\nVersion 3.0 introduced a modular architecture. The core plugin provides WordPress-native abilities, while vendor-specific features are available as separate add-on plugins:\n\n| Plugin | Abilities | Description |\n|--------|-----------|-------------|\n| **MCP Expose Abilities** (core) | 67 | WordPress core: content, menus, users, media, widgets, plugins, options, comments, taxonomy, system |\n| [MCP Abilities - Filesystem](https://github.com/bjornfix/mcp-abilities-filesystem) | 11 | File operations with security hardening |\n| [MCP Abilities - Elementor](https://github.com/bjornfix/mcp-abilities-elementor) | 40 | Elementor page builder integration |\n| [MCP Abilities - GeneratePress](https://github.com/bjornfix/mcp-abilities-generatepress) | 26 | GeneratePress theme + GenerateBlocks |\n| [MCP Abilities - Cloudflare](https://github.com/bjornfix/mcp-abilities-cloudflare) | 4 | Cloudflare cache management |\n| [MCP Abilities - Google Workspace](https://github.com/bjornfix/mcp-abilities-workspace) | 16 | Gmail API via Workspace service account |\n| [MCP Abilities - Rank Math](https://github.com/bjornfix/mcp-abilities-rankmath) | 23 | Rank Math SEO metadata access |\n| [MCP Abilities - Wordfence](https://github.com/bjornfix/mcp-abilities-wordfence) | 11 | Wordfence security status + blocks |\n| [MCP Abilities - Brevo](https://github.com/bjornfix/mcp-abilities-brevo) | 22 | Brevo contacts, lists, campaigns |\n| [MCP Abilities - Advanced Ads](https://github.com/bjornfix/mcp-abilities-advads) | 17 | Advanced Ads management |\n| [MCP Abilities - Toolset](https://github.com/bjornfix/mcp-abilities-toolset) | 38 | Toolset post types, custom fields, taxonomies, relationships |\n| [MCP Abilities - SitePress](https://github.com/bjornfix/mcp-abilities-sitepress) | 10 | WPML translation mapping, language-switcher recovery, and QA checks |\n| [MCP Abilities - Formidable](https://github.com/bjornfix/mcp-abilities-formidable) | 6 | Formidable Forms settings, usage tracing, styles, and CSS cache controls |\n\n**Total ecosystem: 286 abilities**\n\nInstall only what you need. Running GeneratePress? Install that add-on. Don't use Elementor? Skip it.\n\n## Requirements\n\n- WordPress 6.9+\n- PHP 8.0+\n- [Abilities API](https://github.com/WordPress/abilities-api) plugin (WordPress core team)\n- [MCP Adapter](https://github.com/WordPress/mcp-adapter) plugin (WordPress core team)\n- Use the official Abilities API release ZIP (`abilities-api.zip`) so it installs as `wp-content/plugins/abilities-api/abilities-api.php`\n\n## WordPress Compatibility\n\n- Requires WordPress 6.9 or newer\n- Tested up to WordPress 7.0\n- Requires PHP 8.0 or newer\n- Maintained against the WordPress 6.9 release line together with the supported add-on plugins\n\n## Installation\n\n1. Install and activate the required plugins:\n   - Abilities API (official release ZIP): https://github.com/WordPress/abilities-api/releases/latest\n   - MCP Adapter: https://github.com/WordPress/mcp-adapter\n2. Download the latest release from [Releases](https://github.com/bjornfix/mcp-expose-abilities/releases)\n3. Upload via WordPress Admin → Plugins → Add New → Upload Plugin\n4. Activate the plugin\n5. (Optional) Install add-on plugins for vendor-specific features\n\n## Which Add-On Should I Install?\n\nInstall add-ons only when your site actually uses that product:\n\n- Elementor site: install [`mcp-abilities-elementor`](https://github.com/bjornfix/mcp-abilities-elementor)\n- GeneratePress / GenerateBlocks site: install [`mcp-abilities-generatepress`](https://github.com/bjornfix/mcp-abilities-generatepress)\n- Cloudflare-managed site: install [`mcp-abilities-cloudflare`](https://github.com/bjornfix/mcp-abilities-cloudflare)\n- Gmail / Workspace automation: install [`mcp-abilities-workspace`](https://github.com/bjornfix/mcp-abilities-workspace)\n- Rank Math site: install [`mcp-abilities-rankmath`](https://github.com/bjornfix/mcp-abilities-rankmath)\n- Wordfence site: install [`mcp-abilities-wordfence`](https://github.com/bjornfix/mcp-abilities-wordfence)\n- Brevo site: install [`mcp-abilities-brevo`](https://github.com/bjornfix/mcp-abilities-brevo)\n- Toolset site: install [`mcp-abilities-toolset`](https://github.com/bjornfix/mcp-abilities-toolset)\n- WPML site: install [`mcp-abilities-sitepress`](https://github.com/bjornfix/mcp-abilities-sitepress)\n- Formidable Forms site: install [`mcp-abilities-formidable`](https://github.com/bjornfix/mcp-abilities-formidable)\n\nDo not install every add-on by default. Most sites only need one or two.\n\n## Common Failure Pattern\n\nThe most common onboarding mistake is treating this like one plugin instead of a stack.\n\nWhen something does not work, check in this order:\n\n1. Is Abilities API active?\n2. Is MCP Adapter active?\n3. Is MCP Expose Abilities active?\n4. Does the core plugin work without any add-ons?\n5. Is the vendor plugin itself installed and active?\n6. Only then debug the specific add-on\n\n## Recent Changes\n\n### 3.0.43\n\n- Fixed: `plugins/upload` no longer defines a temporary `get_current_screen()` stub, avoiding a fatal redeclare when WordPress loads admin screen helpers during REST/MCP plugin installs.\n\n### 3.0.42\n\n- Added efficient `plugins/list` filtering with a `search` parameter and null-safe no-argument input handling.\n\n### 3.0.41\n\n- Fixed broad content update and patch abilities so they block accidental removal of existing GenerateBlocks/design markup unless explicitly overridden.\n\n### 3.0.40\n\n- Added `content/update-discussion-status` for opening or closing comments and pings on posts/pages.\n\n### 3.0.39\n\n- Added `media/upload-base64` for uploading local or generated media files into the WordPress media library through MCP.\n\n### 3.0.38\n\n- Added `date` support to `content/update-post` for updating local post publish dates.\n- Added post meta support via `content/create-post`, `content/update-post`, `meta/update-post-meta`, and `meta/delete-post-meta`.\n- Security: post meta writes now check per-key `edit_post_meta` / `delete_post_meta` capabilities before modifying metadata.\n\n### 3.0.37\n\n- Docs: removed the stray `Claude` mention from the README workflow wording.\n\n### 3.0.36\n\n- Fixed `plugins/search-directory` so WordPress.org search results are populated correctly when the API returns array-shaped plugin rows.\n- Fixed `plugins/list-updates` so it accepts no-argument execution through the MCP proxy like the older null-safe list abilities.\n\n### 3.0.35\n\n- Added `plugins/search-directory` to search the official WordPress.org plugin directory from MCP.\n- Added `plugins/install-directory` to install WordPress.org plugins by slug.\n- Added `plugins/list-updates` and `plugins/update` for WordPress-native plugin update discovery and execution.\n- Added `plugins/switch` to toggle between installed plugins with rollback if the target activation fails.\n\n### 3.0.34\n\n- Docs: added a clearer GitHub onboarding path with `Start Here`, setup order, first-success checks, and add-on selection guidance.\n- Docs: added explicit WordPress and PHP compatibility notes.\n- Docs: corrected ecosystem add-on and ability counts, including the Formidable add-on and the current Elementor and Rank Math totals.\n- Docs: replaced the stale hardcoded Abilities API ZIP URL with the generic latest-release link.\n- Docs: fixed the GitHub release badge so it follows the actual latest release.\n\n### 3.0.33\n\n- Validates local plugin ZIP signatures before unzip so corrupted `plugins/upload` or `plugins/upload-base64` payloads fail with a direct ZIP-validation error.\n- Intended to pair with the MCP proxy HTTP transport fix that raises the default JSON body limit for large base64 plugin uploads.\n\n## Core Plugin Abilities (67)\n\n### Content Management (24)\n\n| Ability | Description |\n|---------|-------------|\n| `content/list-posts` | List posts with filtering by status, category, author, search |\n| `content/get-post` | Get single post by ID or slug |\n| `content/get-next-post` | Find the next existing post after an ID, even when IDs have gaps |\n| `content/create-post` | Create new post, including `featured_image_id` |\n| `content/update-post` | Update existing post, including `featured_image_id` |\n| `content/delete-post` | Delete post (trash or permanent) |\n| `content/patch-post` | Find/replace in post content |\n| `content/list-pages` | List pages with filtering |\n| `content/get-page` | Get single page by ID or slug |\n| `content/create-page` | Create new page, including `featured_image_id` |\n| `content/update-page` | Update existing page, including `featured_image_id` |\n| `content/update-discussion-status` | Open or close comments and pings for posts/pages |\n| `content/delete-page` | Delete page |\n| `content/patch-page` | Find/replace in page content |\n| `content/list-categories` | List all categories |\n| `content/create-category` | Create new category |\n| `content/update-category` | Update existing category |\n| `content/list-tags` | List all tags |\n| `content/create-tag` | Create new tag |\n| `content/list-media` | List media items |\n| `content/list-users` | List users |\n| `content/search` | Search across posts, pages, media |\n| `content/list-revisions` | List revisions for a post/page |\n| `content/get-revision` | Get specific revision details |\n\n### Menu Management (7)\n\n| Ability | Description |\n|---------|-------------|\n| `menus/list` | List all menus and theme locations |\n| `menus/get-items` | Get items from a menu |\n| `menus/create` | Create new menu |\n| `menus/add-item` | Add item to menu |\n| `menus/update-item` | Update menu item |\n| `menus/delete-item` | Delete menu item |\n| `menus/assign-location` | Assign menu to theme location |\n\n### User Management (5)\n\n| Ability | Description |\n|---------|-------------|\n| `users/list` | List users with roles |\n| `users/get` | Get user by ID, login, or email |\n| `users/create` | Create new user |\n| `users/update` | Update user |\n| `users/delete` | Delete user (can reassign content) |\n\n### Media Library (4)\n\n| Ability | Description |\n|---------|-------------|\n| `media/upload` | Upload media from URL |\n| `media/get` | Get media item details and sizes |\n| `media/update` | Update title, alt, caption |\n| `media/delete` | Delete media item |\n\n### Widget Management (3)\n\n| Ability | Description |\n|---------|-------------|\n| `widgets/list-sidebars` | List all widget areas |\n| `widgets/get-sidebar` | Get widgets in a sidebar |\n| `widgets/list-available` | List available widget types |\n\n### Plugin Management (11)\n\n| Ability | Description |\n|---------|-------------|\n| `plugins/upload` | Upload plugin from URL |\n| `plugins/upload-base64` | Upload plugin from local file (base64 or zip path) |\n| `plugins/search-directory` | Search the official WordPress.org plugin directory |\n| `plugins/install-directory` | Install plugin from the official WordPress.org plugin directory by slug |\n| `plugins/list` | List installed plugins |\n| `plugins/list-updates` | List available plugin updates |\n| `plugins/update` | Update an installed plugin |\n| `plugins/activate` | Activate installed plugin |\n| `plugins/deactivate` | Deactivate active plugin |\n| `plugins/switch` | Activate one plugin and deactivate one or more others |\n| `plugins/delete` | Delete inactive plugin |\n\n### Comments (6)\n\n| Ability | Description |\n|---------|-------------|\n| `comments/list` | List comments with filtering |\n| `comments/get` | Get single comment details |\n| `comments/create` | Create top-level comment |\n| `comments/reply` | Reply to existing comment |\n| `comments/update-status` | Update comment status (approve, spam, trash) |\n| `comments/delete` | Delete comment |\n\n### Options (3)\n\n| Ability | Description |\n|---------|-------------|\n| `options/get` | Get option value |\n| `options/update` | Update option (protected options blocked) |\n| `options/list` | List all options |\n\n### System (3)\n\n| Ability | Description |\n|---------|-------------|\n| `system/get-transient` | Get transient value |\n| `system/debug-log` | Read debug.log file |\n| `system/toggle-debug` | Toggle WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY |\n\n### Taxonomy Utilities (1)\n\n| Ability | Description |\n|---------|-------------|\n| `taxonomy/associate-with-post-type` | Associate a taxonomy with a post type and persist the mapping |\n\n## Add-on Plugin Abilities\n\n### Filesystem (mcp-abilities-filesystem) - 11 abilities\n\n| Ability | Description |\n|---------|-------------|\n| `filesystem/get-changelog` | Get plugin/theme changelog |\n| `filesystem/read-file` | Read file contents (security hardened) |\n| `filesystem/write-file` | Write file (PHP code blocked) |\n| `filesystem/append-file` | Append to file |\n| `filesystem/list-directory` | List directory contents |\n| `filesystem/delete-file` | Delete file (creates backup) |\n| `filesystem/delete-directory` | Delete directory (optional recursive) |\n| `filesystem/file-info` | Get file metadata |\n| `filesystem/create-directory` | Create directory |\n| `filesystem/copy-file` | Copy file |\n| `filesystem/move-file` | Move/rename file |\n\n### Elementor (mcp-abilities-elementor) - 40 abilities\n\nSee the add-on readme for the full list. Common abilities:\n\n| Ability | Description |\n|---------|-------------|\n| `elementor/get-data` | Get Elementor JSON for a page |\n| `elementor/update-data` | Replace Elementor JSON |\n| `elementor/patch-data` | Find/replace in Elementor JSON |\n| `elementor/update-element` | Update specific element by ID |\n| `elementor/list-templates` | List saved templates |\n| `elementor/clear-cache` | Clear CSS cache |\n\n### GeneratePress (mcp-abilities-generatepress) - 26 abilities\n\nSee the add-on readme for the full list. Common abilities:\n\n| Ability | Description |\n|---------|-------------|\n| `generatepress/get-settings` | Get theme settings |\n| `generatepress/update-settings` | Update theme settings |\n| `generatepress/get-typography` | Get typography rules and font manager |\n| `generatepress/list-elements` | List GeneratePress Elements |\n| `generatepress/list-modules` | List module statuses |\n| `generateblocks/get-global-styles` | Get global styles |\n| `generateblocks/update-global-styles` | Update global styles |\n| `generateblocks/clear-cache` | Clear CSS cache |\n\n### Cloudflare (mcp-abilities-cloudflare) - 4 abilities\n\n| Ability | Description |\n|---------|-------------|\n| `cloudflare/clear-cache` | Clear Cloudflare cache (entire site or specific URLs) |\n| `cloudflare/get-zone` | Get resolved Cloudflare zone context |\n| `cloudflare/get-development-mode` | Read development mode status |\n| `cloudflare/set-development-mode` | Enable/disable development mode |\n\n### Google Workspace (mcp-abilities-workspace) - 16 abilities\n\n| Ability | Description |\n|---------|-------------|\n| `gmail/configure` | Set up Gmail API service account credentials |\n| `gmail/status` | Check API connection status and configuration |\n| `gmail/list-labels` | List labels |\n| `gmail/get-label` | Get label by ID |\n| `gmail/create-label` | Create label |\n| `gmail/update-label` | Update label |\n| `gmail/delete-label` | Delete label |\n| `gmail/list` | List inbox messages with filtering |\n| `gmail/list-threads` | List threads |\n| `gmail/get` | Get full email content by ID |\n| `gmail/get-thread` | Get thread details |\n| `gmail/get-attachment` | Fetch attachment as base64 |\n| `gmail/send` | Send email with HTML, attachments, CC, BCC |\n| `gmail/modify` | Modify labels (archive, mark read/unread, etc.) |\n| `gmail/reply` | Reply to an existing email thread |\n| `email/send` | Send email via WordPress wp_mail (non-Gmail fallback) |\n\n## Usage with MCP Clients\n\n### 1. Create Application Password\n\nWordPress Admin → Users → Your Profile → Application Passwords\n\n### 2. Add MCP Server\n\nConfigure your MCP client to connect to:\n\n`https://yoursite.com/wp-json/mcp/mcp-adapter-default-server`\n\nUse HTTP transport with a Basic Auth header generated from your WordPress username and application password.\n\n### 3. Start Using\n\nYour MCP client can now edit your WordPress site through conversation.\n\n## Examples\n\n### Create a new page\n\n```json\n{\n  \"ability_name\": \"content/create-page\",\n  \"parameters\": {\n    \"title\": \"About Us\",\n    \"content\": \"\u003c!-- wp:paragraph --\u003e\u003cp\u003eHello world!\u003c/p\u003e\u003c!-- /wp:paragraph --\u003e\",\n    \"status\": \"publish\"\n  }\n}\n```\n\n### Add menu item\n\n```json\n{\n  \"ability_name\": \"menus/add-item\",\n  \"parameters\": {\n    \"menu_id\": 5,\n    \"title\": \"Contact\",\n    \"url\": \"/contact/\"\n  }\n}\n```\n\n### Upload media from URL\n\n```json\n{\n  \"ability_name\": \"media/upload\",\n  \"parameters\": {\n    \"url\": \"https://example.com/image.jpg\",\n    \"title\": \"Hero Image\",\n    \"alt_text\": \"Beautiful sunset\"\n  }\n}\n```\n\n### Batch find/replace\n\n```json\n{\n  \"ability_name\": \"content/patch-post\",\n  \"parameters\": {\n    \"id\": 123,\n    \"find\": \"+44 203 3181 832\",\n    \"replace\": \"\u003ca href=\\\"tel:+442033181832\\\"\u003e+44 203 3181 832\u003c/a\u003e\"\n  }\n}\n```\n\n## Security\n\n- **Authentication required** - Uses WordPress application passwords\n- **Permission checks** - Every ability verifies user capabilities\n- **Your server** - AI connects to your site, you control access\n- **Protected options** - Critical settings blocked from modification\n- **Filesystem hardening** - PHP code detection, path traversal protection (in add-on)\n\n## Architecture\n\nThree-plugin stack plus optional add-ons:\n\n1. **[Abilities API](https://github.com/WordPress/abilities-api)** - Framework for registering abilities (WordPress core team)\n2. **[MCP Adapter](https://github.com/WordPress/mcp-adapter)** - MCP protocol layer (WordPress core team)\n3. **MCP Expose Abilities** (this plugin) - Core WordPress abilities\n4. **Add-on plugins** (optional) - Vendor-specific abilities\n\n## Changelog\n\n### 3.0.42\n- Added: `plugins/list` now supports a `search` parameter for filtering installed plugins by file, slug, name, author, or description.\n- Fixed: `plugins/list` now accepts no-argument execution through the MCP proxy like the other null-safe list abilities.\n\n### 3.0.41\n- Fixed: broad content update and patch abilities now block accidental removal of existing GenerateBlocks/design markup unless explicitly overridden.\n\n### 3.0.40\n- Added: `content/update-discussion-status` for opening or closing comments and pings on posts/pages.\n\n### 3.0.39\n- Added: `media/upload-base64` for uploading local/generated media files into the WordPress media library through MCP\n\n### 3.0.38\n- Added: `content/update-post` now supports updating the local post date with the `date` parameter\n- Added: post meta support via `content/create-post`, `content/update-post`, `meta/update-post-meta`, and `meta/delete-post-meta`\n- Security: post meta writes now check per-key `edit_post_meta` / `delete_post_meta` capabilities before modifying metadata\n\n### 3.0.37\n- Docs: removed the stray `Claude` mention from the GitHub README workflow wording\n\n### 3.0.36\n- Fixed: `plugins/search-directory` now handles WordPress.org directory rows correctly when plugin data is returned as arrays instead of objects\n- Fixed: `plugins/list-updates` now accepts no-argument execution through the MCP proxy like the other null-safe list abilities\n\n### 3.0.35\n- Added: `plugins/search-directory` to search the official WordPress.org plugin directory from MCP\n- Added: `plugins/install-directory` to install plugins from the official WordPress.org directory by slug\n- Added: `plugins/list-updates` and `plugins/update` for WordPress-native plugin update discovery and execution\n- Added: `plugins/switch` to toggle between installed plugins with rollback if the target activation fails\n\n### 3.0.34\n- Docs: added a clearer GitHub onboarding path with `Start Here`, setup order, first-success checks, and add-on selection guidance\n- Docs: added explicit WordPress and PHP compatibility notes\n- Docs: corrected ecosystem add-on and ability counts, including the Formidable add-on and the current Elementor and Rank Math totals\n- Docs: replaced the stale hardcoded Abilities API ZIP URL with the generic latest-release link\n- Docs: fixed the GitHub release badge so it follows the actual latest release\n\n### 3.0.33\n- Fixed: plugin upload paths now validate local ZIP signatures before unzip so corrupted payloads fail with a direct ZIP-validation error\n- Improved: pairs with proxy-side HTTP JSON limit hardening so larger `plugins/upload-base64` requests are not rejected or truncated at the MCP proxy layer\n\n### 3.0.31\n- Fixed: featured-image create/update paths are now idempotent when the requested image is already assigned\n\n### 3.0.30\n- Fixed: `plugins/upload` and `plugins/upload-base64` now fall back to `copy_dir()` when filesystem `move()` fails after unzip\n- Improved: plugin install failures now include the underlying filesystem context\n\n### 3.0.29\n- Fixed: `content/update-post` now clears stale invalid assigned page-template metadata before unrelated post updates\n- Fixed: `content/update-page` now clears stale invalid assigned templates on update and validates explicit `template` input\n- Fixed: `content/create-page` now validates explicit page-template slugs before saving them\n\n### 3.0.28\n- Added `featured_image_id` support to post/page create and update abilities\n- Added `featured_image_id` to `content/get-post` and `content/get-page`\n\n### 3.0.27\n- Fixed: `content/get-next-post` now applies the `after_id` floor correctly by allowing the query filter to run\n\n### 3.0.26\n- Added: `content/get-next-post` to find the next existing post after an ID, even when IDs have gaps\n- Improved: `content/list-posts` now accepts case-insensitive `order` values and friendly `orderby` aliases like `id` and `slug`\n- Improved: `content/get-post` now accepts `post_type` for slug lookups and returns clearer missing-post context\n### 3.0.25\n- Fixed: `users/delete` now loads `wp-admin/includes/user.php` before calling `wp_delete_user()` in REST/MCP contexts\n\n### 3.0.24\n- Performance: debug log reader now tails file content instead of loading full files\n- Security: `options/get` blocks sensitive option names (tokens, keys, secrets)\n- Schema: output schemas added for comments and taxonomy-association abilities\n\n### 3.0.23\n- Added: `content/update-category` ability\n- Fixed: Translator comment for placeholder string in post type validation\n- Fixed: Stable tag alignment with plugin version\n\n### 3.0.17\n- Fixed: Use literal text domain in translation calls\n- Fixed: Add translators comments for placeholder strings\n\n### 3.0.16\n- Added: `include_totals` flag plus `has_more`/`returned` output for list-posts/list-pages/list-media to avoid expensive counts by default\n\n### 3.0.15\n- Added: plugins/upload-base64 now accepts `zip_path` for server-local zip installs\n- Fixed: no-params abilities accept null input (menus/list, widgets/list-sidebars, widgets/list-available)\n\n### 3.0.14\n- Fixed: plugins/delete now loads core file helpers before deletion\n\n### 3.0.13\n- Added: Shared pagination normalization for core list abilities\n\n### 3.0.12\n- Fixed: plugins/upload now loads WordPress download helpers in non-admin contexts\n\n### 3.0.11\n* Added: plugins/upload-base64 ability for local file uploads\n\n### 3.0.10\n- Added: `content/create-category` ability\n\n### 3.0.9\n- Security: Added per-item capability checks for content, media, users, and comments\n\n### 3.0.8\n- Added: `plugins/activate` ability to activate installed plugins\n- Added: `plugins/deactivate` ability to deactivate active plugins\n\n### 3.0.7\n- Improved: All 47 ability descriptions now include parameter hints\n\n### 3.0.6\n- Added: `comments/create` ability for top-level comments\n\n### 3.0.5\n- Added: `plugins/delete` ability to remove inactive plugins\n\n### 3.0.4\n- Fixed: Use WP_Filesystem API instead of native PHP functions\n- Fixed: Replaced wp_get_sidebars_widgets with direct option call\n\n### 3.0.3\n- Added: Revisions abilities (`content/list-revisions`, `content/get-revision`)\n- Added: Comments abilities (list, get, create, reply, update-status, delete)\n- Added: `author_id` parameter for content creation\n\n### 3.0.0\n- **Breaking:** Modular architecture - vendor-specific abilities moved to add-on plugins\n- Core plugin now contains only WordPress-native abilities\n- Add-on plugins: Filesystem (10), Elementor (6), GeneratePress (5), Cloudflare (1), Google Workspace (8)\n- Cleaner installation - install only what you need\n\n### 2.2.12\n- Security: Added protected options blocklist (active_plugins, siteurl, admin_email, etc.)\n- Security: Prevents accidental site breakage via options/update\n\n### 2.2.11\n- Security: Added UTF-7 and UTF-16 encoding bypass detection\n- Security: Blocks encoded PHP injection attempts\n\n### 2.2.10\n- Security: Major filesystem security hardening\n- Security: PHP code detection in file writes\n- Security: Path traversal protection\n- Security: Restricted to wp-content directory\n\n### 2.1.0\n- Added: Filesystem abilities\n- Added: Options abilities\n- Added: System abilities\n- Added: Cloudflare cache clear ability\n- Added: `elementor/update-element` for targeted element updates\n\n### 2.0.0\n- Added: Menu, User, Media, Widget, Page abilities\n\n### 1.0.0\n- Initial release\n\n## Contributing\n\nPRs welcome! For vendor-specific abilities, consider creating an add-on plugin.\n\n## License\n\nGPL-2.0+\n\n## Author\n\n[Devenia](https://devenia.com) - We've been doing SEO and web development since 1993.\n\n## Links\n\n- [Plugin Page](https://devenia.com/plugins/mcp-expose-abilities/)\n- [MCP Abilities - Toolset](https://github.com/bjornfix/mcp-abilities-toolset)\n- [Abilities API](https://github.com/WordPress/abilities-api) (WordPress core team)\n- [MCP Adapter](https://github.com/WordPress/mcp-adapter) (WordPress core team)\n\n## Star and Share\n\nIf this ecosystem saves you time, gives your team a saner way to handle WordPress work, or helps you finally get through the repetitive maintenance nobody wants to do, please:\n\n- star the repo\n- share it with people running WordPress sites\n- point them to the wiki so they can see what the ecosystem can actually do\n\nWhy do it?\n\nBecause this is good for the WordPress ecosystem as a whole. The more people use agent-friendly open WordPress tooling, the more of the boring but important work actually gets done instead of sitting in a backlog forever.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjornfix%2Fmcp-expose-abilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjornfix%2Fmcp-expose-abilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjornfix%2Fmcp-expose-abilities/lists"}