This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
php-api/src/Api/Routes/api.php
Snider 98b938eb51
Some checks failed
CI / PHP 8.3 (push) Failing after 2s
CI / PHP 8.4 (push) Failing after 2s
fix: correct McpApiKeyAuth namespace in API routes
Core\Mod\Mcp\Middleware → Core\Mcp\Middleware (matches actual class location)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-03 17:02:08 +00:00

54 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
use Core\Api\Controllers\McpApiController;
use Core\Mcp\Middleware\McpApiKeyAuth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Core API Routes
|--------------------------------------------------------------------------
|
| Core API routes for cross-cutting concerns.
|
| TODO: SeoReportController, UnifiedPixelController, EntitlementApiController
| are planned but not yet implemented. Re-add routes when controllers exist.
|
*/
// ─────────────────────────────────────────────────────────────────────────────
// MCP HTTP Bridge (API key auth)
// ─────────────────────────────────────────────────────────────────────────────
Route::middleware(['throttle:120,1', McpApiKeyAuth::class, 'api.scope.enforce'])
->prefix('mcp')
->name('api.mcp.')
->group(function () {
// Scope enforcement: GET=read, POST=write
// Server discovery (read)
Route::get('/servers', [McpApiController::class, 'servers'])
->name('servers');
Route::get('/servers/{id}', [McpApiController::class, 'server'])
->name('servers.show');
Route::get('/servers/{id}/tools', [McpApiController::class, 'tools'])
->name('servers.tools');
// Tool version history (read)
Route::get('/servers/{server}/tools/{tool}/versions', [McpApiController::class, 'toolVersions'])
->name('tools.versions');
// Specific tool version (read)
Route::get('/servers/{server}/tools/{tool}/versions/{version}', [McpApiController::class, 'toolVersion'])
->name('tools.version');
// Tool execution (write)
Route::post('/tools/call', [McpApiController::class, 'callTool'])
->name('tools.call');
// Resource access (read)
Route::get('/resources/{uri}', [McpApiController::class, 'resource'])
->where('uri', '.*')
->name('resources.show');
});