IMAGIFY_PATH, ] ); $plugin->init( $providers ); // Boot the MCP adapter after providers/subscribers are wired so that // ConfigSubscriber and AbilitiesSubscriber are already listening before // the adapter fires `mcp_adapter_init` / `wp_abilities_api_*` actions // (those fire from `rest_api_init` priority 15, well after `plugins_loaded`). $can_boot_mcp_adapter = class_exists( \WP\MCP\Core\McpAdapter::class ) && function_exists( 'wp_register_ability' ) && function_exists( 'wp_get_ability' ) && function_exists( 'wp_get_abilities' ) && function_exists( 'wp_register_ability_category' ); if ( $can_boot_mcp_adapter ) { \WP\MCP\Core\McpAdapter::instance(); // Boot the shared MCP OAuth library (wp-media/mcp-oauth) so Claude Desktop // (and any other MCP client) can authenticate against the isolated // `mcp-oauth-server` it registers. The library self-wires its own // WordPress hooks and is enabled by default; Imagify has no custom OAuth // code. It relies on the MCP adapter, so it only boots when the adapter can. if ( class_exists( \WPMedia\MCP\OAuth\Bootstrap::class ) ) { \WPMedia\MCP\OAuth\Bootstrap::instance(); } } } add_action( 'plugins_loaded', 'imagify_init' );