Skip to main content

QA-MCP: Test Standardization & Orchestration Server - MCP server for test case generation, quality control, and Xray integration

Project description

QA-MCP: Test Standardization & Orchestration Server

CI codecov PyPI version PyPI downloads Python License MCP Docker

🇬🇧 English | 🇹🇷 Türkçe


🇬🇧 English

An MCP server that enables LLM clients to perform standardized test case generation, quality control, Xray format conversion, and test suite composition.

🎯 Problem

Common issues in enterprise QA:

  • Inconsistent test case formats: Different people write in different formats → not reusable
  • No standard in Xray/Jira: Missing fields, unclear datasets, ambiguous steps
  • Smoke/Regression distinction depends on individuals: Sprint-based planning is difficult
  • When writing tests with LLM, same suggestions return or critical negative scenarios are missed

✨ Solution

QA-MCP provides:

  • Single test standard: Everyone produces/improves with the same template
  • Quality gate: Lint score + missing field detection
  • Xray compatible output: Importable JSON
  • Test suite/plan composition: Smoke/Regression/E2E suggestions + tagging
  • Secure container deployment: Runnable from Docker Hub

📦 Installation

With uv (recommended)

# Install uv package manager
pip install uv

# Install qa-mcp
uv pip install qa-mcp

With pip

pip install qa-mcp
qa-mcp --help
qa-mcp --version

PyPI publishing rule:

  • pip install qa-mcp becomes available after a successful Publish to PyPI workflow run.
  • Manual publish: GitHub Actions -> Publish to PyPI -> Run workflow -> publish_target: pypi.

From source

git clone https://github.com/Atakan-Emre/McpTestGenerator.git
cd McpTestGenerator

# Using uv (recommended - uses locked dependencies)
uv pip install -e .

# Using pip
pip install -e .

With Docker

docker pull atakanemree/qa-mcp:latest
docker run -i atakanemree/qa-mcp:latest

🚀 Usage

MCP Client Connection

Cursor / Claude Desktop

Add to your mcp.json or claude_desktop_config.json:

{
  "mcpServers": {
    "qa-mcp": {
      "command": "qa-mcp",
      "args": []
    }
  }
}

With Docker

{
  "mcpServers": {
    "qa-mcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "atakanemree/qa-mcp:latest"]
    }
  }
}

🔧 Tools

Tool Description
testcase.generate Generate standardized test cases from feature & acceptance criteria
testcase.lint Analyze test case quality, return score and improvement suggestions
testcase.normalize Convert Gherkin/Markdown → Standard format
testcase.to_xray Export to Xray/Jira import format
suite.compose Create Smoke/Regression/E2E test suites
suite.coverage_report Generate test coverage analysis

📚 Resources

URI Description
qa://standards/testcase/v1 Test case standard
qa://checklists/lint-rules/v1 Lint rules
qa://mappings/xray/v1 Xray field mapping
qa://examples/good/* Good test case examples
qa://examples/bad/* Bad test case examples

💬 Prompts

Prompt Description
create-manual-test Create Xray Manual Test
select-smoke-tests Smoke test selection
generate-negative-scenarios Generate negative scenarios
review-test-coverage Test coverage analysis

🐳 Docker

Published image: atakanemree/qa-mcp (multi-arch: linux/amd64, linux/arm64)

# Pull image
docker pull atakanemree/qa-mcp:latest

# Verify CLI
docker run --rm atakanemree/qa-mcp:latest --help

# Run (stdio mode - default, most secure)
docker run -i --rm atakanemree/qa-mcp:latest

# With environment variables
docker run -i --rm \
  -e LOG_LEVEL=debug \
  -e ENABLE_WRITE_TOOLS=false \
  atakanemree/qa-mcp:latest

# Local compose (production and dev targets)
docker compose up qa-mcp
docker compose --profile dev up qa-mcp-dev

🔒 Security

Variable Default Description
ENABLE_WRITE_TOOLS false Enables Jira/Xray write tools
LOG_LEVEL info Log level (debug, info, warning, error)
AUDIT_LOG_ENABLED true Enables audit logging
HTTP_ENABLED false Enables HTTP transport
HTTP_PORT 8080 HTTP port

🗺️ Roadmap

  • v1.0 - MVP: generate, lint, to_xray, compose
  • v1.1 - Policy/guardrails, audit logs
  • v1.2 - Jira/Xray sync (read-only)
  • v2.0 - HTTP transport, OAuth

🇹🇷 Türkçe

LLM istemcilerinin bağlanıp standart test case üretme, kalite kontrol, Xray formatına çevirme ve test set kompozisyonu yapabildiği bir MCP sunucusu.

🎯 Problem

Kurumsal QA'da tipik sorunlar:

  • Test case formatı dağınık: Farklı kişiler farklı biçimde yazar → tekrar kullanılamaz
  • Xray/Jira'da standard yok: Alanlar eksik, dataset belirsiz, adımlar muğlak
  • Smoke/Regression ayrımı kişiye bağlı: Sprint bazlı planlama zor
  • LLM ile test yazdırınca aynı öneriler dönüyor veya kritik negatif senaryolar kaçıyor

✨ Çözüm

QA-MCP şunları sağlar:

  • Tek test standardı: Herkes aynı şablonla üretir/iyileştirir
  • Kalite kapısı (quality gate): Lint skoru + eksik alan tespiti
  • Xray uyumlu çıktı: Import edilebilir JSON
  • Test set/plan kompozisyonu: Smoke/Regression/E2E önerisi + etiketleme
  • Güvenli container dağıtımı: Docker Hub'dan çalıştırılabilir

📦 Kurulum

uv ile (önerilen)

# uv paket yöneticisini kur
pip install uv

# qa-mcp'yi kur
uv pip install qa-mcp

pip ile

pip install qa-mcp
qa-mcp --help
qa-mcp --version

PyPI yayın kuralı:

  • pip install qa-mcp, Publish to PyPI workflow'u başarılı tamamlandığında kullanılabilir olur.
  • Manuel yayın: GitHub Actions -> Publish to PyPI -> Run workflow -> publish_target: pypi.

Kaynak koddan

git clone https://github.com/Atakan-Emre/McpTestGenerator.git
cd McpTestGenerator

# uv ile (önerilen - kilitli bağımlılıkları kullanır)
uv pip install -e .

# pip ile
pip install -e .

Docker ile

docker pull atakanemree/qa-mcp:latest
docker run -i atakanemree/qa-mcp:latest

🚀 Kullanım

MCP İstemcisi ile Bağlantı

Cursor / Claude Desktop

mcp.json veya claude_desktop_config.json dosyasına ekleyin:

{
  "mcpServers": {
    "qa-mcp": {
      "command": "qa-mcp",
      "args": []
    }
  }
}

Docker ile

{
  "mcpServers": {
    "qa-mcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "atakanemree/qa-mcp:latest"]
    }
  }
}

🔧 Tools

Tool Açıklama
testcase.generate Feature ve acceptance criteria'dan standart test case üretir
testcase.lint Test case kalitesini analiz eder, skor ve öneriler döner
testcase.normalize Gherkin/Markdown → Standart format dönüşümü
testcase.to_xray Xray/Jira import formatına çevirir
suite.compose Smoke/Regression/E2E test suite oluşturur
suite.coverage_report Test kapsam analizi raporu üretir

📚 Resources

URI Açıklama
qa://standards/testcase/v1 Test case standardı
qa://checklists/lint-rules/v1 Lint kuralları
qa://mappings/xray/v1 Xray alan eşlemesi
qa://examples/good/* İyi test case örnekleri
qa://examples/bad/* Kötü test case örnekleri

💬 Prompts

Prompt Açıklama
create-manual-test Xray Manual Test oluşturma
select-smoke-tests Smoke test seçimi
generate-negative-scenarios Negatif senaryo üretimi
review-test-coverage Test kapsam analizi

🐳 Docker

Yayınlanan image: atakanemree/qa-mcp (multi-arch: linux/amd64, linux/arm64)

# Image çekme
docker pull atakanemree/qa-mcp:latest

# CLI doğrulama
docker run --rm atakanemree/qa-mcp:latest --help

# Çalıştırma (stdio mode - varsayılan, en güvenli)
docker run -i --rm atakanemree/qa-mcp:latest

# Environment variables ile
docker run -i --rm \
  -e LOG_LEVEL=debug \
  -e ENABLE_WRITE_TOOLS=false \
  atakanemree/qa-mcp:latest

# Local compose (production ve dev target'ları)
docker compose up qa-mcp
docker compose --profile dev up qa-mcp-dev

🔒 Güvenlik

Değişken Varsayılan Açıklama
ENABLE_WRITE_TOOLS false Jira/Xray yazma tool'larını etkinleştirir
LOG_LEVEL info Log seviyesi (debug, info, warning, error)
AUDIT_LOG_ENABLED true Audit log'u etkinleştirir
HTTP_ENABLED false HTTP transport'u etkinleştirir
HTTP_PORT 8080 HTTP port

🗺️ Yol Haritası

  • v1.0 - MVP: generate, lint, to_xray, compose
  • v1.1 - Policy/guardrails, audit logs
  • v1.2 - Jira/Xray sync (read-only)
  • v2.0 - HTTP transport, OAuth

📄 License / Lisans

MIT License - Copyright (c) 2024-2026 Atakan Emre

🤝 Contributing / Katkıda Bulunma

We welcome contributions! Please see our Contributing Guide for details on:

  • 🚀 Setting up development environment
  • 🧪 Running tests and quality checks
  • 📝 Coding standards and best practices
  • 🔄 Pull request process

Quick start:

  1. Fork the repository / Fork yapın
  2. Create feature branch / Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Make your changes / Değişiklikleri yapın
  4. Run tests / Testleri çalıştırın (pytest tests/ -v)
  5. Commit your changes / Commit yapın (git commit -m 'feat: add amazing feature')
  6. Push to branch / Push yapın (git push origin feature/amazing-feature)
  7. Open a Pull Request / Pull Request açın

👤 Developer / Geliştirici

Atakan Emre


Standardize test quality with QA-MCP! 🚀

QA-MCP ile test kalitesini standardize edin! 🚀

GitHub Stars GitHub Forks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qa_mcp-1.0.0.tar.gz (149.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qa_mcp-1.0.0-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file qa_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: qa_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 149.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for qa_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 868a1e34b7e8779b30c9754b37940bf78ba100c4196691f3dde373ea209cd54b
MD5 94de5f447f49755b0d34dad1184d2717
BLAKE2b-256 80211d97b787a62003f91f3b981e445c3b0b144269dea891b2e388e20fb03c7b

See more details on using hashes here.

File details

Details for the file qa_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: qa_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 47.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for qa_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07f6ba3a58875c009ed1beb88ebcc5033521995e828303864001bc648a82c77c
MD5 5cce5bc0d326980578af9c6c05ed836f
BLAKE2b-256 c2b4c8e5c474f487902c4f5160a34641c7b4fea850354179d10ecc723109e212

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page