Попросите AI-агента «напиши мне нагрузочный тест» — и получите нечто, похожее на правду: правдоподобный YAML, разумные на слух пороги, имена полей, которые почти существуют. Агент угадывает вашу схему по обучающим данным, запускает тесты через shell и скрейпит stdout, а результаты анализирует, вглядываясь в терминальный шум. Это работает — пока не перестаёт. Обычно молча.
Мы сделали два сервера Model Context Protocol, чтобы это исправить. С сегодняшнего дня они живут в Perfscale/mcp:
@perfscale/mcpоборачивает open-source CLI — авторинг тестов с проверкой по схеме и локальные запуски со структурированными результатами.@perfscale/controlplane-mcpподключает агентов к вашему облачному workspace на perfscale.su/.ru — машины, запуски, метрики, логи, OTEL-таймсерии и диспетчеризация тестов.
Оба работают с Claude Code, Claude Desktop и любым другим MCP-клиентом.
Локальный сервер: записи, которые не гниют молча
Ключевое проектное решение в @perfscale/mcp: каждая запись линтуется в
том же tool call. Когда агент вызывает write_test или write_config,
файл валидируется по настоящей JSON Schema — той, что отдаёт установленная
у вас версия CLI через новую подкоманду perfscale schema — ещё до
возврата результата. Опечатка в имени поля или неизвестный ID действия
возвращаются как ошибка линтера, которую агент видит сразу и исправляет.
Невалидный YAML никогда не ложится на диск с видом здорового.
Остальная поверхность — это CLI минус shell: run_test выполняет k6-,
Locust- или нативный тест и возвращает код выхода плюс разобранные
p50/p95/p99, error rate и RPS в виде структурированных данных;
list_actions — каталог нативных step-действий std/*; list_configs и
read_config позволяют агенту изучить существующую директорию тестов,
прежде чем её трогать.
Настройка в Claude Code — одна строка:
claude mcp add perfscale -- npx -y @perfscale/mcp
Без API-токена и аккаунта — сервер управляет бинарником perfscale,
который уже стоит на вашей машине.
Облачный сервер: workspace как контекст
Второй сервер отвечает на другой вопрос: не «напиши мне тест», а «почему вчерашний прогон был медленным?»
@perfscale/controlplane-mcp даёт 18 инструментов поверх workspace.
Шестнадцать — чтение: парк машин с железом и benchmark-ёмкостью,
определения тестов, история запусков с полной разбивкой метрик, логи
прогонов, каталог метрик с запросами таймсерий по label-фильтрам,
OTEL-метрики, собранные во время прогонов, дашборды, подключённые
git-репозитории и audit log. Два — запись: run_test отправляет тест на
ваши машины и возвращает ID задач со ссылками на лог-стримы, а
sync_git_repo запускает обнаружение тестов.
Этого достаточно, чтобы агент провёл настоящее расследование от начала до конца: нашёл деградировавшие прогоны, вытащил их логи, сопоставил всплеск p99 с насыщением CPU на конкретной машине по OTEL-таймсериям и сказал вам, в каком окне коммитов искать.
{
"mcpServers": {
"perfscale-cloud": {
"command": "npx",
"args": ["-y", "@perfscale/controlplane-mcp"],
"env": {
"PERFSCALE_API_URL": "https://perfscale.su",
"PERFSCALE_API_TOKEN": "psk_..."
}
}
}
}
Токены и ограждения — потому что агенты
Дать агенту доступ к продакшн-инструментам — ровно та ситуация, где значения по умолчанию решают всё. Поэтому:
- Персональные API-токены (
psk_...) — новинка в дашборде, раздел Settings → API Tokens. Плейнтекст показывается один раз при создании; отзыв мгновенный; каждое использование обновляет отметку last used. Количество токенов зависит от плана — Scale даёт 1 на пользователя, Enterprise — 5. Те же токены работают со всем REST API через заголовокBearer. - Токен действует от вашего имени — та же роль, тот же workspace, те
же права. Если ваша роль не может запускать тесты в дашборде, агент
тоже не сможет:
run_testтребует правоrun_tests. - Секреты не попадают в контекстное окно.
list_env_varsвозвращает только ключи переменных; значения всегда замаскированы. Агент может рассуждать о том, настроен лиDATABASE_URL, не видя его ни разу. - Всё аудируется. Создание и отзыв токенов, каждый запущенный прогон попадают в audit log — который сам читается через MCP, так что можно спросить агента, что делал агент.
Как это выглядит на практике
Сессия из нашего собственного догфудинга, в сжатом виде:
Вы: Soak-тест чекаута на этой неделе стал медленнее. Разберись почему.
Агент: вызывает
list_runs,get_runпо последним 7 прогонам — p99 вырос с 310 мс до 890 мс начиная со вторника. вызываетget_run_logs— ошибок нет, значит, дело не в ретраях. вызываетget_otel_timeseries— CPU на машинеlt-eu-3упирается в 100% во время ramp-up; остальные машины на 40%. Прогон во вторник — первый после добавленияlt-eu-3в пул. Её benchmark-ёмкость вдвое меньше остальных — балансировщик её перегружает. Предлагаю перераспределить VU или убрать машину из пула этого теста.
Десять минут кликанья по дашбордам — за время, пока наливается кофе.
С чего начать
- Локальный авторинг:
claude mcp add perfscale -- npx -y @perfscale/mcp(нужен бинарникperfscale— выполнитеperfscale self-update, чтобы получить подкомандуschema). - Облако: создайте токен в Settings → API Tokens, добавьте
@perfscale/controlplane-mcpв конфиг MCP. - Полный разбор: нагрузочное тестирование с AI-агентами.
Документация: OSS MCP-сервер · Облачный MCP и API-токены · Исходники: Perfscale/mcp.
