| @@ -30,6 +30,30 @@ | ||
| 30 | 30 | ] |
| 31 | 31 | ); |
| 32 | 32 | |
| 33 | 33 | $plugin->init( $providers ); |
| 34 | + | |
| 35 | + // Boot the MCP adapter after providers/subscribers are wired so that | |
| 36 | + // ConfigSubscriber and AbilitiesSubscriber are already listening before | |
| 37 | + // the adapter fires `mcp_adapter_init` / `wp_abilities_api_*` actions | |
| 38 | + // (those fire from `rest_api_init` priority 15, well after `plugins_loaded`). | |
| 39 | + $can_boot_mcp_adapter = | |
| 40 | + class_exists( \WP\MCP\Core\McpAdapter::class ) | |
| 41 | + && function_exists( 'wp_register_ability' ) | |
| 42 | + && function_exists( 'wp_get_ability' ) | |
| 43 | + && function_exists( 'wp_get_abilities' ) | |
| 44 | + && function_exists( 'wp_register_ability_category' ); | |
| 45 | + | |
| 46 | + if ( $can_boot_mcp_adapter ) { | |
| 47 | + \WP\MCP\Core\McpAdapter::instance(); | |
| 48 | + | |
| 49 | + // Boot the shared MCP OAuth library (wp-media/mcp-oauth) so Claude Desktop | |
| 50 | + // (and any other MCP client) can authenticate against the isolated | |
| 51 | + // `mcp-oauth-server` it registers. The library self-wires its own | |
| 52 | + // WordPress hooks and is enabled by default; Imagify has no custom OAuth | |
| 53 | + // code. It relies on the MCP adapter, so it only boots when the adapter can. | |
| 54 | + if ( class_exists( \WPMedia\MCP\OAuth\Bootstrap::class ) ) { | |
| 55 | + \WPMedia\MCP\OAuth\Bootstrap::instance(); | |
| 56 | + } | |
| 57 | + } | |
| 34 | 58 | } |
| 35 | 59 | add_action( 'plugins_loaded', 'imagify_init' ); |