WordPress Plugin MCP Server
Official WordPress package that bridges the WordPress Abilities API to MCP, letting AI agents discover and invoke plugin, theme, and core abilities as MCP tools.
The WordPress MCP Adapter is the official WordPress package for exposing site functionality to AI agents through the Model Context Protocol. It is part of the "AI Building Blocks for WordPress" initiative and adapts abilities registered via the WordPress Abilities API into MCP primitives: tools (executable functions), resources (contextual data), and prompts (structured guidance templates). Plugin and theme developers register abilities once, and the adapter automatically makes them available to any MCP-compatible AI client.
The adapter ships with a default server mounted at /wp-json/mcp/mcp-adapter-default-server and supports both HTTP (MCP 2025-06-18 compliant) and STDIO transports, with an extensible transport layer for custom protocols. Built-in tools allow AI agents to introspect the system: discover-abilities, get-ability-info, and execute-ability. Abilities marked with meta.mcp.public = true are discoverable through the default server, while developers can also spin up multiple custom servers, each with its own namespace, transport list, permission callbacks, error handler, and observability handler.
This is the canonical implementation going forward. The earlier Automattic/wordpress-mcp repository is being deprecated in favor of WordPress/mcp-adapter, and the Abilities API itself is included in WordPress core starting with version 6.9. The package is GPL-2.0-or-later licensed and distributed via Composer (Packagist) as well as a downloadable plugin from GitHub Releases.
Tools
| Tool | Description |
|---|---|
discover-abilities |
Lists the WordPress abilities exposed to the MCP server (those with meta.mcp.public = true or explicitly registered on a custom server). |
get-ability-info |
Retrieves metadata for a specific WordPress ability, including its input/output schema and description. |
execute-ability |
Executes a registered WordPress ability with provided arguments, returning its result through MCP. |
Prerequisites
- PHP 7.4 or higher
- WordPress 6.8+ (6.9+ recommended)
- WordPress Abilities API (built into core in 6.9+; install the
abilities-apiplugin separately for 6.8) - A WordPress user with Application Passwords enabled for HTTP transport
Installation
Recommended (Composer, inside a plugin or theme):
composer require wordpress/mcp-adapter
If you are on WordPress 6.8, also install:
composer require wordpress/abilities-api
Using the Jetpack Autoloader is recommended when multiple plugins depend on this package.
Alternative (clone as a plugin):
git clone https://github.com/WordPress/mcp-adapter.git wp-content/plugins/mcp-adapter
cd wp-content/plugins/mcp-adapter && composer install
Initialization
use WP\MCP\Core\McpAdapter;
if ( ! class_exists( McpAdapter::class ) ) {
return;
}
McpAdapter::instance();
Abilities marked meta.mcp.public = true are automatically exposed by the default server at /wp-json/mcp/mcp-adapter-default-server.
MCP Client Configuration
STDIO via WP-CLI (local development)
{
"mcpServers": {
"wordpress-default": {
"command": "wp",
"args": [
"--path=/path/to/wordpress",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user=admin"
]
}
}
}
HTTP via the Automattic remote proxy (Application Passwords)
{
"mcpServers": {
"wordpress-http": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "http://site.test/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "username",
"WP_API_PASSWORD": "application-password"
}
}
}
}
Creating a Custom Server
add_action( 'mcp_adapter_init', function ( $adapter ) {
$adapter->create_server(
'my-server-id',
'my-namespace',
'mcp',
'My MCP Server',
'Server description',
'v1.0.0',
[ \WP\MCP\Transport\HttpTransport::class ],
ErrorHandlerClass::class,
ObservabilityHandlerClass::class,
[ 'my-plugin/ability-name' ],
[],
[]
);
} );
- Let an AI agent draft, publish, and update WordPress posts and pages by invoking abilities registered by core or content plugins
- Expose WooCommerce product and order abilities (per the canonical WooCommerce abilities API) so an agent can query inventory or fulfill orders
- Allow site administrators to ask an agent to introspect available abilities and run admin tasks (user management, settings updates) safely behind permission callbacks
- Build a custom MCP server scoped to a single plugin's abilities, with its own auth and observability handlers, for partner or SaaS integrations
- Enable conversational site management through Claude Desktop or Cursor against a local WordPress install via WP-CLI STDIO transport
- "Discover the abilities exposed by my WordPress site and list the ones related to posts."
- "Use get-ability-info on
core/create-postand show me the required input schema." - "Create a new draft post titled 'Q3 launch recap' with the body I just gave you."
- "List the last 10 WooCommerce orders with status 'processing' and summarize their totals."
- "Run the
my-plugin/sync-inventoryability and report any errors."
- Official WordPress project (not a community fork), aligned with the Abilities API roadmap shipping in WordPress 6.9
- Automatic conversion of abilities to MCP tools, resources, and prompts, so developers write the integration once
- Multi-server support with per-server transports, permissions, error handlers, and observability handlers
- Supports both HTTP (MCP 2025-06-18 spec) and STDIO transports, plus custom transport classes
- Requires WordPress 6.8+ and the Abilities API, plus Composer-based installation; not a drag-and-drop plugin for typical site owners
- HTTP access depends on a proxy such as
@automattic/mcp-wordpress-remotetogether with Application Passwords; native remote MCP client support is limited - Surface area is only as broad as the abilities registered on the site, so out of the box it does little until plugins or custom code register abilities
- Automattic/wordpress-mcp (predecessor, being deprecated in favor of WordPress/mcp-adapter)
- @automattic/mcp-wordpress-remote as a thin client-side proxy for connecting MCP clients to a WordPress REST endpoint
- Community WordPress REST API MCP wrappers built on the standard
/wp-json/wp/v2endpoints when the Abilities API is not available