Automattic\WooCommerce\Internal\MCP
MCPAdapterProvider::initialize_mcp_server
Initialize MCP server.
Method of the class: MCPAdapterProvider{}
No Hooks.
Returns
null. Nothing (null).
Usage
$MCPAdapterProvider = new MCPAdapterProvider(); $MCPAdapterProvider->initialize_mcp_server( $adapter ): void;
- $adapter(object) (required)
- MCP adapter instance.
MCPAdapterProvider::initialize_mcp_server() MCPAdapterProvider::initialize mcp server code WC 10.7.0
public function initialize_mcp_server( $adapter ): void {
// Get filtered abilities for MCP server.
$abilities_ids = $this->get_woocommerce_mcp_abilities();
// Bail if no abilities are available.
if ( empty( $abilities_ids ) ) {
return;
}
/*
* Temporarily disable MCP validation during server creation.
* Workaround for validator bug with union types (e.g., ["integer", "null"]).
* This will be removed once the mcp-adapter validator bug is fixed.
*
* @see https://github.com/WordPress/mcp-adapter/issues/47
*/
add_filter( 'mcp_validation_enabled', array( __CLASS__, 'disable_mcp_validation' ), 999 );
try {
// Create MCP server.
$adapter->create_server(
'woocommerce-mcp',
self::MCP_NAMESPACE,
self::MCP_ROUTE,
__( 'WooCommerce MCP Server', 'woocommerce' ),
__( 'AI-accessible WooCommerce operations via MCP', 'woocommerce' ),
'1.0.0',
array( WooCommerceRestTransport::class ),
\WP\MCP\Infrastructure\ErrorHandling\ErrorLogMcpErrorHandler::class,
\WP\MCP\Infrastructure\Observability\NullMcpObservabilityHandler::class,
$abilities_ids,
);
} catch ( \Throwable $e ) {
if ( function_exists( 'wc_get_logger' ) ) {
wc_get_logger()->error(
'MCP server initialization failed: ' . $e->getMessage(),
array( 'source' => 'woocommerce-mcp' )
);
}
} finally {
// Re-enable MCP validation immediately after server creation.
remove_filter( 'mcp_validation_enabled', array( __CLASS__, 'disable_mcp_validation' ), 999 );
}
}