Урок 04

Resources: данные по URI

Resources — данные, которые AI-клиент может прочитать по URI.

Создание

php artisan make:mcp-resource OrderResource

Базовая структура

namespace App\Mcp\Resources;

use Laravel\Mcp\Resource;
use Laravel\Mcp\Resource\Response;

class OrderResource extends Resource
{
    protected string $uri = 'orders://{id}';

    protected string $mimeType = 'application/json';

    public function handle(Request $request): Response
    {
        $order = Order::find($request->get('id'));

        return Response::json([
            'id' => $order->id,
            'status' => $order->status,
            'total' => $order->total,
        ]);
    }
}

URI-шаблоны

protected string $uri = 'orders://{id}';
protected string $uri = 'users://{userId}/orders';
protected string $uri = 'config://app';

Регистрация

protected array $resources = [
    OrderResource::class,
    UserResource::class,
];

Resource Templates

Динамические ресурсы:

php artisan make:mcp-resource-template OrderTemplate

Ответы

return Response::text('Текст');
return Response::json(['data' => $value]);
return Response::html('<div>...</div>');

Разница с Tools

  • Tools — действия, агент вызывает
  • Resources — данные, пользователь выбирает для контекста

Resources больше для пользователя: «выбери этот документ для анализа».

Итоги

  • make:mcp-resource создаёт
  • $uri и $mimeType
  • handle() возвращает данные
  • URI-шаблоны
  • Для контекста, не для действий