Автоматизация тестирования с помощью ИИ
Интеграция облачной версии платформы ТестОпс с GitHub Actions упрощает автоматизацию тестирования и сбор результатов в одной системе. В этом руководстве мы поэтапно настроим трёхстороннюю связку: результаты запусков GitHub Actions будут отправляться в TMS ТестОпс, откуда можно инициировать новые запуски на GitHub. MCP обеспечивает интеллектуальную интеграцию и автоматизацию процессов между всеми системами. Мы рассматриваем требования к окружению, генерацию необходимых токенов, изменение конфигурации workflow и настройку параметров окружения, а также возможные ошибки.
⚡️ Внимание! Это 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 и интеграций, стоит присмотреться к этим новым возможностям.
📌 Читайте также
Возможности MCP-сервера - Рассматриваем сценарии использования, архитектуру и преимущества для разработчиков и тестировщиков.
Подключение Cursor IDE к GitHub MCP
Установка связей между GitHub и MCP‑сервером
Простой способ: через команду NPX
В данном случае необязательно клонировать репозиторий, можно запустить готовый сервер через npx
(Node автоматически загружает пакет):
bash
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?".
Альтернативный вариант: клонировать и собрать вручную
При наличии исходных материалов:
bash
git clone https://github.com/modelcontextprotocol/servers.git mcp-servers
cd mcp-servers/github
npm 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 и выше:
bash
git clone https://github.com/github/github-mcp-server.git
cd github-mcp-server
go build -o github-mcp-server ./cmd/server
./github-mcp-server stdio
Однако вариант с npx
гораздо быстрее.
Подключение MCP-сервера к Cursor IDE
Генерируем или добавляем готовый PAT.
- Если нужен новый токен, переходим в GitHub, где переходим в раздел *Settings → Developer settings → Personal access tokens.
- Если fine‑grained токен с правами
Actions + Issues
уже готов — используем его. - Копируем токен в буфер или сохраняем в отдельном файле.
Запустите MCP‑сервер в отдельном терминале (окно/вкладка):
bashnpx -y @modelcontextprotocol/server-github stdio
Появится строка
Server listening on stdio
— сворачиваем терминал, он должен оставаться запущенным.Создаём файл конфигурации для Cursor (если такого нет):
bashmkdir -p ~/.cursor nano ~/.cursor/mcp.json
Вставляем в соответствующую строчку (заменяем токен):
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", нужно прописать абсолютный путь.
Перезапускаем Cursor IDE (закрываем/открываем окно программы).
При старте Cursor находит
~/.cursor/mcp.json
→ поднимает указанный сервер (если он ещё не запущен, запустит сам).Проверяем, что инструменты появились.
Открываем Command Palette (
Ctrl+Shift+P
) → вводимMCP: List Tools
.Появляется минимум 5–6 GitHub‑методов (
list_pull_requests
,create_issue
, …).
Запускаем быстрый тест в чат‑панели 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… но чат пишет 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.
Проверка всего цикла
Открываем
hello.test.js
, заменяем текст «always passes» → «always fails»:jsit('always fails', () => { expect(true).toBe(false); });
Пушим изменения:
bashgit add . && git commit -m "ломаем тест" && git push
Видим, что GitHub Actions упал (запуск станет красным). В логе отображается ссылка на отчёт ТестОпс, о том, что запуск не выполнен (Launch = Failed).
В ТестОпс открываем «Запуски», находим упавший тест, справа Issues → Add → GitHub — создаём новую Issue.
Переходим в GitHub → Issue создана; в чате с ассистентом 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
.В списке должны присутствовать методы:
json"list_workflow_runs", "cancel_workflow_run"
Если их нет — обновляем сервер командой:
bashnpm i -g @modelcontextprotocol/server-github@latest
После обновления перезапустите сервер и Cursor.
После того как убедились, что инструменты доступны, для отмены зависших или неудачных запусков GitHub Actions просто выполните следующие действия:
В чате Cursor запрашиваем список активных запусков:
@assistant: list_workflow_runs owner="<your_GIT_login>" repo="<project_title>" status="in_progress"
Для каждого нужного запуска выполните команду отмены:
@assistant: cancel_workflow_run owner="<your_GIT_login>" repo="<project_title>" run_id=1234567890
⚠️ Важно! Следует проверить, что у PAT-токена есть необходимые права. В настройках доступа fine-grained токена обязательно должно быть указано "Actions: Read & Write".
Проверка через браузер
Переходим во вкладку Actions. Здесь можно увидеть, что все «зависшие» прогоны меняют статус на
Cancelled
.Отправляем новый push (или
workflow_dispatch
) — в маркировке прогонов отображается зелёный кружок.
В результате можно не только запускать, но и останавливать workflow‑runs через MCP напрямую из Cursor, не покидая IDE. Это особенно удобно, если тест завис и CI простаивает.
Рекомендации по улучшению
Настройте интеграцию с Telegram через вебхуки, чтобы оперативно получать уведомления о статусе запусков тестов. Пошаговая инструкция доступна в этой статье.
Используйте Дашборды в ТестОпс для наглядного мониторинга и визуализации ключевых метрик тестирования. Подробнее о возможностях дашбордов читайте в документации.
Применяйте специальные теги, такие как
smoke
иregress
, для маркировки тест-кейсов и удобной фильтрации результатов. Подробности о работе с тегами — в документации.
📢 Подпишитесь на наш телеграм-канал
Присоединяйтесь к нашему сообществу, чтобы получать уведомления о новых релизах, анонсы статей в блоге и советы по автоматизации тестирования и лайфхаки по работе с платформой.