Урок 06

Авторизация: 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

  1. Клиент открывает страницу авторизации
  2. Пользователь логинится
  3. Подтверждает scopes (права)
  4. Клиент получает токен
  5. Вызывает 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 для защиты