QA MCP Server
QA MCP Server
Расширяемый MCP-сервер (Model Context Protocol), который планируется сделать единой AI-платформой для обеспечения качества ПО.
Текущее состояние
Фаза 1 — Фундамент и Ядро
ВЫПОЛНЕНО
Шаг | Возможность | Статус |
1 | Основа проекта | ВЫПОЛНЕНО |
2 | MCP-сервер + здоровье | ВЫПОЛНЕНО |
3 | Абстракция LLM-провайдера | ВЫПОЛНЕНО |
4 | Анализатор требований | ВЫПОЛНЕНО |
5 | Генератор тест-кейсов | ВЫПОЛНЕНО |
6 | Ревьюер тест-кейсов | ВЫПОЛНЕНО |
7 | Сквозной QA-рабочий процесс | ВЫПОЛНЕНО |
Фаза 2 — Контекст проекта, персистентность, версионирование и переносимость
Шаг | Возможность | Статус |
1 | Контекст QA-проекта | ВЫПОЛНЕНО |
2 | Персистентность SQLite | ВЫПОЛНЕНО |
3 | Версионирование QA-наборов | ВЫПОЛНЕНО |
4 | Импорт / Экспорт | ВЫПОЛНЕНО |
1. Видение
Долгосрочная цель — построить переиспользуемую QA MCP платформу, предоставляющую QA-возможности MCP-совместимым ИИ-клиентам.
MCP Client / AI Assistant
|
v
QA MCP Server
|
+------+------+------+
| | |
v v v
QA Intelligence Connectors Automation
| | |
Analyze Jira UI
Generate GitHub API
Review Slack Mobile
Performance
|
v
QA Agent
|
v
Persistent QA Context
|
v
Project / Requirement / Suite Versions
|
v
Import / Export2. Архитектура Фазы 1
Requirement
|
v
Requirement Analyzer
|
v
RequirementAnalysis
|
v
Test Case Generator
|
v
TestCaseResponse
|
v
Test Case Reviewer
|
v
TestCaseReview
|
v
QASuiteResultОсновные MCP-возможности:
analyze_requirement
generate_test_cases
review_test_cases
generate_qa_suite3. Архитектура LLM
LLMProvider
|
+---- MockLLM
|
+---- BedrockLLMДоступ к LLM не зависит от провайдера, поэтому инструменты QA можно тестировать локально, а позже подключить к AWS Bedrock или другому провайдеру.
Результаты ИИ проходят валидацию с помощью моделей Pydantic перед последующей обработкой.
4. Фаза 2, Шаг 1 — Контекст QA-проекта
Статус: ВЫПОЛНЕНО
Проект QA содержит:
QAProject
|
+-- project_id
+-- name
+-- description
+-- application
+-- environment
+-- metadataОсновной сервис:
ProjectContext
|
+-- create_project()
+-- get_project()Инструменты MCP:
create_qa_project
get_qa_project5. Фаза 2, Шаг 2 — Персистентность SQLite
Статус: ВЫПОЛНЕНО
Проекты сохраняются в:
data/qa_mcp.dbТаблица SQLite:
qa_projectsАрхитектура:
ProjectContext
|
v
ProjectRepository
|
v
SQLiteProjectRepository
|
v
SQLiteОсновной контекст не зависит напрямую от базы данных SQLite.
Персистентность была проверена в отдельных процессах Python.
6. Фаза 2, Шаг 3 — Версионирование QA-наборов
Статус: ВЫПОЛНЕНО
QA-требования и сгенерированные наборы тестов версионируются и сохраняются независимо друг от друга.
Related MCP server: QTM4J MCP Server
Версии требований
QA Project
|
+-- Requirement v1
+-- Requirement v2
+-- Requirement v3Каждая версия требования содержит:
version_idproject_idversionrequirementapplicationenvironmentcreated_at
Версии ведутся независимо для каждого проекта.
Версии наборов
Каждый набор фиксирует версию требования, которая его породила:
Requirement v1
|
v
Suite v1
Requirement v2
|
v
Suite v2Каждая версия набора содержит:
suite_idproject_idrequirement_version_idversiontest_casesreviewcreated_at
Архитектура
core/
└── versioning/
└── service.py
|
v
infrastructure/
└── versioning/
├── repositories.py
└── sqlite_version_repository.py
|
v
SQLiteДве папки versioning созданы осознанно:
core/versioningсодержит бизнес-логику.infrastructure/versioningсодержит интерфейсы репозиториев и реализации SQLite.
Основные сервисы
QARequirementVersioningService
QASuiteVersioningServiceИнтерфейсы репозиториев
RequirementVersionRepository
SuiteVersionRepositoryРеализации SQLite
SQLiteRequirementVersionRepository
SQLiteSuiteVersionRepositoryИнструменты MCP
Требование:
create_requirement_version
get_requirement_version
list_requirement_versionsНабор:
create_suite_version
get_suite_version
list_suite_versions7. Фаза 2, Шаг 4 — Импорт / Экспорт
Статус: ВЫПОЛНЕНО
QA MCP-сервер теперь поддерживает переносимые артефакты проекта, включающие:
QA Project
|
+-- Requirement Versions
|
+-- Suite VersionsЭкспорт
Поток экспорта выглядит так:
SQLite
|
+-- Project
+-- Requirement Versions
+-- Suite Versions
|
v
QAImportExportService
|
v
QAProjectExport
|
v
JSONЭкспорт основан на сохранённых данных, а не на объектах, собранных вызывающей стороной.
Инструмент MCP:
export_qa_projectВходные данные:
project_idВыходные данные:
{
"project_id": "...",
"export_version": "1.0",
"payload": "..."
}Импорт
Поток импорта выглядит так:
JSON
|
v
Parse
|
v
QAProjectExport validation
|
v
Relationship validation
|
v
Duplicate project check
|
v
SQLite persistenceИнструмент MCP:
import_qa_projectИмпорт проверяет:
Экспортный JSON
Структуру экспорта
Идентичность проекта
Связь «требование → проект»
Связь «набор → проект»
Связь «набор → версия требования»
Защиту от дублирования проектов
Существующие проекты не перезаписываются молча.
Проверка полного цикла
Полный цикл туда-обратно был проверен:
SQLite DB A
|
v
EXPORT
|
v
JSON
|
v
IMPORT
|
v
SQLite DB B
|
v
CompareПроверенные артефакты:
Project ✅
Requirements ✅
Suites ✅
Relationships ✅Изоляция тестов
Тесты импорта/экспорта MCP используют изолированные временные базы данных SQLite.
Это предотвращает загрязнение при выполнении тестов:
data/qa_mcp.dbи позволяет повторный запуск тестов без опоры на предыдущее состояние тестов.
Контрольный уровень проверки P2-S4
Import/Export focused tests: 7 passed
MCP Import/Export tests: 2 passed
Full regression: 49 passed
Application-code warnings: 0
Known external warning: 1Оставшееся предупреждение — это известное внешнее предупреждение pydantic_settings, касающееся нерешённой прямой ссылки (forward reference) поля lifespan.
8. Структура проекта
Текущая важная структура исходного кода:
qa-mcp/
|
+-- src/
| +-- qa_mcp/
| |
| +-- core/
| | +-- config.py
| | +-- llm.py
| | +-- project/
| | | +-- context.py
| | |
| | +-- versioning/
| | | +-- service.py
| | |
| | +-- import_export/
| | +-- service.py
| |
| +-- infrastructure/
| | +-- project_repository.py
| | +-- sqlite_project_repository.py
| | |
| | +-- versioning/
| | +-- repositories.py
| | +-- sqlite_version_repository.py
| |
| +-- models/
| | +-- schemas.py
| |
| +-- tools/
| | +-- requirement/
| | +-- testcase/
| | +-- workflow/
| |
| +-- server.py
|
+-- tests/
+-- config/
+-- data/
| +-- qa_mcp.db
|
+-- README.md9. Локальная настройка
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtЗапуск тестов:
pytest -qТекущий контрольный уровень:
49 passedЗапуск MCP-сервера:
python -m qa_mcp.serverПроверка импортов сервера:
python -c "from qa_mcp.server import mcp; print('MCP server imports OK')"10. Правила разработки
Для каждого шага реализации мы следуем такому рабочему процессу:
IMPLEMENT
|
v
FOCUSED TESTS
|
v
FULL REGRESSION
|
v
RUNTIME / MCP VERIFICATION
|
v
FIX / REFINE
|
v
MARK STEP COMPLETE
|
v
UPDATE README
|
v
DOWNLOAD NEW README CHECKPOINT
|
v
NEXT STEPПравила:
Реализовать за раз только один шаг.
Тестировать каждую функцию.
Существующие тесты должны оставаться зелёными.
Ни один шаг не считается завершённым без локальной проверки.
Обновлять README на каждой подтверждённой вехе.
Основная бизнес-логика должна оставаться независимой от транспорта MCP.
Персистентность и внешние интеграции остаются за интерфейсами.
LLM-провайдеры должны оставаться заменяемыми.
Результаты ИИ должны проходить валидацию.
Тесты должны оставаться повторяемыми при постоянном хранилище.
Не удалять постоянные базы данных только ради того, чтобы тесты прошли.
Использовать изолированные базы данных для тестов, связанных с персистентностью.
Не копировать вручную диалог ассистента в README.
README является авторитетным контрольным пунктом разработки.
Ни одна крупная функция не завершена, пока не проверен её путь MCP/времени выполнения.
11. Архитектурные принципы
Основная бизнес-логика живёт в
core.Персистентность живёт в
infrastructure.Транспорт MCP живёт в
server.pyи инструментов, обращённых к MCP.Доменные/модели данных живут в
models.Основные сервисы не должны зависеть напрямую от реализаций SQLite.
Внешние интеграции должны быть изолированы за интерфейсами.
Провайдеры LLM остаются заменяемыми.
Результаты ИИ должны валидироваться перед дальнейшим использованием.
Постоянные данные не должны путаться с тестовыми фикстурами.
Тесты должны быть повторяемыми.
Операции импорта должны проверять связи перед сохранением.
Импорт не должен молча перезаписывать существующие проекты.
Завершённые вехи требуют регрессионной проверки.
Обновление README является частью завершения вехи.
12. Дорожная карта Фазы 2
Шаг | Возможность | Статус |
1 | Контекст QA-проекта | ВЫПОЛНЕНО |
2 | Персистентность SQLite | ВЫПОЛНЕНО |
3 | Версионирование QA-наборов | ВЫПОЛНЕНО |
4 | Импорт / Экспорт | ВЫПОЛНЕНО |
5 | Коннектор Jira | СЛЕДУЮЩИЙ |
6 | Рабочий процесс Jira → QA | Планируется |
7 | Генератор сценариев автоматизации | Планируется |
8 | QA-агент | Планируется |
9 | Интеграция GitHub / CI | Планируется |
10 | Развёртывание в интернете | Планируется |
13. Планируемая итоговая архитектура
MCP CLIENT / AI ASSISTANT
|
v
+-------------+
| QA MCP |
| Server |
+------+------+
|
+---------------+----------------+
| | |
v v v
QA Intelligence Connectors Automation
| | |
+-----+-----+ +---+---+ +----+----+
| | | | | | | | |
Analyze Gen Review Jira GitHub UI API Perf
Mobile
|
v
QA Agent
|
v
Persistent Context
|
v
Project / Requirement
/ Suite Versions
|
v
Import / Export14. Текущий контрольный уровень
Phase 1
Steps 1–7 COMPLETED
Phase 2
Step 1 — QA Project Context COMPLETED
Step 2 — SQLite Persistence COMPLETED
Step 3 — QA Suite Versioning COMPLETED
Step 4 — Import / Export COMPLETEDТекущая проверка:
49 tests passed
SQLite persistence verified
Requirement versioning verified
Suite versioning verified
Import/export contract verified
Import validation verified
Round-trip persistence verified
MCP import/export verified
MCP server imports successfully
Test isolation verifiedИзвестное предупреждение:
pydantic_settings
IncompleteFieldDefinitionWarning
Field 'lifespan'Это предупреждение о внешней зависимости и в настоящее время не блокирует функциональность или тесты.
15. Следующий шаг разработки
Phase 2 → Step 5
|
v
Jira ConnectorСледующая фаза реализации должна начинаться только после того, как эта контрольная точка README будет сохранена.
16. История вех
Phase 1
|
+-- Foundation
+-- LLM abstraction
+-- Requirement analysis
+-- Test generation
+-- Test review
+-- QA suite workflow
+-- MCP integration
|
v
Phase 1 COMPLETE
Phase 2
|
+-- QA Project Context
+-- SQLite Persistence
+-- Requirement/Suite Versioning
+-- Import / Export
|
v
Phase 2 Step 4 COMPLETEЭтот README отражает состояние проекта после успешной проверки Фаза 2 → Шаг 4 — Импорт / Экспорт.
This server cannot be installed
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
- AlicenseAqualityBmaintenanceQA Sphere MCP server that enables Large Language Models to interact directly with test management system test cases, supporting AI-powered development workflows and test case discovery.1510123MIT
- AlicenseAqualityBmaintenanceAn MCP server that exposes the QMetry Test Management for Jira Cloud REST API as tools for MCP-compatible clients. It enables users to manage test cases, test cycles, test executions, test plans, folders, and automation rules through natural language interactions.3057MIT
- AlicenseBqualityAmaintenanceEnables AI assistants to interact with TestOps 5.25 for managing projects, test runs, test plans, and test cases via MCP tools.3149MIT
- AlicenseNot gradedqualityAmaintenanceEnables generation of test cases, edge cases, and test matrices for software testing, integrated with MCP protocol and EU AI Act compliance.3MIT
Related MCP Connectors
Official MCP server for Qase — manage test cases, runs, suites, defects via AI tools.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
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/sanumenon/qa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server