kiwi-tcms-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KIWI_URL | Yes | Base URL only, no path. e.g. https://kiwi.example.com | |
| KIWI_PASSWORD | Yes | Kiwi password | |
| KIWI_USERNAME | Yes | Kiwi login (email or username) | |
| MCP_HTTP_HOST | No | Set 0.0.0.0 in a container. | 127.0.0.1 |
| MCP_HTTP_PORT | No | Port for the HTTP server. | 8787 |
| MCP_AUTH_TOKEN | No | Required for the HTTP server (min 32 chars). Callers pass it in the URL path or as a bearer token. | |
| MCP_RATE_PER_MIN | No | Per-IP request cap. | 120 |
| KIWI_INSECURE_TLS | No | Set to '1' only if the host's TLS cert is not trusted by Node (self-signed / internal CA). Disables cert verification for the whole process. | |
| MCP_ALLOW_NO_AUTH | No | Set to '1' to disable the token check entirely. Not recommended. |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kiwi_get_productsB | List Kiwi products (the TestRail 'project' equivalent). Filter dict optional. |
| kiwi_get_versionsA | List product versions. Typical filter: {"product": }. |
| kiwi_get_buildsA | List builds. Typical filter: {"version__product": } or {"version": }. |
| kiwi_get_categoriesA | List test-case categories for a product (closest thing to TestRail sections). Typical filter: {"product": }. |
| kiwi_get_componentsA | List components. Typical filter: {"product": }. |
| kiwi_get_tagsA | List tags (the TestRail 'labels' equivalent). Filter e.g. {"name__startswith": "reg"}. |
| kiwi_get_prioritiesB | List test-case priorities and their ids. |
| kiwi_get_usersA | List Kiwi users. Filter e.g. {"username": "sqa1"} or {"email__icontains": "acme.com"}. Requires the 'auth.view_user' permission on your Kiwi account; without it Kiwi returns error -32098 ("Authentication failed"). |
| kiwi_get_execution_statusesA | List TestExecution statuses (PASSED / FAILED / BLOCKED / ...) with their ids. Needed before updating an execution result. |
| kiwi_get_case_statusesA | List TestCase statuses (CONFIRMED / PROPOSED / ...) with their ids. |
| kiwi_get_plan_typesA | List test-plan types (Unit / Integration / Function / ...) with their ids. |
| kiwi_get_classificationsA | List product classifications with their ids. |
| kiwi_get_test_casesA | Search test cases. |
| kiwi_get_test_caseA | Fetch one test case by id, optionally with its comments, custom properties and attachment list. |
| kiwi_create_test_caseA | Create a test case. |
| kiwi_update_test_caseA | Update one test case. |
| kiwi_update_test_casesA | Apply the same |
| kiwi_delete_test_caseA | Permanently delete test cases matching an ORM filter dict. DESTRUCTIVE. Pass e.g. {"id": 123} or {"id__in": [1,2,3]}. |
| kiwi_get_test_case_historyC | Return the change history for a test case. |
| kiwi_add_test_case_commentC | Add a comment to a test case. |
| kiwi_add_test_case_tagA | Attach a tag (by name) to a test case. The tag is created if it does not exist. |
| kiwi_add_test_case_componentB | Attach a component (by name) to a test case. |
| kiwi_add_test_case_attachmentB | Attach a file to a test case. Provide base64-encoded content. |
| kiwi_export_test_cases_for_ragA | Bulk-export full text of test cases matching |
| kiwi_get_test_plansA | Search test plans. |
| kiwi_create_test_planA | Create a test plan. |
| kiwi_update_test_planB | Update a test plan with a partial field dict. |
| kiwi_add_case_to_planB | Link an existing test case to a test plan. |
| kiwi_remove_case_from_planB | Unlink a test case from a test plan. |
| kiwi_add_plan_tagB | Attach a tag (by name) to a test plan. |
| kiwi_get_test_runsA | Search test runs. |
| kiwi_create_test_runA | Create a test run. |
| kiwi_update_test_runA | Update a test run with a partial field dict (e.g. {"stop_date": "2026-09-08 17:00:00"}). |
| kiwi_delete_test_runA | Permanently delete test runs matching an ORM filter dict. DESTRUCTIVE. Pass e.g. {"id": 42}. |
| kiwi_add_case_to_runA | Add a test case to a run. This creates the TestExecution rows for that case. |
| kiwi_remove_case_from_runB | Remove a test case (and its executions) from a run. |
| kiwi_get_run_casesA | List the test cases currently in a run. |
| kiwi_add_run_tagB | Attach a tag (by name) to a test run. |
| kiwi_add_run_attachmentA | Attach a file to a test run. Provide base64-encoded content. |
| kiwi_get_test_executionsA | Search test executions (results). |
| kiwi_update_test_executionA | Update one execution. |
| kiwi_update_executions_bulkA | Record results for many cases in one run (mirrors TestRail add_results_for_cases). For each item, finds the execution for {run_id, case_id}, sets its status, and optionally adds a comment. |
| kiwi_add_execution_commentB | Add a comment to a test execution. |
| kiwi_get_execution_commentsB | Get the comments on a test execution. |
| kiwi_add_execution_linkB | Attach an external URL (bug link, evidence) to a test execution. |
| kiwi_get_execution_linksA | List external links attached to a test execution. |
| kiwi_get_execution_historyA | Return the change history for a test execution. |
| kiwi_rpcA | Call ANY Kiwi JSON-RPC method directly. |
| kiwi_delete_entityA | Generic delete: calls .remove with the given ORM filter dict. DESTRUCTIVE. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 49 tools
Most tools map to a distinct resource and action, and the descriptions make the case/plan/run/execution domains fairly clear. The main ambiguities are kiwi_delete_entity and kiwi_rpc, which intentionally overlap with specific tools, plus kiwi_get_run_cases vs kiwi_get_test_executions for retrieving run-level case data.
The vast majority follow a consistent kiwi_ + verb_noun pattern: get_, create_, update_, delete_, add_, remove_. Minor deviations include the generic kiwi_delete_entity, the raw kiwi_rpc, and the slightly inconsistent kiwi_update_executions_bulk versus kiwi_update_test_execution.
49 tools is well into the over-scoped range and creates a heavy tool-selection burden for agents. Even though Kiwi TCMS is a broad test-management domain, the count is inflated by many reference-list tools and singular/bulk/comment/link variants that could be consolidated.
Core workflows are well covered: test cases, plans, runs, executions, comments, attachments, links, history, and bulk updates. Gaps exist around removing comments/tags/links and creating reference entities like builds, versions, or products through dedicated wrappers, but kiwi_rpc and kiwi_delete_entity provide fallbacks for those edge cases.