servers / qase-mcp-server
@qase/mcp-server
communityunknownnpmwrite capablehealthy
Official MCP server for Qase Test Management Platform
01Tools · 14
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| qase_case_upsert Create or update a test case. If `id` is provided, updates the existing case; if omitted, creates a new one. Enum fields (priority, severity, type, etc.) accept both labels ("high", "blocker") and numeric IDs — the server normalizes automatically. If the project has "Test case review" enabled, changes may need to go through a review instead of being written directly — run qase_discover_tools with "review" for those tools. | unknown | unknown | unknown |
| qase_api Direct Qase REST API call for endpoints not covered by other tools. Pass the HTTP method, path (starting with /v1/), and optional body/query. See https://developers.qase.io for API reference. Use this as an escape hatch when the dedicated tools do not cover your use case. Sends JSON only: it cannot upload files, which need multipart/form-data — use qase_attachment_upload for that. | read | false | unknown |
| qase_attachment_upload Upload a file attachment and get back its hash, which the `attachments` field of qase_case_upsert, qase_result_record, qase_ci_report, qase_triage_defect, and qase_shared_step_upsert accepts. This is the only way to obtain such a hash — the upload endpoint needs multipart/form-data, which qase_api cannot send. Pass the file as base64 (`file_base64`), which is the only option when the server runs remotely, such as the hosted connector; `file_path` works only when the server runs on the same machine as the file. | write | true | unknown |
| qase_ci_report Report CI/CD test results in one call: creates a run, records all results, and optionally completes the run. Replaces the 3-4 step manual workflow of create_run → bulk_create_results → complete_run. Designed for CI pipeline integration. | unknown | unknown | unknown |
| qase_defect_upsert Create or update a defect. If `id` is provided, updates (including status changes and resolve). If omitted, creates a new defect. Set `status: "resolved"` to resolve an existing defect. | read | false | unknown |
| qase_regression_run Set up a regression test run in one call. Accepts case selection by suite IDs, explicit case IDs, or plan ID. Creates the run and adds all matching cases. Replaces the multi-step workflow of find cases → create run → add cases. | write | true | unknown |
| qase_discover_tools Search for and activate additional Qase tools. By default, only core tools are visible. Use this to find tools for specific needs: deletions, milestone management, attachments, etc. Found tools are automatically activated and become available for use. | read | false | unknown |
| qase_result_record Record one or more test results into a run. Accepts an array of results — a single entry uses the single-result API, multiple entries use bulk. Each result must include a status; case_id is recommended. | read | false | unknown |
| qase_get Get any Qase entity by type and ID. Supports field projection via the `fields` parameter. For project-scoped entities (case, suite, run, result, plan, defect, milestone, environment, shared_step, shared_parameter, configuration), `code` is required. For global entities (user, author, attachment, custom_field), `code` can be omitted. | read | false | unknown |
| qase_project_context Get full project context in one call: project details, suites tree, milestones, environments, custom fields, and users. Cached for 5 minutes. Use this as the first call when starting work with a project — it seeds all the metadata the LLM needs without making 6 separate list calls. Each collection returns its first 100 entities by default; the `coverage` field reports `{ total, loaded, truncated }` per collection, so check it before assuming a list is complete. Pass `full: true` to page through everything. | read | false | unknown |
| qase_run_upsert Create or update a test run. If `id` is provided, updates; if omitted, creates. | write | true | unknown |
| qase_triage_defect Create a defect from a test failure. Requires title, actual_result, and severity. Note: the API offers no way to attach existing runs or results to a defect — the runs/results seen on a defect are populated by the test runner when a result is reported as a defect. Reference failing results in actual_result instead. | unknown | unknown | unknown |
| qql_help Get one section of the Qase Query Language (QQL) reference. `topic` is required — ask for the section you need rather than the whole reference. Start with "entities" when you are unsure which fields an entity has (they differ per entity), "aggregation" to count or summarise without paging, and "enumValues" for valid field values. | read | false | unknown |
| qql_search Search entities using Qase Query Language (QQL) with powerful filtering and cross-project queries | read | false | unknown |
02Install & source
npx -y @qase/mcp-server
npx- repohttps://github.com/qase-tms/qase-mcp-server
- packagehttps://www.npmjs.com/package/@qase/mcp-server
- homepagehttps://github.com/qase-tms/qase-mcp-server#readme
- licenseMIT
- adoption31 stars · 9 forks
05Provenance & freshness
sourcesnpm registry [p4]
last_checked2026-08-20 10:02Z
next_check2026-08-21 14:27Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex — 8 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/qase-mcp-server)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →