MCP server for Tuskr: read/search cases, validate setup, filter by automated, read test runs
Project description
tuskr-mcp
MCP server for Tuskr test management — browse, search, and manage test cases from Cursor or any MCP host.
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.
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tuskr_mcp-0.2.1.tar.gz.
File metadata
- Download URL: tuskr_mcp-0.2.1.tar.gz
- Upload date:
- Size: 90.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6acc80aa05e4b74f02422467930274dfd6f565230f9ac7ea42604775fc884086
|
|
| MD5 |
3322b948eb570bd25c0e382ef1698a15
|
|
| BLAKE2b-256 |
4067754fa2e006169b97cb07f0b81f86b03d2d356be26a6c6bbc8c93d1f8cdff
|
File details
Details for the file tuskr_mcp-0.2.1-py3-none-any.whl.
File metadata
- Download URL: tuskr_mcp-0.2.1-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a26ae67dcc2eccb52ba1c635c0c9ca44c352d94fb9f8300bfc2c4d978c77a745
|
|
| MD5 |
15e6687056b32c85b6e9fe5d4c71f718
|
|
| BLAKE2b-256 |
f5893bab2d1e4793b2190d211dcf7524f93828801f17815289bbc657189bf388
|