Last month a client came to me with a common headache. They wanted their AI support agent, which runs on Claude, to check real-time stock levels in a custom WooCommerce setup. My first instinct was the easy route: write a quick wrapper around a couple of REST API endpoints. That lasted about ten minutes. Then the agent started hallucinating because it couldn’t handle a simple timeout error.
That is why the WordPress MCP Adapter exists. It saves you from rebuilding the same bridge every time an AI agent needs to talk to a WordPress site. Version 0.3.0 deals with several of the growing pains in connecting the Model Context Protocol (MCP) to the WordPress core environment.
Standardizing the WordPress MCP Adapter
If you haven’t run into it yet, MCP is a shared language for AI tools. Rather than writing custom API calls for every LLM, you define Abilities in WordPress and the adapter translates them into something an AI can use. Early versions, though, were loose about error handling and transport layers.
I learned this the hard way. I put the old StreamableTransport on a production server because it sounded more modern. Without the strict session management that arrived in v0.3.0 it was brittle: one dropped connection and the agent was lost. The unified HttpTransport in this release is far steadier, and it follows the June 2025 MCP spec instead of approximating it.
What changed in 0.3.0
The biggest shift for developers is the move to WP_Error. WordPress developers have lived and breathed WP_Error for years, but early AI experiments usually threw PHP exceptions instead, which never sat right in a WordPress context. Version 0.3.0 refactors error handling so it behaves like native WordPress again. You no longer catch exceptions in your tool responses; you return a WP_Error and let the adapter do the MCP formatting.
They also cleaned up the hook system, and everything carries an mcp_adapter_ prefix now. Small change, but on a site with 50 plugins you will be glad you aren’t hunting through generic filter names. The new transport configuration looks like this in your server setup:
use WP\MCP\Transport\HttpTransport;
$bbioon_adapter = bbioon_get_mcp_adapter();
$bbioon_adapter->create_server(
'bbioon-inventory-server',
'bbioon-namespace',
'mcp',
'Bbioon Inventory Tools',
'Allows AI to check stock levels',
'1.0.0',
[ HttpTransport::class ],
\WP\MCP\Infrastructure\ErrorHandling\ErrorLogMcpErrorHandler::class
);
Where hand-rolled bridges break
The mistake in AI development right now is treating an LLM as if it were another human user. It needs structured, predictable interfaces instead. Version 0.3.0 of the adapter adds unified observability, so you get a single event stream (mcp.request) rather than logs scattered everywhere. When a request fails, you can see why and where.
This stuff gets complicated fast. If you are tired of debugging someone else’s mess and just want an AI integration that doesn’t time out every five minutes, drop my team a line. We have seen these protocol errors before and we know how to fix them.
If you are still on v0.2.x, go read the migration guide in the repo. The move to instance-based observability and the new HTTP spec is the groundwork you need before agentic commerce is worth attempting.