Skip to main content
Glama
README.md
# qtest-mcp-server

> **Disclaimer:** This is an unofficial, community-built MCP server for qTest Manager. Not affiliated with or endorsed by Tricentis.

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that lets codebase or AI assistants (Claude, etc.) interact with qTest Manager — browse projects, manage test design modules, and build test execution cycles — all through natural language.


Available on **npm** : [qtest-mcp-server](https://www.npmjs.com/package/qtest-mcp-server)

Available on **glama** : [glama.ai](https://glama.ai/mcp/servers/Usman-Ghani123/qtest-mcp-server)

---

## Prerequisites

- Node.js 18+
- A qTest Manager account with API access
- Your qTest **base URL** and **API token**

---

## Installation & Setup

### 1. Clone and build

```bash
git clone https://github.com/your-username/qtest-mcp-server.git
cd qtest-mcp-server
npm install
npm run build
```

### 2. Configure your MCP client

Add the server to your `.mcp.json`. A ready-to-copy example is provided in `.mcp.example.json` at the root of this repo.

```json
{
  "mcpServers": {
    "qtest": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "QTEST_BASE_URL": "https://your-org.qtestnet.com",
        "QTEST_TOKEN": "your-personal-access-token"
      }
    }
  }
}
```

> Copy `.mcp.example.json` to `.mcp.json`, fill in your values, and place it in your project root (for project-scoped access).Your API token can be generated from qTest Manager under **Profile > API & SDK**.

---

## Available Tools

### Projects

| Tool | Description |
|------|-------------|
| `list-projects` | List all qTest projects, or fetch a single project by ID |

---

### Test Design

| Tool | Description |
|------|-------------|
| `list-modules` | List root-level modules, children of a module, or search by name |
| `create-module` | Create a new module (or sub-module) in Test Design |
| `delete-module` | Delete a module — cascades to all child modules and test cases |
| `list-test-cases` | Fetch test cases from a module with optional filters (Type, Status, Priority, etc.) |
| `list-test-case-fields` | List all field definitions for test cases in a project, including allowed values for each field |
| `update-test-case-properties` | Update properties of a test case (Status, Type, Priority, Test Suite) using human-readable labels |

---

### Test Execution

| Tool | Description |
|------|-------------|
| `list-test-cycle` | List root-level test cycles, children of a cycle, or filter by name/ID |
| `create-test-cycle` | Create a test cycle (or sub-cycle) in Test Execution |
| `delete-test-cycle` | Delete a test cycle — cascades to all child cycles, suites, and runs |
| `add-test-cases` | Add test cases as test runs into a test execution suite |

---

## Tool Usage Examples

### `list-projects`
List all projects or get a specific one.
```
list all projects
```
```
get project with ID 100001
```

---

### `list-modules`
List root-level modules, children, or search by name.
```
list modules for project 100001
```
```
list child modules of module 60000001 in project 100001
```
```
search for modules named "Login" in project 100001
```

---

### `create-module`
Create a module at root or nested under a parent.
```
create a module named "Sprint 12 Tests" in project 100001
```
```
create a sub-module named "Smoke Tests" under module 60000001 in project 100001
```

---

### `delete-module`
Delete a module and all its contents permanently.
```
delete module 60000099 in project 100001
```
> Warning: this cascades — all child modules and test cases are deleted.

---

### `list-test-cases`
Fetch test cases from a module, optionally filtered.
```
list all test cases in module 60000001 of project 100001
```
```
list test cases of type "Manual" in module 60000001 of project 100001
```
```
list test cases with status "Approved" in module 60000001 of project 100001
```

Available filter fields: `Type`, `Status`, `Priority`, `version`, etc.

---

### `list-test-case-fields`
List all field definitions for test cases in a project, including each field's allowed values. Call this first to discover what values you can pass to `update-test-case-properties`.
```
list test case fields for project 100001
```
```
what values are allowed for the Status field in project 100001?
```

---

### `update-test-case-properties`
Update one or more properties of a test case using human-readable labels. Use `list-test-case-fields` first to see valid values.
```
update test case 130000001 in project 100001 to set Status to "In Progress"
```
```
set the Type to "Automated" and Priority to "High" for test case 130000001 in project 100001
```
```
assign test case 130000001 in project 100001 to the "Regression" and "Smoke" test suites
```

> Note: Values are validated dynamically against the project's field definitions — pass the exact label as shown by `list-test-case-fields` (case-insensitive).

---

### `list-test-cycle`
List test cycles at root, under a parent, or by name/ID.
```
list all test cycles in project 100001
```
```
list child cycles of test cycle 19000001 in project 100001
```
```
find test cycle named "Regression" in project 100001
```

---

### `create-test-cycle`
Create a test cycle at root or nested under a parent.
```
create a test cycle named "Release 3.0" in project 100001
```
```
create a sub-cycle named "Week 1" under test cycle 19000001 in project 100001
```

---

### `delete-test-cycle`
Delete a test cycle and all its contents permanently.
```
delete test cycle 19000099 in project 100001
```
> Warning: this cascades — all child cycles, test suites, and test runs are deleted.

---

### `add-test-cases`
Add test cases as test runs into a test execution suite.

> Note: The target is a **test suite** (inside a test cycle), not the cycle itself. You must supply test case IDs and names explicitly — use `list-test-cases` first to retrieve them.

```
add the following test cases to suite 88000001 in project 100001:
- ID 130000001: "Verify login with valid credentials"
- ID 130000002: "Verify error on invalid password"
```

---

## Development

```bash
# Run in dev mode (no build needed)
npm run dev

# Build for production
npm run build

# Run tests
npm test
```

---

## License

MIT

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Every tool has a clearly distinct purpose within the qTest domain. The tools are separated by functional area (Test Design, Test Execution, Projects) and there is no overlap in their operations.

Naming Consistency5/5

All tool names follow a consistent verb-noun pattern using kebab-case (e.g., create-module, list-test-cases). The naming is predictable and unambiguous.

Tool Count5/5

With 9 tools, the set is well-scoped for a test management server. It covers essential create, delete, and list operations for modules and test cycles, plus a few specialized actions, without being excessive or insufficient.

Completeness4/5

The tool set covers core operations for modules, test cycles, projects, and test case execution. Minor gaps exist: no update tools for modules or test cycles, and no tool to individually create a test case (only add as test run).

Maintenance

ActivityInactive
ResponsivenessNo issues