Skip to main content
Glama

QA Copilot MCP Server

Сервер на базе Model Context Protocol, который предоставляет AI-ассистенту небольшой набор конкретных QA-инструментов и инструментов анализа тестов, а не просит его догадываться: сводка прогона Playwright, поиск флаки-тестов в нескольких прогонах, эвристическое объяснение причины сбоя, создание каркаса Playwright-теста и чтение свежего статуса CI для GitHub-репозитория. Подключите к нему Claude Desktop, Claude Code или любой другой MCP-совместимый хост — и эти вещи станут настоящими вызовами инструментов, а не догадками в свободном тексте.

Это та часть портфолио по QA-автоматизации, где реализован принцип «дай ИИ реальные данные, а не ощущения»: остальные репозитории портфолио (healthcare-qa-automation-framework, healthcare-data-quality-framework) создают Playwright JSON-отчёты и запуски CI, а этот сервер превращает их в данные, которые ассистент действительно может запросить.

Почему так сделано

  • Обвязка протокола — это тонкий слой поверх обычных функций. Вся реальная логика каждого инструмента живёт в src/playwright/, src/github/ и src/tools/ в виде маленьких, почти чистых и независимо покрытых unit-тестами модулей. src/index.ts только регистрирует их через MCP SDK — поэтому часть, в которой проще всего ошибиться (разбор отчётов, выявление флаки-тестов, эвристики), покрыта быстрыми unit-тестами, а обвязка протокола — отдельным сквозным smoke-тестом (ниже).

  • Доступ к GitHub реализуется подменой, по той же схеме, что и LLM-интеграции в остальных проектах портфолио. GitHubClient — это интерфейс; RealGitHubClient оборачивает fetch для работы с GitHub REST API, а FakeGitHubClient возвращает заранее подготовленные данные. Благодаря этому get_repo_ci_status полностью проходится unit-тестами без доступа к сети, при этом настоящий клиент — это настоящий исполняемый код: у MCP-хоста на машине разработчика есть обычный интернет, даже в окружениях, в которых его нет (как в собственной CI-песочнице этого репозитория).

  • Генерация каркасов тестов намеренно не основана на LLM — она детерминированная. Для заданной именованной последовательности взаимодействий с data-testid generate_playwright_test_stub всегда выдаёт один и тот же результат — мгновенно, бесплатно и воспроизводимо. Другой инструмент для другой задачи (генерация тест-кейсов из спецификации или пользовательской истории, где LLM действительно добавляет ценность) — это отдельный проект портфолио.

  • Smoke-тест на уровне протокола, а не только юнит-тесты. smoke-test.mjs запускает собранный сервер как реальный дочерний процесс и управляет им через официальный MCP Client по stdio — tools/list, затем tools/call для каждого инструмента, — так что CI доказывает работу реального протокола обмена, а не только функций внутри.

Related MCP server: playwright-fixer-mcp

Инструменты

Инструмент

Что делает

summarize_test_run

Разбирает JSON-отчёт Playwright и формирует счётчики успешных/упавших/по таймауту/пропущенных/флаки-проргонов, длительность и полные детали ошибок.

list_flaky_tests

Сравнивает одни и те же тесты в двух и более Playwright JSON-отчётах and отмечает те, чей результат был нестабильным.

explain_failure

Ставит эвристический, основанный на сопоставлении с шаблоническим предположением о корневой причине по исходному тексту ошибки. Полностью офлайн.

generate_playwright_test_stub

Детерминированно создаёт каркас исполняемого Playwright-теста по именованному порядку взаимодействий data-testid.

get_repo_ci_status

Получает последние запуски Actions публичного GitHub-репозитория и сводит их в количество успешных/упавших/идущих в процессе.

Архитектура

src/
  index.ts                    MCP server: registers all 5 tools, connects over stdio
  playwright/reportParser.ts  Pure Playwright-JSON parsing: summarizeReport, findFlakyTests
  github/githubClient.ts      GitHubClient interface + RealGitHubClient (fetch) + FakeGitHubClient
  tools/
    explainFailure.ts         Heuristic pattern-matching (ported from the triage_failure.py
                               script in healthcare-qa-automation-framework)
    generateTestStub.ts       Deterministic Playwright test-file template generator
    getRepoCiStatus.ts        Wraps GitHubClient into pass/fail/in-progress counts
test/                         Vitest unit tests for every module above
fixtures/                     Sample Playwright JSON reports (3 runs, used for flaky-test tests)
smoke-test.mjs                End-to-end MCP protocol smoke test (real child process, real client)
.github/workflows/ci.yml      Type-check, unit tests, build, protocol smoke test

Технологический стек

TypeScript · Node.js · @modelcontextprotocol/sdk · Zod · Vitest · GitHub REST API · GitHub Actions

Запуск локально

npm install
npm run build       # compiles to dist/
npm test            # unit tests (27 tests, fully offline)
npm run smoke        # builds, then drives the real server over stdio via the MCP client

Использование из MCP-хоста

Укажите любому MCP-совместимому клиенту на собранный сервер, например, в claude_desktop_config.json приложения Claude Desktop:

{
  "mcpServers": {
    "qa-copilot": {
      "command": "node",
      "args": ["/absolute/path/to/qa-copilot-mcp-server/dist/index.js"]
    }
  }
}

Задайте в окружении GITHUB_TOKEN, чтобы повысить неаутентифицированный лимит GitHub для get_repo_ci_status (60 запросов в час без токена, 5000 запросов в час с ним) — для редкого использования всё работает и без токена.

CI

Каждый push и pull request в main выполняет один и тот же набор задач: проверка типов (tsc --noEmit), юнит-тесты (vitest run), production-сборка и smoke-тест на уровне протокола (node smoke-test.mjs) против собрённого вывода. Нигде в CI не предполагается и не требуется сетевой доступ: get_repo_ci_status в юнит-тестах вызывается только через FakeGitHubClient, а smoke-тест рассматривает такой бессетевой результат get_repo_ci_status как успех, если сервер корректно сообщает об ошибку через канал MCP isError, а не падает.

Чем это не является

Это не универсальная панель GitHub или CI — это небольшой целевой набор инструментов, собран конкретно вокруг тех структур Playwright-отчётов и GitHub Actions, которые фактически создают другие проекты портфолио. Его цель — проверить, как AI-ассистент подключается к реальным, проверяемым данным тестов, а не получает запрос рассуждать о результатах по пересказа.

Install Server
F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • BuildPulse CI test analytics for AI agents — flaky tests, coverage, and CI run history.

  • Voice-powered bug reporting with 13 MCP tools. Record bugs by talking; let AI find and fix them.

  • Official MCP server for Qase — manage test cases, runs, suites, defects via AI tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sharath9271-design/qa-copilot-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server