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- Валидация обязательна