Skip to main content
Glama

PyPI Version PyPI Python Version PyPI Downloads GitHub License

Allure TestOps MCP Server

Lucius is a specialized Model Context Protocol (MCP) server for Allure TestOps, built with FastMCP and Starlette.

🎯 Motivation

Allure TestOps is a powerful tool with a huge API. When you're using an AI agent to manage your tests, it can easily get lost in the details or fail because of a small technical mistake.

Lucius makes this easier by giving your AI tools that are simple to use and hard to break:

  • Clear Tools: Every tool is designed for a specific task, like "finding a test case" or "updating a launch".

  • Helpful Errors: If an AI makes a mistake, Lucius doesn't just return a codeβ€”it provides an "Agent Hint" that explains exactly what went wrong and how to fix it.

  • Solid Foundation: We follow a clean "Thin Tool" structure, meaning the logic is consistent and easy for both humans and AI to follow.

Related MCP server: Allure TestOps MCP

πŸ› οΈ Supported Tools

See the full reference in Tool Reference.

Tool Category

Description

All Tools

Test Case Mgmt

Full lifecycle for test documentation.

create_test_case, update_test_case, delete_test_case, delete_archived_test_cases, get_test_case_details, get_test_case_custom_fields

Automation Generation

Generate framework-specific code from existing test cases.

generate_test_code

Search & Discovery

Advanced search and project metadata discovery.

list_test_cases, search_test_cases, get_custom_fields, list_integrations, get_project

Shared Steps

Create and manage reusable step sequences.

create_shared_step, list_shared_steps, update_shared_step, delete_shared_step, delete_archived_shared_steps, link_shared_step, unlink_shared_step

Test Layers

Manage test taxonomy and auto-mapping schemas.

list_test_layers, create_test_layer, update_test_layer, delete_test_layer, list_test_layer_schemas, create_test_layer_schema, update_test_layer_schema, delete_test_layer_schema

Test Hierarchy

Organize suites and assign tests in tree paths.

create_test_suite, list_test_suites, assign_test_cases_to_suite, delete_test_suite

Custom Fields

Project-level management of custom field values.

list_custom_field_values, create_custom_field_value, update_custom_field_value, delete_custom_field_value, delete_unused_custom_fields

Launch Management

Manage launches, result uploads, manual execution, reruns, and attachments.

create_launch, list_launches, get_launch, list_launch_test_results, upload_test_results, attach_file_to_launch, rerun_test_results_manually, start_manual_test_session, submit_manual_test_results, add_test_result_attachment

Test Result Management

Inspect one exact TestOps result and prepare verified evidence downloads.

get_test_result, prepare_attachment_download

Test Plans

Manage test plans and their content.

create_test_plan, update_test_plan, delete_test_plan, list_test_plans, manage_test_plan_content, run_test_plan

Defect Mgmt

Track defects, linkage, and automation rules.

create_defect, get_defect, update_defect, delete_defect, list_defects, link_defect_to_test_case, unlink_issue_from_test_case, list_defect_test_cases, create_defect_matcher, list_defect_matchers, update_defect_matcher, delete_defect_matcher

πŸš€ Quick Start

  1. Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh

  2. Setup Credentials: Create a .env file with the variables below, or save CLI auth with lucius auth.

  3. Run Server: uv run start

Basic .env for Quick Start

Variable

Description

Example

ALLURE_ENDPOINT

Allure TestOps base URL

https://example.testops.cloud

ALLURE_PROJECT_ID

Default Allure project ID (optional for get_project; required by project-scoped tools)

123

ALLURE_API_TOKEN

Allure API token

<your_api_token>

MCP_MODE

MCP transport mode for Lucius runtime

stdio

πŸ”Œ Claude Desktop Integration

The easiest way to use Lucius in Claude Desktop is via the .mcpb bundle:

  1. Download the latest lucius-mcp.mcpb from Releases.

  2. Open with Claude Desktop.

  3. Configure your Allure credentials in the UI.

πŸ’» Claude Code Integration

To add Lucius to Claude Code, use the following command from within your project directory:

claude mcp add --transport stdio --scope project \
  --env ALLURE_ENDPOINT=https://example.testops.cloud \
  --env ALLURE_PROJECT_ID=123 \
  --env ALLURE_API_TOKEN=<your_api_token> \
  --env MCP_MODE=stdio \
  testops-mcp -- uvx --from lucius-mcp --refresh start

Project-scoped text config example (.mcp.json):

{
  "mcpServers": {
    "testops-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "lucius-mcp",
        "--refresh",
        "start"
      ],
      "env": {
        "ALLURE_ENDPOINT": "https://example.testops.cloud",
        "ALLURE_PROJECT_ID": "123",
        "ALLURE_API_TOKEN": "<your_api_token>",
        "MCP_MODE": "stdio"
      }
    }
  }
}

🧠 Codex Integration

To add Lucius to Codex (CLI or IDE extension), use:

codex mcp add testops-mcp \
  --env ALLURE_ENDPOINT=https://example.testops.cloud \
  --env ALLURE_PROJECT_ID=123 \
  --env ALLURE_API_TOKEN=<your_api_token> \
  --env MCP_MODE=stdio \
  -- uvx --from lucius-mcp --refresh start

Text config example (~/.codex/config.toml or project .codex/config.toml):

[mcp_servers.testops-mcp]
command = "uvx"
args = ["--from", "lucius-mcp", "--refresh", "start"]

[mcp_servers.testops-mcp.env]
ALLURE_ENDPOINT = "https://example.testops.cloud"
ALLURE_PROJECT_ID = "123"
ALLURE_API_TOKEN = "<your_api_token>"
MCP_MODE = "stdio"

For detailed setup, including Claude Desktop (MCPB) integration, see Setup Guide.

🐍 Supported Python versions

Lucius supports Python 3.11 through 3.14 for runtime use. The generated MCPB manifests and the representative Nuitka CLI compiler matrix validate the same range. Python 3.15 support is experimental: installation may require source builds, and platform compatibility is still being verified. See the development guide for current limitations. Python 3.10 remains unsupported because the locked filelock security update requires Python 3.11 or newer.

πŸ’» Command-Line Interface (CLI)

Lucius also provides a universal CLI entry point for direct tool execution from the command line:

# List available actions for an entity
uv run lucius test_case

# Execute an action
uv run lucius test_case get --args '{"test_case_id": 1234}'

# Show help for a specific entity/action
uv run lucius test_case get --help

# Save reusable CLI auth
uv run lucius auth --url https://example.testops.cloud --token <your_api_token> --project 123
uv run lucius auth status
uv run lucius auth clear

CLI Features:

  • 🎯 Type-safe entity/action invocation with validation

  • πŸ” Optional persistent CLI auth with native per-user config storage

  • πŸ“Š Multiple output formats (JSON, table, csv, plain)

  • πŸ” Per-action help with parameters and examples

  • πŸ›‘οΈ Clean error messages with guidance

  • πŸ“¦ Standalone binaries for Linux, macOS, and Windows

CLI auth precedence is:

  1. Explicit tool args such as api_token or project_id

  2. Environment variables

  3. Saved CLI auth config from uv run lucius auth

  4. Defaults

Saved CLI auth uses native config locations:

  • Linux/Unix: $XDG_CONFIG_HOME/lucius/auth.json or ~/.config/lucius/auth.json

  • macOS: ~/Library/Application Support/lucius/auth.json unless XDG overrides are explicitly set

  • Windows: %LOCALAPPDATA%\lucius\auth.json

For full CLI documentation and installation instructions, see CLI Guide.

πŸ“‘ Telemetry

Lucius collects privacy-preserving usage telemetry to improve tool quality. Telemetry is enabled by default and sends metadata to https://stats.ostanin.me, an endpoint operated by the project owner (no third party has access to this endpoint).

If this is acceptable in your environment, staying opted in helps improve Lucius over time. If you want to opt out, set TELEMETRY_ENABLED=false in your environment.

No API tokens, test content, or tool arguments are sent.

See Telemetry & Privacy for the full data dictionary and telemetry behavior details.

πŸ“‚ Documentation

Full documentation is available in the docs/ folder:

🀝 Contributing

Contributions are welcome! Please see the Contribution Guidelines and the Development Guide for more details.

Available Tools

70 tools
add_test_result_attachmentAdd Test Result AttachmentA

Upload evidence to a manual test result.

The returned attachment_ids can be used as attachment_id values in submit_manual_test_results. Result-level evidence can also be uploaded after a manual result has been resolved.

Inputs: attachment (required), test_result_id (required), project_id, output_format. Returns: target_id, file_names, status_code, target_kind, +1 more

assign_test_cases_to_suiteAssign Test Cases To SuiteA
DestructiveIdempotent

Assign test cases to a suite path in hierarchy.

⚠️ CAUTION: Destructive. Reassigning test cases changes their hierarchy location.

Inputs: suite_id (required), test_case_ids (required), tree_id, project_id, +1 more. Returns: tree_id, suite_id, test_case_ids, assigned_count

attach_file_to_launchAttach File To LaunchA

Attach one file to an existing launch through a secure push or pull transfer.

Push is available only from a persistent HTTP MCP server with an externally reachable HTTPS URL. It returns a short-lived one-use raw upload URL; POST bytes with exactly the returned content type and no TestOps bearer token. Pull reads a regular file below the deployment's configured import root.

Inputs: name (required), launch_id (required), project_id, source_path, +3 more. Returns: Explicit mutually exclusive output states for launch attachment transfer.

close_launchClose LaunchA
DestructiveIdempotent

Close a launch and return updated launch details.

Inputs: launch_id (required), api_token, project_id, output_format. Returns: Stable compact launch fields emitted by create and lifecycle tools.

create_custom_field_valueCreate Custom Field ValueC

Create a new custom field value option.

Inputs: name (required), project_id, output_format, custom_field_id, +1 more. Returns: id, name, custom_field_id, custom_field_name

create_defectCreate DefectA

Create a new defect in the current project.

Use this tool to register a known defect that can later be linked to failing test results through defect matchers (automation rules).

Inputs: name (required), description, output_format. Returns: id, url, name, description

create_defect_matcherCreate Defect MatcherA

Create a defect matcher (automation rule) for a defect.

Matchers automatically link future failing test results to a defect when the test failure's error message or stack trace matches the provided regex patterns.

At least one of message_regex or trace_regex must be supplied.

Inputs: name (required), defect_id (required), trace_regex, message_regex, +1 more. Returns: id, name, defect_id, trace_regex, +1 more

create_launchCreate LaunchB

Create a new launch in Allure TestOps.

Inputs: name (required), tags, links, issues, +4 more. Returns: Stable compact launch fields emitted by create and lifecycle tools.

create_shared_stepCreate Shared StepC

Create a new reusable Shared Step.

Inputs: name (required), steps, project_id, output_format. Returns: id, url, name, project_id

create_test_caseCreate Test CaseB

Create a new test case in Allure TestOps.

Inputs: name (required), tags, steps, issues, +9 more. Returns: id, url, name, issues

create_test_layerCreate Test LayerB

Create a new test layer in Allure TestOps.

Test layers define taxonomy for categorizing test cases. Common examples include 'Unit', 'Integration', 'E2E', 'UI', 'API', etc.

Inputs: name (required), project_id, output_format. Returns: id, name

create_test_layer_schemaCreate Test Layer SchemaA

Create a new test layer schema to map a custom field key to a test layer.

Test layer schemas define the mapping between custom field keys and test layers. This allows test cases with specific custom field values to be automatically assigned to the correct test layer.

Inputs: key (required), project_id (required), test_layer_id (required), output_format. Returns: id, key, test_layer_id, test_layer_name

create_test_planCreate Test PlanA

Create a new Test Plan in Allure TestOps.

This tool allows creating a Test Plan, which is a collection of Test Cases to be executed. You can define the content of the plan either by:

  1. Explicitly listing Test Case IDs (test_case_ids).

  2. Providing an AQL (Allure Query Language) filter (aql_filter).

  3. Both (explicit selection + dynamic filter).

Inputs: name (required), aql_filter, output_format, test_case_ids. Returns: id, url, name, aql_filter, +2 more

create_test_suiteCreate Test SuiteB

Create a new test suite node in the hierarchy tree.

Inputs: name (required), tree_id, project_id, output_format, +1 more. Returns: id, name, tree_id, parent_suite_id

delete_archived_shared_stepsDelete Archived Shared StepsA
DestructiveIdempotent

Permanently delete all archived shared steps in the current project.

Inputs: confirm, project_id, output_format. Returns: action, deleted_count, requires_confirmation

delete_archived_test_casesDelete Archived Test CasesA
DestructiveIdempotent

Permanently delete all archived/deleted test cases in the current project.

Inputs: confirm, project_id, output_format. Returns: action, deleted_count, requires_confirmation

delete_custom_field_valueDelete Custom Field ValueB
DestructiveIdempotent

Delete a custom field value. ⚠️ CAUTION: Destructive.

Inputs: cfv_id (required), confirm, project_id, output_format, +2 more. Returns: id, action, cfv_id, status, +1 more

delete_defectDelete DefectA
DestructiveIdempotent

Permanently delete a defect and all its associated matchers.

This is a destructive operation. The confirm parameter must be set to true to actually perform the deletion.

Inputs: defect_id (required), confirm, output_format. Returns: id, status, defect_id

delete_defect_matcherDelete Defect MatcherA
DestructiveIdempotent

Permanently delete a defect matcher (automation rule).

This is a destructive operation. The confirm parameter must be set to true to actually perform the deletion.

Inputs: matcher_id (required), confirm, output_format. Returns: id, status, matcher_id

delete_launchDelete LaunchC
DestructiveIdempotent

Delete a launch by ID. ⚠️ CAUTION: Destructive.

Inputs: launch_id (required), project_id, output_format. Returns: status, message, launch_id

delete_shared_stepDelete Shared StepA
DestructiveIdempotent

Delete a shared step from the library. ⚠️ CAUTION: Destructive.

⚠️ CAUTION: If this shared step is used by test cases, deleting it will break those references.

Inputs: step_id (required), confirm, project_id, output_format. Returns: id, url, action, status, +2 more

delete_test_caseDelete Test CaseA
DestructiveIdempotent

Archive an obsolete test case. ⚠️ CAUTION: Destructive.

This performs a SOFT DELETE (archive). The test case can typically be recovered from the Allure UI if needed.

⚠️ CAUTION: This action removes the test case from active views. Historical data and launch associations may be affected.

Inputs: test_case_id (required), confirm, project_id, output_format. Returns: url, name, error, action, +3 more

delete_test_layerDelete Test LayerB
DestructiveIdempotent

Delete a test layer from Allure TestOps. ⚠️ CAUTION: Destructive.

Inputs: layer_id (required), confirm, project_id, output_format. Returns: id, action, status, layer_id, +1 more

delete_test_layer_schemaDelete Test Layer SchemaB
DestructiveIdempotent

Delete a test layer schema from the project. ⚠️ CAUTION: Destructive.

Inputs: schema_id (required), confirm, project_id, output_format. Returns: id, action, status, schema_id, +1 more

delete_test_planDelete Test PlanA
DestructiveIdempotent

Delete a Test Plan. ⚠️ CAUTION: Destructive.

Permanently removes the Test Plan from Allure TestOps. The operation is idempotent: if the plan does not exist, it returns success.

Inputs: plan_id (required), confirm, output_format. Returns: action, status, plan_id, requires_confirmation

delete_test_suiteDelete Test SuiteA
DestructiveIdempotent

Delete a test suite node from hierarchy. ⚠️ CAUTION: Destructive.

This operation removes a hierarchy suite/group node. Allure TestOps handles nested entities according to its API behavior for tree groups.

Inputs: suite_id (required), confirm, tree_id, project_id, +1 more. Returns: action, status, suite_id, requires_confirmation

delete_unused_custom_fieldsDelete Unused Custom FieldsA
DestructiveIdempotent

Delete custom fields that are unused by any test case in the current project.

Inputs: confirm, project_id, output_format. Returns: action, deleted_count, requires_confirmation

generate_test_codeGenerate Test CodeA
Read-onlyIdempotent

Generate a current, framework-specific test snippet from a TestOps test case.

Both target selections are required. The tool validates verified TestOps language/framework compatibility locally and synchronizes only requested test-case metadata before generation.

Inputs: language (required), framework (required), test_case_id (required), metadata, +1 more. Returns: code, language, metadata, framework, +1 more

get_custom_fieldsGet Custom FieldsA
Read-onlyIdempotent

Get available custom fields and their allowed values for the project.

Use this tool to discover what custom fields are available (e.g., 'Layer', 'Priority') and what values are valid for them (e.g., 'UI', 'High'). This is essential before creating or updating test cases to ensure you use valid field names and values.

Inputs: name, project_id, output_format. Returns: items, total, filter_name

get_defectGet DefectA
Read-onlyIdempotent

Retrieve detailed information about a specific defect.

Inputs: defect_id (required), output_format. Returns: id, url, name, closed, +2 more

get_launchGet LaunchB
Read-onlyIdempotent

Retrieve a specific launch and summarize its details.

Inputs: launch_id (required), tree_id, project_id, output_format, +1 more. Returns: Rich exact-ID launch fields, with explicit stable nested projections.

get_projectGet ProjectA
Read-onlyIdempotent

Retrieve one project by name or list accessible projects.

Name matching is case-insensitive. An exact match is preferred; an unambiguous partial match is accepted. Omit name to discover the available project IDs and names before making project-scoped calls.

Inputs: name, output_format. Returns: id, abbr, name, items, +3 more

get_test_case_custom_fieldsGet Test Case Custom FieldsB
Read-onlyIdempotent

Retrieve custom field values for a specific test case.

Inputs: test_case_id (required), project_id, output_format. Returns: test_case_id, custom_fields

get_test_case_detailsGet Test Case DetailsA
Read-onlyIdempotent

Get complete details of a specific test case.

Retrieves all information about a test case including its steps, tags, custom fields, and attachments. For each attachment, call prepare_attachment_download with its attachment_id, attachment_kind, and test_case_id, then HTTP GET the returned Lucius URL. Use this before updating a test case to understand its current state.

Inputs: test_case_id (required), project_id, output_format. Returns: Structured details for one test case.

get_test_resultGet Test ResultA
Read-onlyIdempotent

Retrieve one complete TestOps result without recursively reading related results.

Attachment references identify their verified owner. Call prepare_attachment_download with an attachment's attachment_id, attachment_kind, and owner context, then HTTP GET the returned Lucius URL before it expires.

Inputs: test_result_id (required), project_id, output_format. Returns: Stable object-root output for one exact enriched TestOps result.

get_test_suite_contentsGet Test Suite ContentsA
Read-onlyIdempotent

Get test cases directly assigned to one test suite.

This is a targeted hierarchy read. It does not enumerate unrelated suites or recursively traverse the project tree.

Inputs: suite_id (required), tree_id, project_id, output_format, +1 more. Returns: tree_id, suite_id, test_case_ids, assigned_count

list_custom_field_valuesList Custom Field ValuesA
Read-onlyIdempotent

List available values for a custom field.

Inputs: page, size, sort, query, +6 more. Returns: page, size, items, total, +1 more

list_defect_matchersList Defect MatchersA
Read-onlyIdempotent

List all matchers (automation rules) for a given defect.

Inputs: defect_id (required), output_format. Returns: Matcher list for a defect.

list_defectsList DefectsB
Read-onlyIdempotent

List all defects in the current project.

Inputs: output_format. Returns: page, size, items, total, +1 more

list_defect_test_casesList Defect Test CasesA
Read-onlyIdempotent

List test cases currently linked to a defect.

Inputs: defect_id (required), page, size, output_format. Returns: page, size, items, total, +3 more

list_integrationsList IntegrationsA
Read-onlyIdempotent

List available integrations (issue trackers) in Allure TestOps.

Use this tool to discover which integrations (Jira, GitHub, etc.) are configured and available for linking issues to test cases.

Inputs: project_id, output_format. Returns: items, total

list_launchesList LaunchesC
Read-onlyIdempotent

List launches in a project.

Inputs: page, size, sort, search, +3 more. Returns: Paginated compact launches.

list_launch_test_resultsList Launch Test ResultsB
Read-onlyIdempotent

List test results inside a launch, including manual execution metadata.

Inputs: launch_id (required), page, size, sort, +6 more. Returns: page, size, items, total, +4 more

list_shared_stepsList Shared StepsA
Read-onlyIdempotent

List shared steps in a project to find existing ones.

Inputs: page, size, search, archived, +2 more. Returns: page, size, items, total, +1 more

list_test_casesList Test CasesA
Read-onlyIdempotent

List all test cases in a project.

Returns a paginated list of test cases with their IDs, names, and tags. Use this to review existing test documentation in a project.

Inputs: page, size, tags, status, +3 more. Returns: page, size, items, total, +1 more

list_test_layersList Test LayersA
Read-onlyIdempotent

List test layers to discover available test layer taxonomy.

Test layers define the taxonomy for categorizing test cases (e.g., Unit, Integration, E2E). Use this to find layer IDs and names before creating or updating test cases.

Inputs: page, size, output_format. Returns: page, size, items, total, +1 more

list_test_layer_schemasList Test Layer SchemasA
Read-onlyIdempotent

List test layer schemas for a project.

Test layer schemas map custom field keys to test layers within a project. They determine which test layer is assigned when a specific custom field value is used.

Inputs: page, size, project_id, output_format. Returns: page, size, items, total, +1 more

list_test_plansList Test PlansA
Read-onlyIdempotent

List Test Plans for the current project.

Retrieves a paginated list of Test Plans, showing their IDs, names, and the number of test cases they contain.

Inputs: page, size, output_format. Returns: page, size, items, total, +1 more

list_test_suitesList Test SuitesB
Read-onlyIdempotent

List hierarchy suites for a project tree.

Inputs: tree_id, project_id, include_empty, output_format. Returns: Hierarchy tree and its recursive suite nodes.

manage_test_plan_contentManage Test Plan ContentA
DestructiveIdempotent

Modify the content (Test Cases) of an existing Test Plan.

Allows adding or removing specific Test Cases by ID, or updating the underlying AQL filter query.

Inputs: plan_id (required), output_format, add_test_case_ids, update_aql_filter, +1 more. Returns: url, plan_id, aql_filter, add_test_case_ids, +3 more

prepare_attachment_downloadPrepare Attachment DownloadA
Read-onlyIdempotent

Prepare one verified attachment download, then HTTP GET its returned Lucius URL.

Call this after get_test_result or get_test_case_details provides an attachment ID, kind, and owner context. The returned download URL is one-time and short-lived: HTTP GET it before expires_at without an Allure bearer token. Prepare again if the URL expires or was already retrieved.

Inputs: attachment_id (required), attachment_kind (required), project_id, test_case_id, +2 more. Returns: Opaque one-time attachment delivery metadata returned by the public preparation…

reopen_launchReopen LaunchA
DestructiveIdempotent

Reopen a launch and return updated launch details.

Inputs: launch_id (required), api_token, project_id, output_format. Returns: Stable compact launch fields emitted by create and lifecycle tools.

rerun_test_results_manuallyRerun Test Results ManuallyB

Schedule manual reruns for selected launch results.

Inputs: launch_id (required), result_ids (required), assignees, project_id, +2 more. Returns: assignees, launch_id, result_ids, force_manual, +1 more

run_test_planRun Test PlanA

Start a launch from an existing Test Plan.

Runs the selected test plan by its ID and returns the created launch as a compact mutation summary enriched with the source plan context. Starting a launch is reversible: use delete_launch to remove it when unwanted.

Inputs: plan_id (required), launch_name (required), tags, links, +2 more. Returns: Curated launch-started-from-plan summary with source plan context.

search_test_casesSearch Test CasesA
Read-onlyIdempotent

Search for test cases by name, tag, or AQL query.

Find test cases matching your search criteria. Supports simple name/tag search or advanced AQL (Allure Query Language) for complex filtering.

Simple Query Syntax (use 'query' parameter):

  • Plain text: Searches in test case names (case-insensitive)

  • tag:value: Filters by exact tag match

  • Combined: "login tag:smoke" finds test cases with "login" in name AND "smoke" tag

Important: see https://docs.qameta.io/allure-testops/advanced/aql/ for the full AQL syntax reference. AQL Syntax (use 'aql' parameter):

  • Operators: and, or, not

  • Precedence: and binds tighter than or; use parentheses to group

  • Strings are double-quoted; numbers are unquoted; booleans are true/false

  • Comparison operators: =, !=, ~= (contains), in, not in

  • Field examples: status, tag, name, createdBy, automated, layer

Inputs: aql, page, size, query, +2 more. Returns: Paginated output for ``search_test_cases``.

start_manual_test_sessionStart Manual Test SessionB

Start a manual execution session for a launch.

Inputs: launch_id (required), project_id, environment, output_format. Returns: job_id, launch_id, job_run_id, project_id, +2 more

submit_manual_test_resultsSubmit Manual Test ResultsB

Submit manual execution results for a manual session.

Inputs: results (required), test_session_id (required), project_id, output_format. Returns: result_ids, submitted_count, test_session_id

update_custom_field_valueUpdate Custom Field ValueB
DestructiveIdempotent

Update an existing custom field value. ⚠️ CAUTION: Destructive.

Inputs: name (required), cfv_id (required), confirm, project_id, +3 more. Returns: id, name, action, cfv_id, +3 more

update_defectUpdate DefectA
DestructiveIdempotent

Update an existing defect's name, description, or status.

At least one field must be provided. Fields set to null/None are left unchanged.

Inputs: defect_id (required), name, closed, description, +1 more. Returns: id, url, name, closed, +2 more

update_defect_matcherUpdate Defect MatcherA
DestructiveIdempotent

Update a defect matcher's name or regex patterns.

At least one field must be provided.

Inputs: matcher_id (required), name, trace_regex, message_regex, +1 more. Returns: id, name, trace_regex, message_regex

update_shared_stepUpdate Shared StepA
DestructiveIdempotent

Update an existing shared step. ⚠️ CAUTION: Destructive.

⚠️ IMPORTANT: Changes propagate to ALL test cases using this shared step.

Only provided fields will be updated. Omitted fields remain unchanged. Repeated calls with the same data are idempotent.

Inputs: step_id (required), name, confirm, project_id, +2 more. Returns: id, url, name, action, +4 more

update_test_caseUpdate Test CaseA
DestructiveIdempotent

Update an existing test case in Allure TestOps. ⚠️ CAUTION: Destructive.

Performs a partial update: only supplied fields are sent to the API. When provided, steps replace all existing steps, and attachments replace all existing global attachments. Omit a field to preserve its current value.

Inputs: test_case_id (required), name, tags, links, +19 more. Returns: id, url, name, action, +4 more

update_test_layerUpdate Test LayerB
DestructiveIdempotent

Update an existing test layer's name. ⚠️ CAUTION: Destructive.

Inputs: name (required), layer_id (required), confirm, project_id, +1 more. Returns: id, name, action, changed, +2 more

update_test_layer_schemaUpdate Test Layer SchemaB
DestructiveIdempotent

Update an existing test layer schema. ⚠️ CAUTION: Destructive.

Inputs: schema_id (required), key, confirm, project_id, +2 more. Returns: id, key, action, changed, +3 more

update_test_planUpdate Test PlanB
DestructiveIdempotent

Update the metadata of an existing Test Plan.

Currently, supports updating the name of the plan.

Inputs: plan_id (required), name, output_format. Returns: id, url, name

upload_test_resultsUpload Test ResultsA

Upload external test results to an existing launch.

Inputs: results (required), launch_id (required), project_id, output_format. Returns: failures, launch_id, result_ids, uploaded_count, +1 more

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 70 tools

    Disambiguation4/5

    Most tools follow a clear resource-plus-action pattern, so boundaries between test cases, launches, shared steps, layers, plans, and defects are generally distinct. A few pairs like get_test_case_details vs get_test_result or list_test_layers vs list_test_layer_schemas could require careful reading, but the descriptions provide enough context to avoid serious ambiguity.

    Naming Consistency5/5

    Tool names are overwhelmingly consistent snake_case verb_noun constructions, such as create_test_case, update_test_plan, list_defects, and delete_shared_step. Even less common actions like rerun_test_results_manually or manage_test_plan_content still follow the same predictable pattern.

    Tool Count1/5

    With 70 tools, this server is far beyond the range of a well-scoped MCP surface and crosses the extreme-count threshold. Even though Allure TestOps is a broad platform, exposing this many tools in one server creates significant selection overhead and would be better split into focused sub-servers.

    Completeness4/5

    The tool set is remarkably comprehensive, covering CRUD and lifecycle workflows for test cases, launches, shared steps, layers, schemas, suites, test plans, defects, and defect matchers, along with search, attachments, and manual execution. Minor gaps exist, such as no dedicated test-case attachment upload, no shared-step detail read, and integration management being list-only, but agents can work around these.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers