- 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
40 lines
1.2 KiB
JSON
40 lines
1.2 KiB
JSON
{
|
|
"name": "loosen-it/wp-lit-mcp",
|
|
"description": "MCP-Server für WordPress, Divi 5 und Pods mit OAuth für claude.ai",
|
|
"type": "wordpress-plugin",
|
|
"license": "GPL-2.0-or-later",
|
|
"require": {
|
|
"php": ">=8.1",
|
|
"automattic/jetpack-autoloader": "^3.0",
|
|
"wordpress/mcp-adapter": "^0.5",
|
|
"wp-media/mcp-oauth": "^1.1"
|
|
},
|
|
"require-dev": {
|
|
"brain/monkey": "^2.6",
|
|
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
|
|
"mockery/mockery": "^1.6",
|
|
"phpcompatibility/phpcompatibility-wp": "^2.1",
|
|
"phpunit/phpunit": "^9.6",
|
|
"squizlabs/php_codesniffer": "^3.10",
|
|
"wp-coding-standards/wpcs": "^3.1"
|
|
},
|
|
"autoload": {
|
|
"psr-4": { "LIT\\MCP\\": "src/" }
|
|
},
|
|
"autoload-dev": {
|
|
"psr-4": { "LIT\\MCP\\Tests\\": "tests/" }
|
|
},
|
|
"scripts": {
|
|
"test": "@php vendor/bin/phpunit",
|
|
"lint": "@php vendor/bin/phpcs"
|
|
},
|
|
"config": {
|
|
"sort-packages": true,
|
|
"platform": { "php": "8.1" },
|
|
"allow-plugins": {
|
|
"automattic/jetpack-autoloader": true,
|
|
"dealerdirect/phpcodesniffer-composer-installer": true
|
|
}
|
|
}
|
|
}
|