Блог

Искусственный интеллект в тестировании. Часть 2

Интеграция облачной версии платформы ТестОпс с GitHub Actions упрощает автоматизацию тестирования и сбор результатов в одной системе. В этом руководстве мы поэтапно настроим трёхстороннюю связку: результаты запусков GitHub Actions будут отправляться в TMS ТестОпс, откуда можно инициировать новые запуски на GitHub. MCP обеспечивает интеллектуальную интеграцию и автоматизацию процессов между всеми системами. Мы рассматриваем требования к окружению, генерацию необходимых токенов, изменение конфигурации рабочего процесса и настройку параметров окружения, а также возможные ошибки.
⚡️ Внимание! Это 2-я часть из серии статей, посвящённых настройке связки MCP + GitHub + ТестОпс. В этой статье подробно разбирается настройка интеграции GitHub и MCP: как подключить MCP-сервер, интегрировать его с GitHub и использовать возможности AI-инструментов для автоматизации и анализа CI/CD процессов. В первой части рассматривается сопряжение GitHub и ТестОпс — настройка интеграции, автоматизация запуска тестов и передача результатов.

Интеграция Cursor и MCP: автоматизация и расширение возможностей

Настройка интеграции — технически сложный процесс, однако современные технологии упрощают его. Особенно стоит отметить связку Cursor и Model Context Protocol (MCP). Эти инструменты на базе искусственного интеллекта автоматизируют задачи интеграции.
Cursor = продвинутая AI-платформа для разработки и тестирования, объединяющая возможности интеллектуального автодополнения кода и чат-ассистента. Она позволяет подключать внешние источники данных и инструменты с помощью протокола MCP (Model Context Protocol).
Простыми словами, MCP открывает для AI-движка доступ к предоставленным в качестве контекста системам и сервисам. Вместо того чтобы вручную объяснять ИИ структуру проекта или копировать токены, можно настроить интеграцию через MCP, и тогда Cursor сможет автоматически получать контекст из GitHub и других ресурсов (при настроенной интеграции).
В данном примере MCP и Cursor можно использовать в следующих целях:
  • Автоматизировать подготовку конфигурации. С помощью готовых MCP-серверов для GitHub и ТестОпс AI-ассистент Cursor способен сам найти нужный проект, получить ID проекта или сгенерировать шаблон YAML workflow. Для этого достаточно описать своими словами задачу в чате и инструмент предложит готовый фрагмент кода.
  • Извлекать данные для анализа. Cursor может по запросу получить через MCP информацию о последних запусках тестов или статус интеграции. Это удобно для отладки: в естественной форме можно задать вопросы (например: «Какие ошибки в последнем запуске?»), а AI через API находит в GitHub ответ и предоставляет в читабельном для человека виде.
  • Обучаться на документации. Подключив MCP к документации (например, к репозиторию в GitHub по API, откуда, в свою очередь, данные могут передаваться в ТестОпс), AI сможет быстрее находить ответы на вопросы по настройке, без необходимости искать в справке вручную.
Важно понимать, что MCP – это дополнительная надстройка для удобства. Она не обязательна для успеха интеграции, но для тех, кто уже использует AI-инструменты в работе, связка Cursor + MCP может существенно ускорить процесс.
В конечном счёте, интеграция MCP с Cursor – это хороший способ повысить эффективность. При этом, она не заменяет ручную настройку (для этого всё ещё нужны токены и понимание шагов), но дополняет её. Как отмечают эксперты, сочетание структурированного контекста MCP с мощным AI-редактором Cursor даёт разработчикам и тестировщикам более интуитивный и быстрый опыт работы. В целях автоматизации рутинных аспектов настройки CI/CD и интеграций, стоит присмотреться к этим новым возможностям.

Подключение Cursor IDE к GitHub MCP

Установка связей между GitHub и MCP‑сервером

Простой способ: через команду NPX

В данном случае необязательно клонировать репозиторий, можно запустить готовый сервер через npx (Node автоматически загружает пакет):
npx -y @modelcontextprotocol/server-github stdio
Если в выводе появляется сообщение Server listening on stdio…, это означает, что MCP‑сервер готов к работе.
Почему это проще?
  • Не нужно git clone и npm install.
  • Пакет уже содержит package.json, prebuild‑скрипт и сборку.
  • y автоматически отвечает «yes» на вопрос "Install package @modelcontextprotocol/server-github?".

Альтернативный вариант: клонировать и собрать вручную

При наличии исходных материалов:
git clone <https://github.com/modelcontextprotocol/servers.git> mcp-serverscd mcp-servers/githubnpm install # здесь уже есть package.json, в корневом каталоге его нетnode server.js stdio
Важно перейти в подпапку github с package.json, иначе npm install даст ошибку «ENOENT: no such file or directory, open package.json», как вы уже увидели.

Binary (Go) сборка

В репозитории GitHub MCP есть вариант на языке «Go». Если установлен Go версии 1.22 и выше:
git clone <https://github.com/github/github-mcp-server.gitcd> github-mcp-servergo build -o github-mcp-server ./cmd/server./github-mcp-server stdio
Однако вариант с npx гораздо быстрее.

Подключение MCP-сервера к Cursor IDE

I. Генерируем или добавляем готовый PAT.
  • Если нужен новый токен, переходим в GitHub, где переходим в раздел SettingsDeveloper settingsPersonal access tokens.
  • Если fine‑grained токен с правами Actions + Issues уже готов — используем его.
  • Копируем токен в буфер или сохраняем в отдельном файле.
II. Запускаем MCP‑сервер.
  • В отдельном терминале (окно/вкладка) вводим команду:
npx -y @modelcontextprotocol/server-github stdio
  • Появится строка Server listening on stdio — сворачиваем терминал, он должен оставаться запущенным.
III. Создаём файл конфигурации для Cursor (если такого нет):
  • Открываем Command Palette (Ctrl+Shift+P) → вводим MCP: List Tools.
  • Появляется минимум 5–6 GitHub‑методов (list_pull_requests, create_issue, …).
mkdir -p ~/.cursornano ~/.cursor/mcp.json
  • Вставляем в соответствующую строчку (заменяем токен):
{
  "mcp": {
    "servers": {
      "github": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-github", "stdio"],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "<Актуальный_PAT>"
        }
      }
    }
  }
}
  • type: "stdio" сообщает Cursor, что сервер общается через stdin/stdout.
  • Если используется сборка на "GO", нужно прописать абсолютный путь.
IV. Перезапускаем Cursor IDE (закрываем/открываем окно программы).
  • При старте Cursor находит ~/.cursor/mcp.json → поднимает указанный сервер (если он ещё не запущен, запустит сам).
V. Проверяем, что инструменты появились.
  • Открываем Command Palette (Ctrl+Shift+P) → вводим MCP: List Tools.
  • Появляется минимум 5–6 GitHub‑методов (list_pull_requests, create_issue, …).
VI. Запускаем быстрый тест
  • В чат‑панели Cursor вводим команду:
@assistant: list\\_pull\\_requests owner="<your_GIT_login>" repo="project-mcp-github-testops" state="open"
Если в ответ бот выводит JSON‑таблицу PR, значит MCP работает корректно.

Частые вопросы

Симптом
Что проверить
В командной панели нет MCP-команд
1. Проверяем, что ~/.cursor/mcp.json валидный JSON (можно на jsonlint). 2. Перезапускаем Cursor после правки файла.
В выводе "Server listening…", но в чате с Cursor сообщает ошибку "Tool not found"
Токен не имеет нужных прав → генерируем PAT с repo → contents:read и issues:write или (fine‑grained) Issues RW / Actions RW.
Выдаёт ошибку Error: connect ECONNREFUSED
Стартовал не stdio‑режим, а HTTP‐режим. Убеждаемся, что в args последний параметр — stdio.
PAT видно в логе терминала, это может быть небезопасно
Заводим отдельный пользовательский бот с минимальными правами, или запускаем сервер как systemd‑службу, логи которого уходят в journalctl (видно только root).
Теперь Cursor умеет вызывать GitHub через MCP — AI‑ассистент видит PR, Issue и может их создавать прямо из IDE.

Проверка всего цикла

1) Открываем hello.test.js, заменяем текст «always passes» → «always fails»:
it('always fails', () => {
  expect(true).toBe(false);
});
2) Пушим изменения:
git add . && git commit -m "ломаем тест" && git push
3) Видим, что GitHub Actions упал (запуск станет красным). В логе отображается ссылка на отчёт ТестОпс, о том, что запуск не выполнен (Launch = Failed).
4) В ТестОпс открываем «Запуски», находим упавший тест, справа Issues → Add → GitHub — создаём новую Issue.
5) Переходим в GitHubIssue создана; в чате с ассистентом Cursor вводим запрос «show last issue» — ассистент откроет описание.
Готово! Теперь код хранится в репозитории, CI работает, отчёты уходят в ТестОпс, issues связываются, AI‑ассистент видит репозиторий и может выполнять команды.

Управление запусками GitHub Actions через MCP

Этот метод позволяет быстро отменять все «висящие» или «красные» запуски рабочего процесса прямо из Cursor, не открывая сайт GitHub.
⚠️ Важно! Перед тем как управлять запусками через MCP, один раз убедитесь, что GitHub MCP‑сервер поддерживает необходимые инструменты (list_workflow_runs, cancel_workflow_run). Для этого:
  • Открываем Командную панель (Command Palette) в Cursor IDE (Ctrl+Shift+P) и выполняем команду MCP: List Tools.
  • В списке должны присутствовать методы "list_workflow_runs" и "cancel_workflow_run".
  • Если их нет — обновляем сервер командой:
npm i -g @modelcontextprotocol/server-github@latest
  • После обновления перезапускаем сервер и Cursor.
Когда инструменты стали доступны, для отмены зависших или неудачных запусков GitHub Actions просто выполняем следующие действия:
  1. В чате Cursor запрашиваем список активных запусков:
  2. @assistant: list_workflow_runs owner="<your_GIT_login>" repo="<project_title>" status="in_progress"
  3. Для каждого нужного запуска выполните команду отмены:
  4. @assistant: cancel_workflow_run owner="<your_GIT_login>" repo="<project_title>" run_id=1234567890
⚠️ Важно! Следует проверить, что у PAT-токена есть необходимые права. В настройках доступа fine-grained токена обязательно должно быть указано "Actions: Read & Write".

Проверка через браузер

  1. Переходим во вкладку Actions. Здесь можно увидеть, что все «зависшие» прогоны меняют статус на Cancelled.
  2. Отправляем новый push (или workflow_dispatch) — в маркировке прогонов отображается зелёный кружок.
В результате можно не только запускать, но и останавливать workflow‑runs через MCP напрямую из Cursor, не покидая IDE. Это особенно удобно, если тест завис и CI простаивает.

Рекомендации по улучшению

  • Настройте интеграцию с Telegram через вебхуки, чтобы оперативно получать уведомления о статусе запусков тестов. Пошаговая инструкция доступна в этой статье.
  • Используйте Дашборды в ТестОпс для наглядного мониторинга и визуализации ключевых метрик тестирования. Подробнее о возможностях дашбордов читайте в документации.
  • Применяйте специальные теги, такие как smoke и regress, для маркировки тест-кейсов и удобной фильтрации результатов. Подробности о работе с тегами — в документации.