Both halves of this stack are still moving. The Abilities API shipped in WordPress core 6.9, which is recent, and the MCP Adapter is an actively developed plugin, not a finished, frozen product. Code you write today needs to survive both kinds of change gracefully: core additions that are backward-compatible by WordPress’s own long-standing policy, and adapter releases that might genuinely change internals you’re depending on. This lesson is about depending on the right things, and watching the right places, so neither kind of change breaks you.
This lesson assumes you’ve used the observability and error-handling interfaces from
Lesson 3 and the create_server() API from Lesson 2, since this lesson is specifically
about which of those things are safe to depend on long-term.
Step 1: Depend on the interface, not the default implementation
The MCP Adapter ships NullMcpObservabilityHandler and ErrorLogMcpErrorHandler as
convenient defaults, but the actual stable contract you should be coding against is the
interface each one implements:
WP\MCP\Infrastructure\Observability\Contracts\McpObservabilityHandlerInterface and
WP\MCP\Infrastructure\ErrorHandling\Contracts\McpErrorHandlerInterface. Your own
handler implements the interface; it doesn’t extend or wrap the default classes. This
is ordinary good PHP practice, but it matters more than usual here because the default
implementations are the parts most likely to gain new internal behavior between
releases, while the interface’s method signature is the part the adapter’s own
maintainers have the strongest incentive to keep stable.
// File: my-plugin.php
// Depend on this (stable contract):
use WP\MCP\Infrastructure\Observability\Contracts\McpObservabilityHandlerInterface;
// Not on internals of this (an implementation detail you don't control):
// WP\MCP\Infrastructure\Observability\NullMcpObservabilityHandler
Step 2: Trust core’s own deprecation policy, but verify plugin behavior yourself
WordPress core has a strong, decades-long track record of not removing functions
outright, deprecating them with _deprecated_function() and a clear notice while
keeping the old behavior working for a long transition window. That policy gives you
real confidence that wp_register_ability() and the rest of the Abilities API’s core
functions won’t disappear or silently change behavior without a loud, documented
warning first.
The MCP Adapter, as a plugin rather than core, doesn’t carry that same multi-year compatibility guarantee by default, plugin authors set their own policy. Read its actual changelog before bumping a version pin, and treat a major version bump in its own versioning the same way you’d treat any other dependency’s major bump: a signal to actually read the notes, not just update and hope.
Step 3: Pin and review, don’t float and hope
// File: composer.json
{
"require": {
"php": ">=8.1"
}
}
If you’re depending on the MCP Adapter as an installed plugin rather than a Composer dependency (the common case, since it’s typically installed as a regular WordPress plugin), the equivalent discipline is: don’t enable auto-updates on it for a production site without first reading the release notes in a staging environment. This isn’t paranoia specific to this plugin, it’s the same policy a careful team already applies to WooCommerce or any other plugin core business logic depends on.
Step 4: Track the real roadmap, not guesses
github.com/WordPress/abilities-api was the pre-core feature-plugin repository used
to develop the Abilities API before it merged into WordPress core 6.9. It’s now
archived. If you find tutorials or old bookmarks pointing at it as if it were an active
project, treat that as outdated, the real, current work happens in WordPress core
itself and in the separate, actively maintained github.com/WordPress/mcp-adapter
repository.
The actual place to watch for what’s coming next is make.wordpress.org/ai/, the
WordPress AI team’s public blog, which posts regular contributor summaries covering
in-progress work on both the Abilities API and the MCP Adapter. This is meaningfully
different from asking an AI model what’s coming, or trusting a third-party blog’s
speculation: it’s the team actually doing the work, publishing what they’re actually
doing, in public, on a WordPress.org-hosted make blog exactly like every other core
team.
| Question | Where to check |
|---|---|
| Is a core Abilities API function deprecated or changing? | Core Trac, and the Abilities API section of developer.wordpress.org |
| What’s the MCP Adapter’s current version and recent changes? | The plugin’s own changelog / GitHub releases |
| What is the AI team actively working on right now? | make.wordpress.org/ai/ weekly contributor summaries |
| Is a pattern from an old tutorial still accurate? | Cross-check against the current developer.wordpress.org reference, not the tutorial’s publish date |
Test it
Before your next MCP Adapter update in a real project, do this check as a habit: read
the plugin’s changelog entry for the version you’re moving to, grep your own codebase
for every class name you reference from the adapter’s namespace, and confirm none of
them are internal classes (anything not under a Contracts namespace or not
documented as a public entry point).
grep -rn "WP\\\\MCP\\\\" --include="*.php" .
Review that list against what’s actually documented as a stable extension point before assuming an upgrade is safe.
Recap
Future-proofing here means two distinct disciplines: trusting WordPress core’s own
strong deprecation policy for the Abilities API itself, while treating the MCP Adapter,
a separate, actively developing plugin, with the same version-review discipline you’d
apply to any other significant plugin dependency. Depend on documented interfaces
(McpObservabilityHandlerInterface, McpErrorHandlerInterface) rather than default
implementation classes, and track real progress at make.wordpress.org/ai/, not old
archived repositories or speculation.
Resources & further reading
- make.wordpress.org/ai/, make.wordpress.org
- MCP Adapter repository, GitHub
- Abilities API reference, developer.wordpress.org