- Autoloader: add automattic/jetpack-autoloader and load
vendor/autoload_packages.php; require wordpress/mcp-adapter directly (^0.5).
- ServerRegistrar: make the adapter create_server() call and the
OAuthServerRegistrar class_exists() check injectable so createServer()'s
unhook-before-create ordering and the "mcp-oauth absent" branch are unit
tested; add a smoke-test check that booting REST triggers no
_doing_it_wrong().
- mcp-smoke.sh: assert mcp-adapter's default server route 404s, and that the
subscriber role-gate denial actually carries our/the adapter's denial text
(not just any isError/error).
- Guard tests/Integration/mint-token.php and tec-probe.php with
`defined('WP_CLI') && WP_CLI || exit;`; add .gitattributes export-ignore
for tests/docs-superpowers/.superpowers/phpunit/phpcs config.
- Security: add Server/RequestContext, tracking via
rest_request_before_callbacks whether the current REST dispatch is our
OAuth-protected /mcp/mcp-oauth-server route; AbilityRegistrar's
permission_callback now denies (after the role gate) when abilities are
invoked outside that route. Wired in Plugin::boot().
- Minors: single Plugin::VERSION constant used by ServerRegistrar;
IntegrationRegistry caches its computed abilities list; tec-probe.php
checks wp_insert_post's result and cleans up its probe post in a
try/finally.
composer test: 47/47 green. composer lint: clean. Full mcp-smoke.sh run ends
ALL CHECKS PASSED (plus the expected /.well-known WARN).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
38 lines
968 B
PHP
38 lines
968 B
PHP
<?php
|
||
|
||
/**
|
||
* Plugin Name: WP-LIT-MCP
|
||
* Description: MCP-Server für WordPress, Divi 5 und Pods – mit OAuth für claude.ai.
|
||
* Version: 0.1.0
|
||
* Requires at least: 6.9
|
||
* Requires PHP: 8.1
|
||
* Author: Jan-Niclas Loosen - Loosen-IT
|
||
* Author URI: https://loosen-it.de
|
||
* License: GPL-2.0-or-later
|
||
* Text Domain: wp-lit-mcp
|
||
*/
|
||
|
||
declare(strict_types=1);
|
||
|
||
defined('ABSPATH') || exit;
|
||
|
||
$lit_mcp_autoload = __DIR__ . '/vendor/autoload_packages.php';
|
||
|
||
if (! is_readable($lit_mcp_autoload)) {
|
||
add_action('admin_notices', static function (): void {
|
||
echo '<div class="notice notice-error"><p>'
|
||
. esc_html__(
|
||
'WP-LIT-MCP: Abhängigkeiten fehlen. Bitte "composer install --no-dev" im Plugin-Ordner ausführen.',
|
||
'wp-lit-mcp'
|
||
)
|
||
. '</p></div>';
|
||
});
|
||
return;
|
||
}
|
||
|
||
require_once $lit_mcp_autoload;
|
||
|
||
add_action('plugins_loaded', static function (): void {
|
||
\LIT\MCP\Plugin::boot(__FILE__);
|
||
});
|