Lucius
Lucius is an Allure TestOps MCP server that lets AI agents manage QA/test-management workflows through focused tools.
Create, read, update, archive/delete test cases, including steps, tags, issues, attachments, descriptions, and custom fields.
Search/list test cases and discover project metadata such as custom fields and integrations.
Manage shared steps, test layers, hierarchy suites, and test case-to-suite assignments.
Manage custom field values and clean up unused custom fields.
Create/manage launches and test results, upload results, add attachments, rerun tests, and handle manual test sessions.
Create/update/delete/list test plans, manage their content, and run plans as launches.
Manage defects and defect matchers, link/unlink issues to test cases, and list defect-linked test cases.
Generate framework-specific test code from existing test cases.
Enables interaction with GitHub issue tracking via Allure TestOps integration, allowing linking of defects and test cases to GitHub issues.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lucius search for test cases related to payment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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. |
|
Automation Generation | Generate framework-specific code from existing test cases. |
|
Search & Discovery | Advanced search and project metadata discovery. |
|
Shared Steps | Create and manage reusable step sequences. |
|
Test Layers | Manage test taxonomy and auto-mapping schemas. |
|
Test Hierarchy | Organize suites and assign tests in tree paths. |
|
Custom Fields | Project-level management of custom field values. |
|
Launch Management | Manage launches, result uploads, manual execution, reruns, and attachments. |
|
Test Result Management | Inspect one exact TestOps result and prepare verified evidence downloads. |
|
Test Plans | Manage test plans and their content. |
|
Defect Mgmt | Track defects, linkage, and automation rules. |
|
π Quick Start
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | shSetup Credentials: Create a
.envfile with the variables below, or save CLI auth withlucius auth.Run Server:
uv run start
Basic .env for Quick Start
Variable | Description | Example |
| Allure TestOps base URL |
|
| Default Allure project ID (optional for |
|
| Allure API token |
|
| MCP transport mode for Lucius runtime |
|
π Claude Desktop Integration
The easiest way to use Lucius in Claude Desktop is via the .mcpb bundle:
Download the latest
lucius-mcp.mcpbfrom Releases.Open with Claude Desktop.
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 startProject-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 startText 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 clearCLI 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:
Explicit tool args such as
api_tokenorproject_idEnvironment variables
Saved CLI auth config from
uv run lucius authDefaults
Saved CLI auth uses native config locations:
Linux/Unix:
$XDG_CONFIG_HOME/lucius/auth.jsonor~/.config/lucius/auth.jsonmacOS:
~/Library/Application Support/lucius/auth.jsonunless XDG overrides are explicitly setWindows:
%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 toolsadd_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 SuiteADestructiveIdempotent
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 LaunchADestructiveIdempotent
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_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:
Explicitly listing Test Case IDs (
test_case_ids).Providing an AQL (Allure Query Language) filter (
aql_filter).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_test_casesDelete Archived Test CasesADestructiveIdempotent
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 ValueBDestructiveIdempotent
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 DefectADestructiveIdempotent
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 MatcherADestructiveIdempotent
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 LaunchCDestructiveIdempotent
Delete a launch by ID. β οΈ CAUTION: Destructive.
Inputs: launch_id (required), project_id, output_format. Returns: status, message, launch_id
delete_test_caseDelete Test CaseADestructiveIdempotent
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 LayerBDestructiveIdempotent
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 SchemaBDestructiveIdempotent
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 PlanADestructiveIdempotent
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 SuiteADestructiveIdempotent
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 FieldsADestructiveIdempotent
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 CodeARead-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 FieldsARead-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 DefectARead-onlyIdempotent
Retrieve detailed information about a specific defect.
Inputs: defect_id (required), output_format. Returns: id, url, name, closed, +2 more
get_launchGet LaunchBRead-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 ProjectARead-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 FieldsBRead-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 DetailsARead-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 ResultARead-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 ContentsARead-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
link_defect_to_test_caseLink Defect To Test CaseAIdempotent
Link a defect to a test case through a shared issue mapping.
This operation ensures defect governance and test coverage are connected: the issue is linked to the defect and to the specified test case.
Inputs: defect_id (required), test_case_id (required), issue_key, output_format, +2 more. Returns: defect_id, issue_key, defect_url, test_case_id, +3 more
list_custom_field_valuesList Custom Field ValuesARead-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 MatchersARead-onlyIdempotent
List all matchers (automation rules) for a given defect.
Inputs: defect_id (required), output_format. Returns: Matcher list for a defect.
list_defectsList DefectsBRead-onlyIdempotent
List all defects in the current project.
Inputs: output_format. Returns: page, size, items, total, +1 more
list_defect_test_casesList Defect Test CasesARead-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 IntegrationsARead-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 LaunchesCRead-onlyIdempotent
List launches in a project.
Inputs: page, size, sort, search, +3 more. Returns: Paginated compact launches.
list_launch_test_resultsList Launch Test ResultsBRead-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_test_casesList Test CasesARead-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 LayersARead-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 SchemasARead-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 PlansARead-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 SuitesBRead-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 ContentADestructiveIdempotent
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 DownloadARead-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 LaunchADestructiveIdempotent
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 CasesARead-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
unlink_issue_from_test_caseUnlink Issue From Test CaseADestructiveIdempotent
Unlink an issue from a test case.
This operation is idempotent: if the issue is already unlinked, it still
returns a successful confirmation. Supply the issue key (for example,
PROJ-123) or the internal issue-link ID returned by Allure TestOps.
Inputs: issue_id (required), test_case_id (required), output_format. Returns: Confirmation for unlinking an issue by numeric ID or issue key.
update_custom_field_valueUpdate Custom Field ValueBDestructiveIdempotent
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 DefectADestructiveIdempotent
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 MatcherADestructiveIdempotent
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_test_caseUpdate Test CaseADestructiveIdempotent
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 LayerBDestructiveIdempotent
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 SchemaBDestructiveIdempotent
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 PlanBDestructiveIdempotent
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
Scored across 70 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Official MCP server for Qase β manage test cases, runs, suites, defects via AI tools.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Allure TestOps β lets an LLM agent (Claude Code, Cursor, Windsurf, etc.) inspect test quality without leaving the chat.11136 PyPI3MIT
- AlicenseCqualityCmaintenanceProduction-ready MCP server for Allure TestOps, enabling test case, launch, test result, and test plan management via natural language.100730 npm2MIT
- AlicenseAqualityDmaintenanceAn MCP server that connects AI agents to TestOps, enabling test case management, launches, defects, and analytics through natural language.4825 npmMIT
- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to programmatically run tests, query results, and receive intelligent recommendations about test execution strategy.-