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 PyPI version 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.
  • Required GitHub secret: PYPI_API_TOKEN for pypi.org.

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.
  • Gerekli GitHub secret'ı: pypi.org için PYPI_API_TOKEN.

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.1.tar.gz (149.8 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.1-py3-none-any.whl (47.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qa_mcp-1.0.1.tar.gz
  • Upload date:
  • Size: 149.8 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.1.tar.gz
Algorithm Hash digest
SHA256 3423777e0d5acca52194d9bf36340505425fb79fa4663785e5f4b837bcbd1b0a
MD5 c3eda68347813714cc4d884155d9308d
BLAKE2b-256 3e63642f645479a12fad5fc5c69d07507c83f46275176d5c28bfd813a8f21ba0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qa_mcp-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 47.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e14296c862efcb49749796c062639a5aaa860aea0f310c9074c447575e8e3276
MD5 4ee1708712adcb672662bb6e86b0c41b
BLAKE2b-256 eac1c6b08dd191229150d6407da3557310805b6ab2d873cacb057860cd0d357a

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