Skip to main content
Glama
mshegolev

allure-testops-mcp

by mshegolev

allure-testops-mcp

PyPI Python License: MIT Tests

Servidor MCP para Allure TestOps. Permite que un agente LLM (Claude Code, Cursor, OpenCode, etc.) consulte proyectos, ejecuciones, casos de prueba y resultados de pruebas a través de la API REST de Allure.

Python, FastMCP, transporte stdio.

Funciona con cualquier instancia de Allure TestOps, ya sea SaaS qameta.io o autohospedada / on-prem. Diseñado pensando en redes corporativas: omisión de proxy configurable, alternancia opcional de verificación SSL y autenticación mediante token de API.

Aspectos destacados del diseño

  • Anotaciones de herramientas — cada herramienta está marcada como readOnlyHint: True / openWorldHint: True. Las 6 herramientas son de solo lectura; los clientes MCP no solicitarán confirmación.

  • Salida estructurada en cada herramienta — cada herramienta declara un tipo de retorno TypedDict, por lo que FastMCP genera automáticamente un outputSchema y cada resultado contiene tanto structuredContent (carga útil tipada) como un bloque de texto markdown pre-renderizado.

  • Errores estructurados — los errores de autenticación, 404, 403, 429, 5xx y variables de entorno faltantes se convierten en mensajes procesables (p. ej., "Authentication failed — verify ALLURE_TOKEN has API scope").

  • Validación de entrada Pydantic — cada argumento tiene restricciones tipadas (rangos, longitudes, literales) expuestas automáticamente como JSON Schema.

  • Paginación — las herramientas de listado devuelven un bloque pagination con page, total, has_more, next_page.

  • Informes de progreso a través de MCP Context — las herramientas que realizan múltiples llamadas a la API (allure_get_project_statistics, allure_search_failed_tests) y allure_list_test_cases emiten eventos ctx.report_progress + ctx.info para que los clientes compatibles puedan renderizar barras de progreso y etiquetas de paso.

Related MCP server: Allure TestOps MCP

Características

6 herramientas que cubren los flujos de trabajo diarios de Allure TestOps:

Descubrimiento

  • allure_list_projects — todos los proyectos con ID, nombre y abreviatura

  • allure_get_project_statistics — recuento de TC, tasa de automatización, resumen de la última ejecución

Ejecuciones y resultados

  • allure_list_launches — ejecuciones recientes con estadísticas de éxito/fallo

  • allure_get_test_results — resultados de pruebas en una ejecución (filtrar por estado)

  • allure_search_failed_tests — pruebas FAILED/BROKEN en la última ejecución o en una especificada

Casos de prueba

  • allure_list_test_cases — casos de prueba con filtro automatizado/manual (cada resultado también lleva su capa, p. ej., UNIT / API / E2E)

Instalación

Requiere Python 3.10+.

# via uvx (recommended)
uvx --from allure-testops-mcp allure-testops-mcp

# or via pipx
pipx install allure-testops-mcp

Configuración

Versión corta — claude mcp add:

claude mcp add allure -s project \
  --env ALLURE_URL=https://allure.example.com \
  --env ALLURE_TOKEN=your-api-token \
  --env ALLURE_SSL_VERIFY=true \
  -- uvx --from allure-testops-mcp allure-testops-mcp

O en ~/.claude.json / .mcp.json del proyecto:

{
  "mcpServers": {
    "allure": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "allure-testops-mcp", "allure-testops-mcp"],
      "env": {
        "ALLURE_URL": "https://allure.example.com",
        "ALLURE_TOKEN": "${ALLURE_TOKEN}",
        "ALLURE_SSL_VERIFY": "true"
      }
    }
  }
}

Consulte .env.example para ver una plantilla de todas las variables de entorno admitidas.

Comprobación:

claude mcp list
# allure: uvx --from allure-testops-mcp allure-testops-mcp - ✓ Connected

Variables de entorno

Variable

Requerido

Descripción

ALLURE_URL

sí

URL de Allure TestOps (p. ej., https://allure.example.com)

ALLURE_TOKEN

sí

Token de API de Allure TestOps (Perfil → API tokens)

ALLURE_SSL_VERIFY

no

true/false. Establecer en false para certificados corporativos autofirmados. Predeterminado: true.

Ejemplo de uso

En Claude Code:

  • "List all Allure projects"

  • "Show last 10 launches for project 63"

  • "Failed tests in the last launch for project 175"

  • "Automation rate for project 842"

  • "Test results in launch 12345 with status FAILED"

Consideraciones de seguridad

  • El token de API se lee de la variable de entorno ALLURE_TOKEN — nunca se pasa por la línea de comandos y nunca se escribe en los registros.

  • Los secretos no se repiten en las respuestas de las herramientas (sin volcados de stat.request_headers, sin reflexión de session.auth).

  • SSL autofirmado es opcional mediante ALLURE_SSL_VERIFY=false — el valor predeterminado es true. Deshabilitar la verificación en una red pública es un riesgo de seguridad; utilícelo solo para instancias corporativas de confianza.

  • La detección de proxy está deshabilitada (session.trust_env = False) — el MCP ignora deliberadamente las variables de entorno HTTP_PROXY/HTTPS_PROXY para que la sesión no pueda ser enrutada silenciosamente a través de un proxy no deseado. Si su instancia de Allure solo es accesible a través de un proxy, ejecute el MCP en un entorno donde requests pueda resolver directamente.

  • No se exponen operaciones de escritura — las 6 herramientas son de solo lectura. Incluso si el token de API tiene alcance de escritura, este servidor MCP no puede crear, modificar ni eliminar nada en Allure TestOps.

  • Validación de entrada mediante Pydantic — cada argumento de herramienta está tipado y acotado (los ID deben ser ≥ 1, la paginación limitada a 200-500).

Límites de tasa

Allure TestOps aplica límites de tasa por instancia (típicamente ~60 solicitudes / minuto para tokens de API). En caso de HTTP 429, el MCP devuelve un error procesable sugiriendo que:

  • Espere 30-60 segundos antes de volver a intentarlo.

  • Reduzca el parámetro size (predeterminado 50 para resultados de pruebas, 200 para proyectos).

  • Pagine con tamaños de página más pequeños.

Dos herramientas realizan múltiples llamadas a la API internamente:

  • allure_get_project_statistics — 3 llamadas (recuentos de TC + ejecuciones + estadísticas de ejecución).

  • allure_search_failed_tests — 2-3 llamadas (resolución de la última ejecución + FAILED + BROKEN).

Ambas utilizan el Context de MCP para informar el progreso paso a paso; allure_list_test_cases también emite un único evento de progreso. Supervise el flujo de progreso en clientes compatibles.

Desarrollo

git clone https://github.com/mshegolev/allure-testops-mcp.git
cd allure-testops-mcp
pip install -e '.[dev]'
pytest

Ejecute el servidor directamente (transporte stdio, espera en stdin los mensajes MCP):

ALLURE_URL=... ALLURE_TOKEN=... allure-testops-mcp

Licencia

MIT © Mikhail Shchegolev

Available Tools

11 tools
allure_get_project_statisticsA
Read-onlyIdempotent

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``).
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID (discover via allure_list_projects).

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
total_test_casesYes
automated_test_casesYes
manual_test_casesYes
automation_rate_pctYes
last_launch_idYes
last_launch_nameYes
last_launch_passedYes
last_launch_failedYes
last_launch_brokenYes
last_launch_totalYes
recent_launches_countYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that the tool performs 3-4 API calls with progress reported via MCP Context, which is useful behavioral insight beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (summary, Args, Returns, Examples, Don't use). It is front-loaded with the purpose. While somewhat verbose, every section adds value and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully compensates for the lack of an output schema by providing a detailed return dict specification. It includes examples and instructions on interpreting results. For a simple one-param tool, it is exceptionally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter (project_id) is well described in the schema and the description adds examples of usage. With 100% schema coverage, the baseline is 3, and the description adds marginal value but not significant new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get summary statistics for an Allure project' and lists specific outputs (TC count, automation rate, last launch breakdown). It distinguishes from siblings by noting when not to use it (for per-test detail or full launch history, referencing sibling tools).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Don't use when' instructions with alternative tools (allure_get_test_results, allure_list_launches) and includes concrete examples for typical queries. This gives clear guidance on appropriate vs. inappropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_get_test_caseA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
test_case_idYesAllure test-case ID.
include_scenarioNoAlso fetch the manual scenario steps (one extra call).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
project_idYes
automatedYes
descriptionYes
preconditionYes
expected_resultYes
statusYes
layerYes
tagsYes
created_byYes
last_modified_byYes
stepsYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds valuable detail: it returns a dict with specific keys, including 'steps' with 'depth' marker, and clarifies that steps are empty when 'include_scenario' is false. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a clear first sentence stating purpose, a contrast with a sibling, and a concise return format. It is appropriately sized—every sentence adds value without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description complements it well by listing the dictionary keys and explaining the step structure. It covers the essential aspects of the tool's behavior and return value comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers both parameters with descriptions. The description adds context about the structure of steps and the effect of 'include_scenario' (an extra call), which is not in the schema. Since schema coverage is 100%, baseline is 3, but the extra context justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Get one test case's full detail' and lists specific fields (status, layer, tags, steps). It explicitly distinguishes from the sibling 'allure_list_test_cases' which returns summaries, making it easy for an agent to select the correct tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly contrasts with 'allure_list_test_cases' and says 'Use it to read or review the actual content of a test case.' It also explains the effect of 'include_scenario', providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_get_test_case_custom_fieldsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
test_case_idYesAllure test-case ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
test_case_idYes
countYes
custom_fieldsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds behavioral context about the flattened return structure (field_id, field_name, value_id, value_name), which is not in annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no fluff, and front-loaded with the main action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter, high annotation coverage, and an output schema, the description is complete. It explains the return structure and differentiates from a sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (only parameter 'test_case_id' described). The description does not add parameter-specific info beyond the schema, but it explains the return format. Baseline 3 is appropriate since schema covers the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List the custom-field values set on a test case.' It specifies the exact action and resource, and distinguishes from sibling 'allure_get_test_case' by noting that custom fields are not included there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool: 'fetch them here when you need a test case's custom-field assignments.' It also mentions that these are not included in 'allure_get_test_case', providing clear differentiation from a sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_get_test_resultsA
Read-onlyIdempotent

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).
ParametersJSON Schema
NameRequiredDescriptionDefault
launch_idYesAllure launch ID.
statusNoFilter by status. None returns all statuses.
pageNo0-based page.
sizeNoItems per page (1-200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
launch_idYes
countYes
paginationYes
resultsYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive. The description adds detailed return structure (fields like id, name, status, duration_ms, error truncated to 300 chars) and pagination behavior, surpassing what annotations offer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise and well-structured: purpose sentence, Args with bullet-like notation, Returns dict, Examples, and exclusion note. No wasted words, and critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, an output schema, and sibling tools, the description covers all aspects: parameter details, return format, usage hints, and alternatives. It enables correct invocation without gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by linking launch_id to another tool's output, explaining page is 0-based, size limits, and providing real-world examples. That justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves individual test results filtered by status, with a specific verb 'Get' and resource 'test results inside a launch'. It distinguishes from sibling 'allure_search_failed_tests' by noting that sibling handles FAILED+BROKEN together.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when not to use (for FAILED+BROKEN) and points to alternative 'allure_search_failed_tests'. Also provides examples clarifying common use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_custom_fieldsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
countYes
custom_fieldsYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, so the description adds value by detailing the returned fields and the negative/positive id distinction for built-in vs. custom fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with four sentences, each serving a purpose: stating the action, listing return fields, giving usage guidance, and providing extra id context. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, clear annotations, and an output schema (implied), the description is complete. It explains what the tool returns, when to use it, and references a related sibling tool, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for 'project_id'. The description does not add further parameter-level semantics but provides useful context about the tool's output, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'custom fields defined on a project', and differentiates from sibling tools by referencing 'allure_get_test_case_custom_fields' as a subsequent step. It also explains the output specifics (field_id, name, single_select, required) and the id sign convention.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using this tool 'before reading a test case's values with allure_get_test_case_custom_fields', providing clear context. While it does not mention when not to use it, the recommendation is strong and helps the agent decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_launchesA
Read-onlyIdempotent

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``).
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.
pageNo0-based page.
sizeNoItems per page (1-100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
countYes
paginationYes
launchesYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool's safety profile is known. The description adds value by detailing the return structure (pagination block, launch breakdown) and pagination behavior, which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Don't use when) and is concise. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (pagination, detailed return structure), the description covers all key aspects: parameter details, return format with field descriptions, usage examples, and sibling differentiation. It is complete for an agent to correctly select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so parameters are well-documented. The description adds a usage hint for the 'size' parameter ('20 is usually enough for triage'), which provides additional context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List recent launches'), the resource ('launches for a project'), and ordering ('newest first'). It also distinguishes from sibling tools by explicitly stating alternatives in the 'Don't use when' section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use the tool (to list launches with breakdown and pagination) and when not to use it, naming two alternative tools (allure_get_test_results, allure_search_failed_tests). This clearly helps the agent decide between siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_layersA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
countYes
layersYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds value by detailing the return structure (dict with project_id, count, layers) and the negative id behavior for built-in layers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus a return format note. No unnecessary words, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter with full schema coverage, output schema exists, and the description covers usage guidance, return structure, and special behavior (negative ids). It is complete for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear description for 'project_id'. The tool description does not add any further parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'test layers defined in a project', and specifies the output (id, name). It also differentiates from sibling list tools by focusing on layers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this to discover valid layer names/ids before setting a layer on allure_create_test_case / allure_update_test_case', providing a clear use case and hinting at alternatives. It also notes built-in layer id ranges.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_projectsA
Read-onlyIdempotent

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).
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo0-based page number.
sizeNoItems per page (1-500).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
projectsYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond annotations by describing pagination parameters and the return structure (dict with count and list of projects with id, name, abbreviation). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections, examples, and anti-guidance. Every sentence adds value; no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete description for a simple listing tool: covers usage, return format, examples, and when not to use. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the purpose of parameters in the context of project discovery and providing examples of usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all projects in the Allure TestOps instance. It uses specific verb 'list' and resource 'projects', and distinguishes from siblings by noting this tool discovers project IDs used by other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states to use this first to discover project IDs and advises not to use when the project ID is already known, with a clear alternative of going directly to the target tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_statusesA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
countYes
statusesYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by specifying the return structure (dict with project_id, count, statuses) and mentioning built-in statuses use negative ids, which aids understanding but does not heavily extend beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short paragraphs with the main action front-loaded. Every sentence serves a purpose: defining the function, guiding usage, and explaining return format. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one integer parameter, no nested objects) and the presence of an output schema, the description covers the tool's purpose, usage, and return values completely. It leaves no important gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter project_id, so baseline is 3. The description does not add additional meaning beyond what the schema provides ('Allure project ID'). No extra semantics are offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists test-case statuses with specific fields (id, name, color). It distinguishes from sibling tools like allure_list_projects and allure_list_test_cases because it focuses on statuses, not other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool: 'Use this to discover valid status names/ids before setting a status on allure_create_test_case / allure_update_test_case.' It also notes that built-in statuses use negative ids, providing crucial context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_list_test_casesA
Read-onlyIdempotent

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``).
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.
automatedNoTrue: only automated. False: only manual. None: both.
ownerNoAllure username — narrows the result to TCs where the user is the creator OR the last modifier. Applied server-side via Allure RQL (see docstring).
pageNo0-based page.
sizeNoItems per page (1-200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
countYes
paginationYes
test_casesYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behavioral details beyond annotations: audit fields and tags are only populated when owner is set (Allure endpoint constraint), owner is actually a union of createdBy and lastModifiedBy, the automated filter becomes client-side when owner is used, pagination implications, and the regex pattern preventing RQL injection. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, Examples, and a 'Don't use when' section. It is front-loaded with the primary purpose, and every section earns its place by providing necessary context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, optional filters, server-side vs client-side behavior), the description covers all aspects: input semantics, output structure, edge cases (owner limitation), and practical examples. The presence of an output schema does not reduce the value of the detailed return format explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds significant semantic value: explains why owner maps to creator/modifier, details the trade-off with automated filtering, provides pattern explanation and injection prevention context, and gives concrete examples for using automated, page, and size parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists test cases for a project with optional automation and ownership filters. It details specific fields returned (id, name, automated, status, layer, etc.), distinguishing it from sibling tools like allure_get_project_statistics, which returns summary data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage examples (e.g., 'How many manual TCs does project 63 have?'), a 'Don't use when' section pointing to allure_get_project_statistics for automation percentages, and detailed context on when to set owner and associated trade-offs (e.g., client-side filtering).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allure_search_failed_testsA
Read-onlyIdempotent

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).
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesAllure project ID.
launch_idNoSpecific launch ID. If omitted, uses the most recent launch.
limitNoMax failures to return per status.

Output Schema

ParametersJSON Schema
NameRequiredDescription
launch_idYes
failed_countYes
resultsYes
reasonYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent. The description adds that up to 3 API calls are made and progress is reported via MCP Context, which is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with summary, usage, args, returns, examples, and exclusions. Every sentence is purposeful and the description is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of output schema, the description still explains return values and provides examples. It covers all necessary context for correct usage and triage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning: max failures per status (2*limit total), launch_id fallback to latest, and mentions ctx auto-injection. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds FAILED and BROKEN tests in a launch. It uses a specific verb and resource, and distinguishes from sibling tools like allure_get_test_results by focusing on failures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: use for triage, with examples. A 'Don't use when' section specifies when to use alternative tools (allure_get_test_results). Context and alternatives are clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.8.2
    • Addedallure_get_test_case
    • Addedallure_get_test_case_custom_fields
    • Addedallure_list_custom_fields
    • Addedallure_list_layers
    • Addedallure_list_statuses
  2. 1 tool updatev0.2.1
    • Changedallure_list_test_cases5 fields changed
      • addedInput schema / properties / owner
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 255,
        +      "pattern": "^[A-Za-z0-9._@-]+$",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Allure username — narrows the result to TCs where the user is the creator OR the last modifier. Applied server-side via Allure RQL (see docstring).",
        +  "title": "Owner"
        +}
      • addedOutput schema / $defs / TestCaseSummary / properties / created_by
        Added value: +{
        +  "title": "Created By",
        +  "type": "string"
        +}
      • addedOutput schema / $defs / TestCaseSummary / properties / last_modified_by
        Added value: +{
        +  "title": "Last Modified By",
        +  "type": "string"
        +}
      • addedOutput schema / $defs / TestCaseSummary / properties / tags
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "title": "Tags",
        +  "type": "array"
        +}
      • changedOutput schema / $defs / TestCaseSummary / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "automated",
        -  "status",
        -  "layer"
        -]New value: +[
        +  "id",
        +  "name",
        +  "automated",
        +  "status",
        +  "layer",
        +  "created_by",
        +  "last_modified_by",
        +  "tags"
        +]
  3. 6 tool updatesv0.1.2
    • First observedallure_get_project_statistics
    • First observedallure_get_test_results
    • First observedallure_list_launches
    • First observedallure_list_projects
    • First observedallure_list_test_cases
    • First observedallure_search_failed_tests

TDQS

A4.5/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct entity or operation (projects, statistics, test cases, launches, results, failures, custom fields, layers, statuses) with clear boundaries and explicit 'Don't use when' guidance to prevent misselection.

Naming Consistency5/5

All tools follow a consistent 'allure_verb_noun' pattern (e.g., allure_list_projects, allure_get_test_case), making the naming predictable and easy to navigate.

Tool Count5/5

With 11 tools, the set is well-scoped for a test management server, covering essential query and list operations without being overwhelming.

Completeness3/5

The tools are heavily read-focused, missing create/update/delete operations for test cases and other entities, which are fundamental to full lifecycle management. The descriptions reference 'allure_create_test_case' but it is not included.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

  • Official MCP server for Qase — manage test cases, runs, suites, defects via AI tools.

  • Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.

  • MCP server for building and testing AI agents with multi-model experimentation and insights.

  • Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    AI-native Model Context Protocol (MCP) server for TestRail. Lets Claude, Cursor, Windsurf, and other AI assistants browse projects, create and update test cases, kick off test runs, and record results through natural-language conversation — with strongly-typed tool schemas and per-project custom field validation that helps LLMs generate valid TestRail requests on the first try.
    27
    1,177 npm
    40
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    An MCP server for Allure TestOps that enables AI agents to manage test cases, defects, test plans, and other test management entities with clear, easy-to-use tools and helpful error guidance.
    70
    7
    Apache 2.0