Авторизация: OAuth и Sanctum
MCP-сервер должен быть защищён. Laravel MCP поддерживает два способа.
Sanctum
Для простых случаев:
use Laravel\Mcp\Facades\Mcp;
Mcp::web('/mcp', OrderServer::class)
->middleware('auth:api');
Клиент отправляет токен в Authorization: Bearer.
OAuth 2.1
Для ChatGPT, Claude и других внешних клиентов:
Mcp::oauthRoutes();
Mcp::web('/mcp', OrderServer::class)
->middleware('auth:api');
oauthRoutes() регистрирует эндпоинты для OAuth-флоу.
Как работает OAuth
- Клиент открывает страницу авторизации
- Пользователь логинится
- Подтверждает scopes (права)
- Клиент получает токен
- Вызывает MCP с токеном
Scopes
Ограничивай права:
Mcp::web('/mcp/orders', OrderServer::class)
->middleware(['auth:api', 'scope:orders:read']);
Динамическая регистрация
MCP поддерживает Dynamic Client Registration — клиент сам регистрируется.
Отзыв токена
$token->revoke();
Итоги
- Sanctum для простого
- OAuth 2.1 для внешних
oauthRoutes()для флоу- Scopes для ограничений
- Middleware для защиты