Qase MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QASE_API_TOKEN | Yes | Your Qase API token | |
| QASE_API_DOMAIN | No | Custom API domain for enterprise customers | api.qase.io |
| NODE_EXTRA_CA_CERTS | No | Path to CA certificate file for SSL errors |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| qase_apiA | Call any Qase REST endpoint directly, for the few things no dedicated tool covers: method, a /v1/… path on the configured host, optional body or query. Prefer a dedicated tool where one exists — they normalize enums and validate before spending a call. JSON only; uploads go through qase_attachment_upload. A DELETE asks for confirmation like the dedicated delete tools. Cost: one API call, 0.3-1.5s. |
| qase_attachment_deleteA | Delete an attachment by its hash (from qase_attachment_upload). Anything referencing it keeps the reference but the file is gone; this cannot be undone. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_attachment_uploadA | Upload files and get back the hashes other tools reference them by. Pass |
| qase_case_bulk_createA | Create up to 100 test cases in one request — the batch form of qase_case_upsert, and the right tool whenever more than one case is being written. Same fields and enum handling as qase_case_upsert; creates only, update through qase_case_upsert with |
| qase_case_deleteA | Delete a test case by project code and ID. Its execution history goes with it and this cannot be undone; consider marking it deprecated through qase_case_upsert instead. No bulk delete — one call each, each asking the user for confirmation. Cost: one API call, about 0.4s. |
| qase_case_upsertA | Create or update a single test case: with |
| qase_ci_reportA | Report a whole finished CI run in one call: creates the run, records every result, completes it. Use qase_result_record instead when the run already exists and results arrive in stages. Each result needs a numeric |
| qase_custom_field_deleteA | Delete a custom field by ID. Reach is workspace-wide: it disappears from every project, with the values entered for it, and this cannot be undone. To remove it from one project only, edit |
| qase_custom_field_upsertA | Create or update a custom field. On create, |
| qase_defect_deleteA | Delete a defect by project code and ID; its links to results go with it and this cannot be undone. Usually resolving it through qase_defect_upsert with |
| qase_defect_upsertA | Create or update a defect: with |
| qase_discover_toolsA | Search the tool catalogue by what you are trying to do — "delete", "milestone", "review", "custom field" — and get back the matching tools with their descriptions. Every tool is already listed and callable; use this when you do not know which one fits, rather than re-reading the whole list. Cost: no API call, matching happens in memory, about 3ms. |
| qase_environment_deleteA | Delete an environment by project code and ID. Runs that referenced it lose the attribution, so filtering history by that environment stops working; this cannot be undone. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_environment_upsertA | Create or update an environment — a named target such as staging or production that runs are attributed to. With |
| qase_external_issue_linkA | Link or unlink test cases and runs to issues in Jira Cloud or Jira Server — the only trackers supported. A case may link several issues; a run holds one, and a new link replaces it. Read links back with qase_get. Cost: one API call for the whole set of links, about 0.5s. |
| qase_getA | Fetch one known record by type and ID — case, suite, run, result, plan, defect, milestone, environment, shared_step, review, custom_field and more. Use it only when you already have the ID and want that one record; for several, anything filtered, or a loop over IDs, use qql_search — one search returns the whole page. Cost: one API call, 0.3-0.5s; ten in sequence measured 5.3s against 1.2s for one qql_search. |
| qase_milestone_deleteA | Delete a milestone by project code and ID. Runs and cases keep existing but lose the association, so release reporting built on it stops working; this cannot be undone. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_milestone_upsertA | Create or update a milestone — a dated marker, typically a release, that runs and cases are grouped under. With |
| qase_plan_deleteA | Delete a test plan by project code and ID. Only the plan goes — its cases and the runs made from it stay — but anything launching it by ID breaks; this cannot be undone. To change its cases use qase_plan_upsert instead. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_plan_upsertA | Create or update a test plan — a named, reusable set of case IDs such as a smoke or regression pack. With |
| qase_project_contextA | Seed everything about a project in one call: details, the full suite tree, milestones, environments, custom fields and users — make it first when starting on a project. Each collection returns its first 100; check |
| qase_project_createA | Create a project. The code must be unique in the workspace, and there is no update endpoint afterwards — title, code and access cannot be changed through the API, so choose them deliberately. Read an existing project with qase_project_context. Cost: one API call, about 1.5s. |
| qase_project_deleteA | Delete an entire project by code — every case, suite, run, result, defect and milestone in it, with no trash to recover from; this cannot be undone. The most destructive call in the API; confirm the code with qase_project_context first. Asks the user for confirmation and does not proceed without it. Cost: one API call, about 0.5s. |
| qase_regression_runA | Build and start a test run from a suite, a plan, or an explicit list of case IDs, in one step — it resolves the cases itself. It opens a run, it does not close one: for a finished pipeline use qase_ci_report; to assemble a run by hand use qase_run_upsert. Cost: two API calls behind one, about 1s. |
| qase_result_deleteA | Delete one result from a run, by run ID and result hash. The case and the rest of the run are untouched; pass rates shift and this cannot be undone. To discard a whole run use qase_run_delete. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_result_recordA | Record up to 200 results into an existing run — status, duration, comment, stacktrace, attachments — in one call, not one per test. Status is a label only: passed, failed, blocked, skipped, invalid. If the run does not exist yet and the job is finished, qase_ci_report creates, records and completes in one call. Cost: one API call for the whole list, about 0.5s. |
| qase_review_bulk_createA | Open several test case reviews in one request — the batch form of qase_review_create, for proposing more than one change. Same fields as qase_review_create; |
| qase_review_createA | Open a test case review — the pull-request flow for cases. Pass |
| qase_review_deleteA | Delete a review by ID. This removes the proposal entirely — it does not decline it, and declining is UI-only — and merged reviews cannot be deleted; the referenced case is untouched. Cannot be undone; asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_review_listA | List a project's reviews with their current state — the only way to learn what happened to a review you opened, since the API has no endpoints for approving or merging — those are UI-only. Filter by status to see what is still open. For one review by ID, qase_get is cheaper. Cost: one API call, about 0.5s. |
| qase_review_updateA | Update an open review: the proposed case fields, the reviewers, or both, by review ID. IMPORTANT: changing the proposal RESETS every approval already given; updating only |
| qase_run_completeA | Mark a test run complete so it reports as finished. It is a reporting state, not a lock — results recorded afterwards still land and change its counts. If all results are in hand at once, qase_ci_report does this as its final step. Cost: one API call, about 0.4s. |
| qase_run_deleteA | Delete a test run by project code and ID, together with every result in it; this cannot be undone. Rarely what you want: to stop accepting results use qase_run_complete, to fix one result use qase_result_delete. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_run_upsertA | Create or update a test run — the container results are recorded into, so open it before qase_result_record. Scope it to a milestone, environment, plan or case list. To build one from a suite or plan use qase_regression_run; for a finished CI job use qase_ci_report, which opens, records and closes in one call. Cost: one API call, about 0.5s. |
| qase_shared_step_deleteA | Delete a shared step by project code and hash. Every case referencing it loses those steps, so the reach is far wider than one record; check references first. Cannot be undone; to change content use qase_shared_step_upsert instead. Asks the user for confirmation first. Cost: one API call, about 0.4s. |
| qase_shared_step_upsertA | Create or update a shared step — a block of steps written once and reused across cases. With |
| qase_suite_deleteA | Delete a test suite by project code and ID. WARNING: the cases inside, and any child suites, are deleted with it along with their history, and |
| qase_suite_upsertA | Create or update a test suite — the folder cases live in. With |
| qase_tool_helpA | Read the full documentation of one tool before calling it for the first time in a session. Every description in the tool list is deliberately short — what the tool is for and what it costs — and the details that prevent a wrong first call live here: argument semantics, limits, what cannot be undone, and which tool to use instead. Pass the tool name exactly as listed. Cost: no API call, static text, about 1ms. Cheaper than one rejected call. |
| qase_triage_defectA | Create a defect from a test failure with the context written into it; |
| qql_helpA | Read the QQL reference before writing a query. Pass a |
| qql_searchA | Search any entity with Qase Query Language — filtering, cross-project, sorting, aggregation — and the right way to fetch many records at once instead of looping over qase_get. Call qql_help first for syntax, fields and enum values. Use qase_get when you already know the one ID you want. Cost: one API call, 0.5-0.9s per page; ten records here cost 1.2s against 5.3s as ten qase_get calls. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ci_integration | Report CI/CD test results to Qase: create a run, record results, and get a summary. |
| onboard_project | Get a comprehensive overview of a Qase project for a new team member: structure, recent activity, key metrics. |
| regression_workflow | Create and manage a full regression test cycle: set up a run from a plan or suites, track progress, report results. |
| release_readiness | Check release readiness for a milestone: test coverage, pass rate, open defects, blocking issues. |
| triage_failed_run | Analyze a failed test run: show all failed results grouped by error pattern, suggest defects to create for unique failures. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 42 tools
Each tool has a clearly delineated purpose, with extensive cross-references in descriptions guiding the agent to the right tool (e.g., upsert vs bulk create, ci_report vs result_record). The presence of discovery/help tools reinforces clarity. No overlapping functionality that would cause misselection.
Tool names predominantly follow a qase_<entity>_<action> snake_case pattern, with a few exceptions for special operations (e.g., qase_get, qase_api, qase_discover_tools). The convention is consistent and readable, though not perfectly uniform.
42 tools is on the high side, but justified by the breadth of the Qase platform (cases, runs, defects, reviews, etc.). Each tool addresses a distinct operation or entity, and the set avoids redundant tools by providing upsert rather than separate create/update. Still, the volume may feel heavy.
The tool set covers the full CRUD lifecycle for major entities (cases, runs, results, defects, reviews, milestones, etc.), plus bulk operations, search, and a generic API fallback. Known API limitations (e.g., review approval is UI-only) are documented, so no gaps in achievable operations.