Руководства13 июля 2026 г. · 6 мин чтения

Ваш AI-агент теперь перформанс-инженер: MCP-серверы Perfscale

Два сервера Model Context Protocol — обёртка над open-source CLI и доступ к облачному workspace — позволяют Claude Code и другим агентам писать, запускать и анализировать нагрузочные тесты.

Автор: Команда Perfscale

Ваш AI-агент теперь перформанс-инженер: MCP-серверы Perfscale

Попросите 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 или убрать машину из пула этого теста.

Десять минут кликанья по дашбордам — за время, пока наливается кофе.

С чего начать

  1. Локальный авторинг: claude mcp add perfscale -- npx -y @perfscale/mcp (нужен бинарник perfscale — выполните perfscale self-update, чтобы получить подкоманду schema).
  2. Облако: создайте токен в Settings → API Tokens, добавьте @perfscale/controlplane-mcp в конфиг MCP.
  3. Полный разбор: нагрузочное тестирование с AI-агентами.

Документация: OSS MCP-сервер · Облачный MCP и API-токены · Исходники: Perfscale/mcp.

Комментарии

Ответить в Bluesky