Skip to main content
Glama
mshegolev

allure-testops-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ALLURE_URLYesAllure TestOps URL (e.g. https://allure.example.com)
ALLURE_TOKENYesAPI token from Allure TestOps (Profile → API tokens)
ALLURE_SSL_VERIFYNotrue/false. Set to false for self-signed corp certs. Default: true.true

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
allure_list_projectsA

List all projects in the Allure TestOps instance.

Use this first to discover which project IDs exist — all other tools take a project_id that you can look up here.

Returns: dict with keys: - count (int): number of projects in this response - projects (list): each item has id, name, abbreviation

Examples: - "Which projects exist in Allure?" -> default call, take the names/ids - "Find project by abbreviation" -> iterate projects and match

Don't use when:
- You already know the project id (skip discovery, go straight to the target tool).
allure_get_project_statisticsA

Get summary statistics for an Allure project.

Returns TC count, automation rate, and the last closed launch's pass/fail breakdown. Performs 3-4 API calls — progress is reported via MCP Context (visible as progress updates in compatible clients).

Args: project_id: Allure project ID (see allure_list_projects). ctx: MCP Context injected by FastMCP (used for progress reporting; never supplied by the agent directly).

Returns: dict with keys: - project_id (int) - total_test_cases (int) - automated_test_cases (int) - manual_test_cases (int) - automation_rate_pct (float) - last_launch_id (int | None): latest closed launch - last_launch_name (str | None) - last_launch_passed / last_launch_failed / last_launch_broken (int) - last_launch_total (int) - recent_launches_count (int): launches examined to find the latest closed one

Examples: - "How automated is project 63?" -> project_id=63, read automation_rate_pct - "What was the last passing run for project 175?" -> read last_launch_passed

Don't use when:
- You need per-test detail (use ``allure_get_test_results``).
- You need the full launch history (use ``allure_list_launches``).
allure_list_launchesA

List recent launches for a project, newest first.

Each launch carries a pass/fail/broken/skipped breakdown from Allure's statistic field. Pagination info is returned in the pagination block (use next_page to continue).

Args: project_id: Allure project ID. page: 0-based page index. size: Items per page (1-100; 20 is usually enough for triage).

Returns: dict with keys: - project_id (int) - count (int): items in this response - pagination (dict): page / size / total / total_pages / has_more / next_page - launches (list): each with id / name / status / created_date / passed / failed / broken / skipped / total

Examples: - "Last 10 launches for project 63" -> project_id=63, size=10 - "Older launches beyond page 1" -> repeat with page=1

Don't use when:
- You need test results inside a launch (``allure_get_test_results``).
- You need just the latest FAILED/BROKEN tests (``allure_search_failed_tests``).
allure_get_test_resultsA

Get individual test results inside a launch, optionally filtered by status.

Args: launch_id: Allure launch ID (from allure_list_launches). status: Filter — PASSED / FAILED / BROKEN / SKIPPED. None returns all. page: 0-based page index. size: Items per page (1-200; default 50).

Returns: dict with keys: - launch_id (int) - count (int) - pagination (dict) - results (list): each with id / name / status / duration_ms / error (first 300 chars of statusMessage)

Examples: - "FAILED tests in launch 12345" -> launch_id=12345, status="FAILED" - "All results in launch X, second page" -> launch_id=X, page=1

Don't use when:
- You want only FAILED+BROKEN (``allure_search_failed_tests`` does both in one call).
allure_search_failed_testsA

Find FAILED and BROKEN tests in the most recent (or given) launch.

Useful for triage: "what's broken in the latest run" without listing every test. Performs up to 3 API calls; progress reported via MCP Context.

Args: project_id: Allure project ID. launch_id: Specific launch ID. If None, the latest launch is used. limit: Max failures per status (so up to 2 * limit total). ctx: MCP Context (auto-injected).

Returns: dict with keys: - launch_id (int): the resolved launch (latest if not passed in) - failed_count (int) - results (list): id / name / status / duration_ms / error

Examples: - "What's failing in project 63 right now?" -> project_id=63 - "Failures in launch 98765" -> project_id=N, launch_id=98765

Don't use when:
- You need PASSED tests too (use ``allure_get_test_results`` without status filter).
allure_list_test_casesA

List test cases for a project with optional automation and ownership filters.

Each TC carries id, name, automated, status, layer (e.g. UNIT, API, E2E), the createdBy / lastModifiedBy audit usernames, and a flat list of tag names. Caveat: the audit fields and tags are only populated when owner is set, because Allure's plain /testcase endpoint returns a compact projection that omits them — the owner path uses __search which returns the full projection.

Args: project_id: Allure project ID. ctx: MCP Context (auto-injected by FastMCP for progress reporting). automated: True — only automated, False — only manual, None — both. owner: Optional Allure username. When set, the response is narrowed to TCs where createdBy = owner OR lastModifiedBy = owner (case-sensitive, exact match), enforced server-side via Allure's RQL __search endpoint. The username must match [A-Za-z0-9._@-]+ — anything else is rejected at the MCP input layer (Pydantic pattern) to prevent RQL injection.

    **Why "creator/modifier" and not "owner".** Allure TestOps does
    not expose a separate ``owner`` field in RQL on most
    deployments — the closest stable proxy for "TCs I touched" is
    the union of ``createdBy`` and ``lastModifiedBy``.

    **Trade-off when ``owner`` is set.** ``__search`` does not
    accept the ``automated`` query parameter, so an ``automated``
    filter combined with ``owner`` is applied **client-side after
    the page is fetched**. ``pagination`` then reflects the raw
    owner-filtered set, not the further automation-filtered view —
    a fetched page of 50 may shrink. Raise ``size`` (max 200) or
    iterate ``page`` for full coverage.
page: 0-based page index.
size: Items per page (1-200; default 50).

Returns: dict with keys: - project_id (int) - count (int): items in this response (post any client-side automated filter) - pagination (dict): raw Allure paging - test_cases (list): each item carries id / name / automated / status / layer / created_by / last_modified_by / tags

Examples: - "How many manual TCs does project 63 have?" -> project_id=63, automated=False, read pagination.total - "First 200 automated TCs" -> automated=True, size=200 - "My manual TCs in project 63" -> project_id=63, automated=False, owner="jdoe", size=200

Don't use when:
- You need just the automation % (``allure_get_project_statistics``).
allure_list_statusesA

List the test-case statuses defined in a project (id, name, color).

Use this to discover valid status names/ids before setting a status on allure_create_test_case / allure_update_test_case. Built-in statuses use negative ids (e.g. Draft = -1).

Returns: dict with project_id, count and statuses (each: id, name, color).

allure_list_layersA

List the test layers defined in a project (id, name).

Use this to discover valid layer names/ids before setting a layer on allure_create_test_case / allure_update_test_case. Built-in layers use negative ids (e.g. API Tests = -3).

Returns: dict with project_id, count and layers (each: id, name).

allure_get_test_caseA

Get one test case's full detail — fields, status/layer, tags, and steps.

Unlike allure_list_test_cases (summaries), this returns the body of a single test case: description, precondition, expected result, and the manual scenario steps (flattened with a depth marker). Use it to read or review the actual content of a test case.

Returns: dict with id, name, project_id, automated, description, precondition, expected_result, status, layer, tags and steps (each: depth, keyword, name, expected_result). steps is empty when include_scenario is false or the case has none.

allure_get_test_case_custom_fieldsA

List the custom-field values set on a test case.

Returns each value flattened to field_id / field_name (the custom field) and value_id / value_name (the chosen value) — e.g. field "Priority" → value "High". These are not included in allure_get_test_case; fetch them here when you need a test case's custom-field assignments.

allure_list_custom_fieldsA

List the custom fields defined on a project (its schema).

Returns each field's field_id, name, single_select and required. Use it to discover which custom fields a project has before reading a test case's values with allure_get_test_case_custom_fields. Built-in metadata fields (Epic/Feature/Story/Component/Suite) use negative ids; project-specific custom fields use positive ids.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/mshegolev/allure-testops-mcp'

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