Урок 03

Tools: действия агента

Tools — функции, которые AI-клиент может вызывать на твоём сервере.

Создание

php artisan make:mcp-tool LookupOrder

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

namespace App\Mcp\Tools;

use Laravel\Mcp\Tool;
use Laravel\Mcp\Tool\Response;

class LookupOrder extends Tool
{
    protected string $description = 'Находит заказ по ID.';

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

        if (!$order) {
            return Response::error('Заказ не найден');
        }

        return Response::text("Заказ #{$order->id}: {$order->status}");
    }
}

Схема аргументов

public function schema(JsonSchema $schema): array
{
    return [
        'order_id' => $schema->integer()->required(),
        'include_items' => $schema->boolean(),
    ];
}

Подключение к серверу

protected array $tools = [
    LookupOrder::class,
    CreateOrder::class,
];

Ответы

return Response::text('Текст');
return Response::json(['data' => $value]);
return Response::error('Ошибка');

Валидация

public function handle(Request $request): Response
{
    $orderId = $request->get('order_id');

    if (!is_int($orderId)) {
        return Response::error('order_id должен быть числом');
    }

    // ...
}

Безопасность

Tools выполняют код. Всегда:

  • Валидируй аргументы
  • Используй allowlist для колонок
  • Ограничивай права
  • Логируй вызовы

Итоги

  • make:mcp-tool создаёт инструмент
  • description и schema()
  • handle() выполняет логику
  • Response::text/json/error
  • Валидация обязательна