QA Copilot MCP Server
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-testidgenerate_playwright_test_stubвсегда выдаёт один и тот же результат — мгновенно, бесплатно и воспроизводимо. Другой инструмент для другой задачи (генерация тест-кейсов из спецификации или пользовательской истории, где LLM действительно добавляет ценность) — это отдельный проект портфолио.Smoke-тест на уровне протокола, а не только юнит-тесты.
smoke-test.mjsзапускает собранный сервер как реальный дочерний процесс и управляет им через официальный MCPClientпо stdio —tools/list, затемtools/callдля каждого инструмента, — так что CI доказывает работу реального протокола обмена, а не только функций внутри.
Related MCP server: playwright-fixer-mcp
Инструменты
Инструмент | Что делает |
| Разбирает JSON-отчёт Playwright и формирует счётчики успешных/упавших/по таймауту/пропущенных/флаки-проргонов, длительность и полные детали ошибок. |
| Сравнивает одни и те же тесты в двух и более Playwright JSON-отчётах and отмечает те, чей результат был нестабильным. |
| Ставит эвристический, основанный на сопоставлении с шаблоническим предположением о корневой причине по исходному тексту ошибки. Полностью офлайн. |
| Детерминированно создаёт каркас исполняемого Playwright-теста по именованному порядку взаимодействий |
| Получает последние запуски 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-ассистент подключается к реальным, проверяемым данным тестов, а не получает запрос рассуждать о результатах по пересказа.
Maintenance
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
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to execute browser automation, perform QA tasks, and generate test code through natural language commands using Playwright.5
- FlicenseAqualityDmaintenanceAutomated Playwright E2E test repair powered by a self-improving, governed MCP server that runs failing tests, collects failure artifacts, reasons about root causes, validates and applies fixes, and re-runs to verify.12
- AlicenseBqualityBmaintenanceSupercharges AI-assisted debugging of Playwright tests by parsing trace files to extract failures, action history, network logs, screenshots, and suggesting fixes.612MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous web QA by exposing Playwright browser control as MCP tools for navigation, accessibility snapshotting, interaction, and bug detection.3MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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