Allure TestOps MCP β projects, launches, test cases, test results via REST API.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server for Allure TestOps. It lets an LLM agent (Claude Code, Cursor, OpenCode, β¦) explore and manage projects, launches, test cases, test results and reference data through the Allure REST API.
qameta.io or self-hosted / on-prem (API at /api/rs).allure_list_projects, then pass any project_id. No reconfiguration to switch or compare projects.Then ask your agent: "List all Allure projects" or "Show failed tests in the last launch for project 175". Get an API token in Allure TestOps under Profile β API tokens. See Configuration for other clients and Environment variables for all options.
20 tools β 13 read-only (always on) and 7 write tools (opt-in via ALLURE_ENABLE_WRITE=true). Every tool
carries MCP annotations and returns both a typed structuredContent payload and a markdown summary.
| Tool | Kind | Purpose |
|---|---|---|
allure_list_projects | read | All projects (id, name, abbreviation) |
allure_get_project_statistics | read | TC count, automation rate, last-launch summary |
allure_list_launches | read | Recent launches with pass/fail stats |
allure_get_test_results | read | Test results in a launch (filter by status) |
allure_search_failed_tests | read | FAILED/BROKEN tests in the last or a given launch |
allure_list_test_cases | read | Test cases (automated/manual + owner filters) |
allure_get_test_case | read | One test case's full detail + scenario steps |
allure_get_test_case_custom_fields | read | A test case's custom-field values |
allure_list_statuses | read | A project's statuses (id, name, color) |
allure_list_layers | read | A project's test layers (id, name) |
allure_list_custom_fields | read | A project's custom-field schema |
allure_list_categories | read | Defect categories (named/coloured buckets) |
allure_list_category_matchers | read | Regex automation rules (message/trace β category) |
allure_create_test_case | writeΒ β | Create a test case |
allure_update_test_case | writeΒ β | Partial update of a test case |
allure_delete_test_case | writeΒ β | Permanent delete (destructive β needs confirm=true) |
allure_create_category | writeΒ β | Create a defect category |
allure_delete_category | writeΒ β | Permanent delete (destructive β needs confirm=true) |
allure_create_category_matcher | writeΒ β | Create + attach a regex automation rule |
allure_delete_category_matcher | writeΒ β | Permanent delete (destructive β needs confirm=true) |
β Registered only when ALLURE_ENABLE_WRITE=true. Without the flag they are never imported, so the agent
never sees them β see Security considerations.
allure_create_test_case / allure_update_test_case accept status and layer as either a name
(status / layer) or a numeric id (status_id / layer_id). Names are auto-resolved to ids against
the project's status/layer lists (GET /api/rs/status, GET /api/rs/testlayer) β an unknown name returns an
actionable error listing the valid options. Update is partial (only the fields you pass change), and
allure_delete_test_case is irreversible: it carries destructiveHint: True (compliant clients prompt) and
additionally requires an explicit confirm=true argument.
readOnlyHint: True / openWorldHint: True so clients don't
prompt; allure_delete_test_case is destructiveHint: True.TypedDict return type, so FastMCP
auto-generates an outputSchema and every result carries both structuredContent and a markdown block.pagination block with page, total, has_more, next_page.ctx.report_progress + ctx.info events.allure_update_test_case issues PATCH and falls back to PUT on
HTTP 405, so it works across Allure deployments that expose only one verb.__version__ derives from installed package metadata, and a test
asserts pyproject.toml matches both server.json version fields, so the published version can't drift.Requires Python 3.10+. No manual install needed if you use uvx (recommended) β your MCP client runs it.
Claude Code β one command:
Any MCP client β add to ~/.claude.json, a project .mcp.json, Cursor's mcp.json, etc.:
See .env.example for a template. Verify the connection:
| Variable | Required | Default | Description |
|---|---|---|---|
ALLURE_URL | yes | β | Allure TestOps URL (e.g. https://allure.example.com) |
ALLURE_TOKEN | yes | β | API token (Allure β Profile β API tokens) |
ALLURE_SSL_VERIFY | no | true | true/false. Set false for self-signed corp certs |
ALLURE_ENABLE_WRITE | no | false | true registers the 7 write tools; default is a read-only server |
ALLURE_TEST_PROJECT_ID (plus optional ALLURE_TEST_STATUS / ALLURE_TEST_LAYER) are used only by the
opt-in live integration tests β see Development.
The server is a stdio process your client respawns each session, so the running version is decided by the
uvx invocation. uvx caches the resolved environment under ~/.cache/uv, so an older version sticks until
you refresh:
Then reconnect the server (/mcp β reconnect, or restart the session). To control the version from config,
edit args β pin for stability, or always-latest for currency:
Read-only:
With ALLURE_ENABLE_WRITE=true, drive test-case CRUD in natural language:
smoke, layer E2E"confirm=true, and a compliant client prompts you firstNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/allure-testops-mcp)<a href="https://allmcps.com/mcp/allure-testops-mcp"><img src="https://allmcps.com/api/badge/allure-testops-mcp?style=directory" alt="Allure Testops MCP on AllMCPs" /></a>