MCP Adapter

Description

Part of the AI Building Blocks for WordPress initiative.

The MCP Adapter bridges WordPress’s Abilities API with the Model Context Protocol (MCP) specification, providing a standardized way for AI agents to interact with WordPress functionality. It includes HTTP and STDIO transport support, comprehensive error handling, and an extensible architecture for custom integrations.

Features:

  • Ability-to-MCP Conversion – Automatically converts WordPress abilities into MCP tools, resources, and prompts.
  • Multi-Server Management – Create and manage multiple MCP servers with unique configurations.
  • Extensible Transport Layer – Built-in HTTP and STDIO transports, plus support for custom transport protocols.
  • Flexible Error Handling – Default WordPress-compatible error logging with support for custom, server-specific handlers.
  • Observability – Zero-overhead metrics tracking with configurable handlers.
  • Permission Control – Granular, configurable permission checking for all exposed functionality.

Installation

  1. Go to Plugins > Add New in your WordPress admin, search for “MCP Adapter”, and click Install Now.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress.
  3. Register the abilities you want to expose, or install a plugin that registers them for you.

You can also upload the plugin ZIP via Plugins > Add New > Upload Plugin, or install it with WP-CLI:

wp plugin install mcp-adapter --activate

FAQ

What is MCP?

Model Context Protocol is an open standard for connecting AI agents to external systems. Instead of every AI client needing its own custom integration, a system exposes what it can do as MCP tools, resources and prompts, and any MCP-compatible client can use them. See modelcontextprotocol.io for the specification.

What is MCP Adapter?

MCP Adapter is the server and transport layer. It does not provide any AI features itself.

What it exposes comes from the WordPress Abilities API. An ability is a single capability registered by WordPress core or by another plugin, such as reading posts or updating a setting. MCP Adapter takes the abilities registered on your site, makes them available to MCP clients, and handles protocol negotiation, permissions and error handling.

That means you also need abilities on the site for this to be useful, from core or from a plugin that registers its own.

How do AI agents connect to my site?

The adapter registers MCP endpoints over the built-in HTTP transport. Point an MCP-compatible client at the endpoint and authenticate as a WordPress user. The adapter supports exact MCP revisions 2025-11-25 and 2026-07-28. See the getting started guide for endpoint details.

Does every registered ability get exposed automatically?

No, exposure is opt-in. An ability is only reachable over MCP if it has been marked public, and permission checks still run against the current user before anything executes. See the documentation for how to opt abilities in and out.

Where do I report bugs or request features?

On the GitHub repository. Security issues should follow the process in SECURITY.md rather than being reported publicly.

Plugin developers should depend on MCP Adapter by adding Requires Plugins: mcp-adapter to their plugin header. See the README for WP-CLI and wp-env options.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“MCP Adapter” is open source software. The following people have contributed to this plugin.

Contributors

Translate “MCP Adapter” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

0.7.0 – 2026-10-02

Breaking Changes

  • The adapter serves exactly two MCP schema revisions, 2025-11-25 and 2026-07-28. Clients that propose 2025-06-18 or 2024-11-05 still connect and are served through the 2025-11-25 schema.
  • The generated DTO classes, the McpToolValidator, McpResourceValidator, and McpPromptValidator classes, and the mcp_adapter_validation_enabled filter have been removed. Wire validation always runs through the selected schema.
  • Invalid protocol fields are no longer silently dropped or repaired. Components that no supported revision can represent are rejected.
  • Custom transports must delegate to HttpRequestHandler or McpWireOrchestrator. JSON-RPC batch requests are rejected.
  • WP\MCP\Cli classes are final.

Added

  • MCP 2026-07-28 support, including the sessionless server/discover lifecycle and the new HTTP headers.
  • Direct callable tools can request elicitation input under 2026-07-28 by returning McpInputRequired.
  • McpRequestContext, an immutable per-request context with the selected schema, transport, and session data.

Changed

  • Using MCP Adapter as a bundled library is deprecated. Install the MCP Adapter plugin instead.

Fixed

  • mcp-adapter/get-ability-info serializes an empty input_schema as {} instead of [].
  • Default abilities register when another plugin initializes the Abilities API before the MCP server initializes.

See the 0.7.0 migration guide and CHANGELOG.md for the full list of changes.

0.6.1 – 2026-08-13

Fixed

  • The release ZIP no longer ships a Jetpack Autoloader class map pointing at files the ZIP omits. In 0.6.0 the class map listed test-only global classes, including WP_CLI and WP_CLI_Command, and mapped them to files under tests/phpunit/, which the release artifact excludes. Any plugin calling class_exists( 'WP_CLI' ) on a normal web request could therefore trigger an uncaught fatal error. class_exists( 'WP_CLI' ) now returns false when WP-CLI is unavailable (#283).

No API, hook, or protocol behavior changed. Upgrading from 0.6.0 requires no migration. Installations built from source or required through Composer were unaffected.

0.6.0 – 2026-08-12

Breaking Changes

  • WordPress 6.9 or newer is now required. The standalone Abilities API plugin is no longer a supported installation path.
  • Abilities with meta.public: true are now exposed through the default MCP server unless meta.mcp.public explicitly opts out. Existing permission callbacks and capability checks still apply.
  • On multisite only, active Streamable HTTP sessions must reconnect once after upgrading, because session storage moves from a network-wide key to separate per-site keys. Single-site installations are unaffected.
  • The MIME validation helpers previously exposed by McpValidator have been removed. Integrations calling them directly should apply their own application-specific MIME validation.

Added

  • Support for resources/templates/list, returning an empty template list when no templates are available.
  • Blocked direct execution of plugin PHP files.
  • Expanded automated compatibility, dependency, and Plugin Check coverage.

Changed

  • Jetpack Autoloader is now used so the newest available WP\MCP classes win when the standalone adapter and another plugin bundle different versions.
  • Session storage is scoped by blog on WordPress multisite.
  • Concurrent session mutations are protected with bounded retries, reducing the risk of one request overwriting another session.
  • Documentation clarifies that the Abilities API is included in WordPress 6.9 and newer, documents the required ability category field, and improves examples throughout.

Fixed

  • _meta is preserved on resource contents, embedded resources, content blocks, and prompt messages.
  • Malformed _meta is omitted without discarding the payload it accompanies.
  • mimeType is emitted exactly as declared, including values with parameters such as text/html;profile=mcp-app.
  • Blob-only resource contents are handled correctly.
  • Resource URI schemes are matched case-insensitively, so clients can read resources even when they normalize the scheme to lowercase.
  • Empty arguments are normalized for schema-defining abilities, allowing valid zero-argument tool calls to execute.
  • wp mcp-adapter serve keeps JSON-RPC stdout clean when selecting the default server.
  • WP-CLI’s global --user argument is used instead of registering a conflicting local option.

For older releases, see CHANGELOG.md.