Skip to main content
Glama

tuskr-mcp

MCP server for Tuskr test management — browse, search, and manage test cases from Cursor or any MCP host.

Python 3.10+ PyPI License: MIT

Requirements

Requirement

Notes

Python 3.10–3.13

3.9 and older cannot install from PyPI

Tuskr API access

Tenant ID + API token from Settings → API

Custom field automated

Checkbox on test cases (required for automation tools)

Test case type AutoGen

Only if you use create_test_case_minimal

pip install tuskr-mcp pulls in mcp and requests automatically.

Related MCP server: TestRail MCP Server

Install

python3 --version   # must be 3.10+
pip install tuskr-mcp

From source (GitHub):

git clone https://github.com/Zapkid/tuskr-mcp.git
cd tuskr-mcp
uv sync
# or: python -m venv .venv && source .venv/bin/activate && pip install -e .

Setup

Copy config files

Pick one config location (both files must live in the same folder):

Option

Folder

Typical use

A. Project folder

Your QA/automation repo root

Same repo as your tests

B. User config

~/.config/tuskr-mcp/

One Tuskr setup for all Cursor projects

Option A — e.g. ~/projects/my-qa-repo/:

cd ~/projects/my-qa-repo
# copy from the tuskr-mcp repo if you cloned it, or create the files manually
cp /path/to/tuskr-mcp/.env.example .env
cp /path/to/tuskr-mcp/tuskr_projects.example.json tuskr_projects.local.json

Option B — shared config:

mkdir -p ~/.config/tuskr-mcp
cp /path/to/tuskr-mcp/.env.example ~/.config/tuskr-mcp/.env
cp /path/to/tuskr-mcp/tuskr_projects.example.json ~/.config/tuskr-mcp/tuskr_projects.local.json

(projects.json also works in ~/.config/tuskr-mcp/.)

Configure .env

TUSKR_TENANT_ID=your-tenant-id
TUSKR_API_TOKEN=your-api-token

Configure projects

Edit tuskr_projects.local.json in that same folder and set project_id per app (from the Tuskr project URL).

Connect Cursor

Add to ~/.cursor/mcp.json.

After pip install — set cwd to the folder where you put .env and tuskr_projects.local.json (Option A or B above). Cursor starts the server in that directory so tuskr-mcp can find your files:

{
  "mcpServers": {
    "tuskr": {
      "command": "python3",
      "args": ["-m", "tuskr_mcp"],
      "cwd": "/Users/you/projects/my-qa-repo"
    }
  }
}

Examples:

  • Option A: "cwd": "/Users/you/projects/my-qa-repo"

  • Option B: "cwd": "/Users/you/.config/tuskr-mcp"

Use the same Python you installed with (which python3 if needed). To pin a venv: "command": "/path/to/venv/bin/python".

From source (editable install in the tuskr-mcp clone):

{
  "mcpServers": {
    "tuskr": {
      "command": "/path/to/tuskr-mcp/.venv/bin/python",
      "args": ["-m", "tuskr_mcp"],
      "cwd": "/path/to/tuskr-mcp"
    }
  }
}

Verify

Restart Cursor, enable the tuskr server, then run health_check and validate_tuskr_setup with your app_name.

Tuskr custom fields (test cases)

Label

Key

Type

When needed

Automated

automated

Checkbox

Automation filtering and updates

Preconditions

pre_conditions

Text

Optional on create

Priority

priority

Dropdown

Optional on create

Steps

steps

Steps

Required for create_test_case_minimal

Safe by design

Allowed

Not allowed

List, search, read cases, steps, and test runs

Update cases (except automated)

Create suites, sections, and new cases

Delete anything

Set automated on existing cases

API calls use GET and POST only. Credentials stay in local .env and tuskr_projects.local.json (never committed).

Tools

Tool

Purpose

health_check

Env, projects file, API connectivity

validate_tuskr_setup

Verify custom fields, AutoGen type, and API for one app

list_projects

Apps defined in tuskr_projects.local.json

list_test_suites / list_sections / get_sections_tree

Project structure

get_test_cases_by_section

Paginated cases; automated_filter: any, automated, manual, unset

get_test_case / get_case_steps

Single case and steps

search_test_cases

Search by key, title, or step text

list_test_runs / get_test_run

Read-only test runs

create_test_suite / create_section / create_test_case_minimal

Create resources

set_test_case_automated / set_test_cases_automated_bulk

Update automated only

Configuration

Variable

Required

Description

TUSKR_TENANT_ID

Yes

Tuskr tenant ID

TUSKR_API_TOKEN

Yes

API token

TUSKR_MCP_ENV_FILE

No

Override path to .env

TUSKR_PROJECTS_FILE

No

Override path to projects JSON

Lookup order: MCP cwd (see above), then the installed package directory (source install), then ~/.config/tuskr-mcp/. Override with TUSKR_MCP_ENV_FILE / TUSKR_PROJECTS_FILE (absolute paths recommended after pip install).

Troubleshooting

Problem

What to do

pip install finds no version

Use Python 3.10+; check with python3 --version

missing_env

Create .env with tenant ID and token; restart Cursor

Empty list_projects

Add apps to tuskr_projects.local.json

No module named tuskr_mcp

Run pip install tuskr-mcp, or set cwd and use a venv Python when running from source

set_test_case_automated has no effect

Add Tuskr custom field automated (Checkbox)

create_test_case_minimal fails

Add test case type AutoGen in Tuskr

automated_filter returns nothing

Confirm automated field exists; try filter any

Wrong case for C-2 vs C-20

Pass the full case key

License

MIT — Copyright (c) Rowan Kendal

Available Tools

17 tools
create_sectionC

Create a Tuskr section under a suite.

Inputs: app_name (required), section_name (required), suite_id, suite_name, +2 more. Returns: object

create_test_case_minimalB

Create a Tuskr test-case with steps and Tuskr custom fields (automated, steps, optional pre_conditions/priority).

Inputs: app_name (required), title (required), steps (required), section_id, +7 more. Returns: object

create_test_suiteC

Create a Tuskr test suite (main folder).

Inputs: app_name (required), suite_name (required), description, create_or_get. Returns: object

get_case_stepsC

Get normalized ordered steps for one case.

Inputs: app_name (required), case_key_or_id (required). Returns: object

get_sections_treeC

List Tuskr project sections in nested tree form.

Inputs: app_name (required). Returns: object

get_test_caseB

Get one detailed test-case by key (C-xxxx) or id.

Inputs: app_name (required), case_key_or_id (required), include_metadata. Returns: object

get_test_cases_by_sectionC

Get project test-cases by section; optional automated_filter: any, automated, manual, unset.

Inputs: app_name (required), section_id, section_name, suite_id, +5 more. Returns: object

get_test_runA

Get one test run by id; set include_results=true for paginated run results (read-only).

Inputs: app_name (required), run_id (required), include_results, results_page, +2 more. Returns: object

health_checkA

Validate Tuskr env/auth and API connectivity.

Inputs: no named parameters. Returns: object

list_projectsA

List Tuskr projects from your local projects config.

Inputs: no named parameters. Returns: object

list_sectionsC

List Tuskr project sections.

Inputs: app_name (required), suite_id, suite_name. Returns: object

list_test_runsC

List test runs for a project (read-only).

Inputs: app_name (required), page, page_size, name_contains, +1 more. Returns: object

list_test_suitesB

List Tuskr test suites (main folders) for a project.

Inputs: app_name (required). Returns: object

search_test_casesC

Search test-cases by key/title/steps text; optional automated_filter.

Inputs: app_name (required), query (required), section_id, section_name, +5 more. Returns: object

set_test_case_automatedB

Set the custom Tuskr field automated on an existing case (true or false).

Inputs: app_name (required), case_key_or_id (required), automated (required). Returns: object

set_test_cases_automated_bulkC

Set automated on multiple cases by key or id (automated field only).

Inputs: app_name (required), case_keys_or_ids (required), automated (required), skip_missing. Returns: object

validate_tuskr_setupC

Check env, project mapping, AutoGen test-case type, and custom fields for an app.

Inputs: app_name (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 17 tools

    Disambiguation5/5

    All tools target distinct resources or operations (sections, test cases, suites, runs, projects) with clear boundaries. Even similar tools like set_test_case_automated and set_test_cases_automated_bulk are differentiated by single vs. bulk operation. No two tools are easily confused.

    Naming Consistency4/5

    Naming mostly follows verb_noun snake_case (create_section, list_projects). However, 'health_check' and 'validate_tuskr_setup' deviate slightly (health_check is noun_verb, validate_tuskr_setup is verb_noun but longer). Overall pattern is consistent enough for an agent to predict tool names.

    Tool Count4/5

    With 17 tools, the server is slightly above the typical 3-15 range but still appropriate for a test management domain that covers projects, suites, sections, test cases, test runs, and setup validation. Each tool serves a clear purpose without bloat.

    Completeness3/5

    The tool set covers creation and reading for most resources but lacks update and delete operations everywhere except for a single automated field update on test cases. Missing general test case update, test suite update/delete, test run creation, and any deletion. This leaves notable gaps for full lifecycle management.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers