kiwi-tcms-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kiwi-tcms-mcp show me the latest test runs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kiwi-tcms-mcp
MCP-сервер (Model Context Protocol) для полного доступа к API Kiwi TCMS на Node.js + TypeScript.
Работает поверх официального JSON-RPC endpoint'а Kiwi TCMS (/json-rpc/) с аутентификацией логин/пароль (Auth.login, как в tcms-api). Подключается к любому MCP-клиенту (Claude Desktop, VS Code, Cline, Cursor, MCP Inspector) по stdio.
Возможности
68 инструментов: планы, кейсы, раны, исполнения, справочники (версии, теги, статусы, пользователи), вложения, properties + сквозной
kiwi_rpc.Именованные аргументы: приоритеты, категории, статусы, сборки, типы планов и пользователи принимаются по имени — сервер сам резолвит их в id.
Проект по умолчанию:
KIWI_PROJECT(Product в терминах Kiwi) автоматически подставляется в фильтры и создание объектов.Ресурс
kiwi://statusи промптrun-summary(сводка по тест-рану).Понятные ошибки: HTTP-коды, JSON-RPC-ошибки, таймауты (
KIWI_TIMEOUT), подсказки что проверить.Безопасность: пароль не логируется, весь диагностический вывод — только в stderr.
Related MCP server: @g-tiwari/mcp-testrail
Установка
npm install -g @kiwi-tcms-ai/kiwi-tcms-mcp
kiwi-tcms-mcp --helpИли без глобальной установки: npx -y @kiwi-tcms-ai/kiwi-tcms-mcp --help.
Клиент API — @kiwi-tcms-ai/kiwi-tcms-client (ставится автоматически).
Локальная сборка из исходников:
cd kiwi-tcms-mcp
npm install
npm run build # tsc -> dist/
node dist/index.js --helpТребования: Node.js ≥ 18 (используется глобальный fetch).
Конфигурация
Параметры задаются переменными окружения или CLI-флагами (флаги приоритетнее).
Env | Флаг | Обязат. | Описание |
|
| да | Базовый URL инстанса, например |
|
| да | Логин Kiwi TCMS ( |
|
| да | Пароль Kiwi TCMS |
|
| нет | Проект/Product по умолчанию (имя или id) |
|
| нет | Таймаут JSON-RPC запроса, мс (по умолчанию 30000) |
|
| нет | Лимит строк в list/filter-инструментах (по умолчанию 20) |
|
| нет | Не проверять TLS-сертификат (только self-signed в закрытом контуре) |
Пример прямого запуска:
npx -y @kiwi-tcms-ai/kiwi-tcms-mcp \
--url https://tcms.example.com \
--username api-bot \
--password keep-me-secret \
--project "Payments"Подключение к MCP-клиентам
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"kiwi-tcms": {
"command": "npx",
"args": ["-y", "@kiwi-tcms-ai/kiwi-tcms-mcp"],
"env": {
"KIWI_URL": "https://tcms.example.com",
"KIWI_USERNAME": "api-bot",
"KIWI_PASSWORD": "keep-me-secret",
"KIWI_PROJECT": "Payments"
}
}
}
}После npm install -g @kiwi-tcms-ai/kiwi-tcms-mcp можно писать "command": "kiwi-tcms-mcp" без args.
VS Code (.vscode/mcp.json):
{
"servers": {
"kiwi-tcms": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@kiwi-tcms-ai/kiwi-tcms-mcp"],
"env": {
"KIWI_URL": "https://tcms.example.com",
"KIWI_USERNAME": "api-bot",
"KIWI_PASSWORD": "keep-me-secret",
"KIWI_PROJECT": "Payments"
}
}
}
}Cline / Cursor (mcp_settings.json) — как Claude Desktop (mcpServers).
Отладка через MCP Inspector:
KIWI_URL=https://tcms.example.com KIWI_USERNAME=api-bot KIWI_PASSWORD=... KIWI_PROJECT=Payments \
npx @modelcontextprotocol/inspector npx -y @kiwi-tcms-ai/kiwi-tcms-mcpИнструменты
Инструмент | Метод Kiwi TCMS | Назначение |
|
| Проверка соединения и логина |
|
| Список проектов |
|
| Сборки продукта |
|
| Компоненты продукта |
|
| Приоритеты |
|
| Категории кейсов |
|
| Поиск тест-планов |
|
| Создание плана |
|
| Привязка кейса к плану |
|
| Гибкий поиск кейсов |
|
| Карточка кейса; |
|
| Создание кейса; тело кейса — в |
|
| Обновление полей; |
|
| Комментарий к кейсу |
|
| История изменений кейса |
|
| Поиск тест-ранов |
|
| Создание рана |
|
| Добавление кейсов в ран |
|
| Сводка по рану, упавшие кейсы |
|
| Поиск исполнений |
|
| Смена статуса/сборки/исполнителя |
|
| Создать продукт |
|
| Создать сборку (через Version) |
|
| Версии продукта |
|
| Типы планов |
|
| Статусы кейсов |
|
| Статусы исполнений |
|
| Пользователи / текущий логин |
|
| Теги |
|
| Классификации продуктов |
|
| Обновить план |
|
| Убрать кейс из плана |
|
| Дерево плана |
|
| Теги плана |
|
| Обновить/закрыть ран |
|
| Кейсы рана + execution_id |
|
| Теги кейса |
|
| Компоненты кейса |
|
| Ссылки/баги на исполнение |
|
| Вложения кейса/плана/рана/исполнения |
|
| Удалить вложение |
|
| Properties кейса/рана/исполнения |
| любой | Сквозной вызов оставшихся методов |
Плюс ресурс kiwi://status (конфиг + live-проверка) и промпт run-summary.
Структура
kiwi-tcms-mcp/
├── package.json # зависит от @kiwi-tcms-ai/kiwi-tcms-client из npm
├── tsconfig.json
└── src/
├── index.ts # входная точка: stdio-транспорт, сборка сервера
├── config.ts # env + CLI-флаги, валидация
└── tools.ts # MCP-схемы; логика — в kiwi-tcms-clientЛицензия
MIT
Available Tools
68 toolskiwi_case_add_attachmentAdd case attachmentC
TestCase.add_attachment: filename plus base64 content.
Inputs: case_id (required), filename (required), b64content (required).
kiwi_case_add_commentAdd comment to test caseC
TestCase.add_comment as the logged-in user.
Inputs: id (required), comment (required).
kiwi_case_add_componentAdd component to caseC
TestCase.add_component: component name.
Inputs: case_id (required), component (required).
kiwi_case_add_propertyAdd case propertyC
TestCase.add_property: arbitrary name/value pair.
Inputs: name (required), value (required), case_id (required).
kiwi_case_add_tagAdd tag to caseB
TestCase.add_tag. Attaches a tag to the test case.
Inputs: tag (required), case_id (required).
kiwi_case_historyTest case historyBRead-only
TestCase.history: full change history (KiwiHistoricalRecords).
Inputs: id (required), limit.
kiwi_case_list_attachmentsList case attachmentsARead-only
TestCase.list_attachments. Returns attachment metadata and download URLs.
Inputs: case_id (required).
kiwi_case_propertiesList case propertiesBRead-only
TestCase.properties. Returns name/value properties; omit case_id to list more broadly.
Inputs: case_id.
kiwi_case_remove_componentRemove component from caseA
TestCase.remove_component. Unlinks a component from the test case.
Inputs: case_id (required), component_id (required).
kiwi_case_remove_propertyRemove case propertyC
TestCase.remove_property. Filter by case_id and/or name.
Inputs: name, case_id, property_id.
kiwi_case_remove_tagRemove tag from caseB
TestCase.remove_tag. Detaches a tag from the test case.
Inputs: tag (required), case_id (required).
kiwi_create_buildCreate buildA
Build.create: name plus version (name or id). Defaults to the first product version.
Inputs: name (required), product, version, is_active.
kiwi_create_caseCreate test caseA
TestCase.create in the product (defaults to KIWI_PROJECT). Category and priority accept names and are resolved to ids. If plan is set, the case is attached via TestPlan.add_case. Tags are added one by one. text is stored verbatim in Kiwi's text field (Markdown; Kiwi 12+) — no section parsing.
Inputs: summary (required), plan, tags, text, +9 more.
kiwi_create_planCreate test planA
TestPlan.create in the given product (defaults to KIWI_PROJECT) with the given type.
Inputs: name (required), text, type, parent, +1 more.
kiwi_create_plan_typeCreate plan typeA
PlanType.create. Adds a new TestPlan type such as Functional or Acceptance.
Inputs: name (required), description.
kiwi_create_projectCreate project (Product)C
Product.create. classification is a name or id; defaults to the first classification.
Inputs: name (required), description, classification.
kiwi_create_runCreate test runB
TestRun.create for a plan and build. Build accepts a name (looked up on the product / KIWI_PROJECT); manager accepts a username.
Inputs: plan (required), build (required), summary (required), notes, +2 more.
kiwi_create_tagCreate tagA
Tag.create. Creates a tag that can later be attached to cases, plans, or runs.
Inputs: name (required).
kiwi_create_versionCreate product versionB
Version.create: value plus product (defaults to KIWI_PROJECT).
Inputs: value (required), product.
kiwi_execution_add_attachmentAdd execution attachmentC
TestExecution.add_attachment: logs, screenshots (base64).
Inputs: filename (required), b64content (required), execution_id (required).
kiwi_execution_add_linkAdd execution linkC
TestExecution.add_link: bug, Allure, CI. Set is_defect to mark a defect.
Inputs: url (required), name (required), execution_id (required), is_defect, +1 more.
kiwi_execution_add_propertyAdd execution propertyB
TestExecution.add_property. Adds a name/value property to the execution.
Inputs: name (required), value (required), execution_id (required).
kiwi_execution_get_linksList execution linksARead-only
TestExecution.get_links. Returns URLs attached to the execution (bugs, reports, CI).
Inputs: execution_id (required).
kiwi_execution_list_attachmentsList execution attachmentsBRead-only
TestExecution.list_attachments. Returns attachment metadata and download URLs.
Inputs: execution_id (required).
kiwi_execution_propertiesList execution propertiesBRead-only
TestExecution.properties. Returns name/value properties for the execution.
Inputs: execution_id.
kiwi_execution_remove_linkRemove execution linkB
TestExecution.remove_link by link id or execution_id.
Inputs: link_id, execution_id.
kiwi_get_caseGet test case by idARead-only
Full test-case card (TestCase.filter by id), text returned as-is (Markdown). Optionally include related executions.
Inputs: id (required), include_executions.
kiwi_list_buildsList buildsARead-only
Builds for a product. Defaults to KIWI_PROJECT when product is omitted.
Inputs: limit, query, product.
kiwi_list_case_statusesList test case statusesCRead-only
TestCaseStatus.filter: CONFIRMED, PROPOSED, DISABLED…
Inputs: limit, query.
kiwi_list_categoriesList categoriesARead-only
Test-case categories for a product. Defaults to KIWI_PROJECT when product is omitted.
Inputs: limit, product.
kiwi_list_classificationsList classificationsCRead-only
Classification.filter: catalog required by Product.create.
Inputs: limit, query.
kiwi_list_componentsList componentsCRead-only
Components for a product. Defaults to KIWI_PROJECT when product is omitted.
Inputs: limit, product.
kiwi_list_executionsSearch executionsBRead-only
TestExecution.filter by run, case, status, and assignee.
Inputs: run, case, limit, status, +1 more.
kiwi_list_execution_statusesList execution statusesCRead-only
TestExecutionStatus.filter: IDLE, PASSED, FAILED, BLOCKED…
Inputs: limit, query.
kiwi_list_plansSearch test plansARead-only
TestPlan.filter by name, product, type, and active flag. Uses KIWI_PROJECT when product is omitted.
Inputs: type, limit, query, active, +1 more.
kiwi_list_plan_typesList plan typesCRead-only
PlanType.filter: Functional, Acceptance, etc.
Inputs: limit, query.
kiwi_list_prioritiesList prioritiesARead-only
All test-case priorities (Priority.filter): id and value (P1..P5 / Critical..).
Inputs: no named parameters.
kiwi_list_projectsList projects (Products)ARead-only
List Kiwi TCMS products/projects. Optional substring filter on name.
Inputs: limit, query.
kiwi_list_runsSearch test runsARead-only
TestRun.filter by summary, plan, build, product, and whether still open.
Inputs: plan, build, limit, query, +2 more.
kiwi_list_tagsList tagsARead-only
Tag.filter. Search tags by name substring.
Inputs: limit, query.
kiwi_list_usersList usersCRead-only
User.filter by username.
Inputs: limit, query.
kiwi_list_versionsList product versionsBRead-only
Version.filter. Required for TestPlan.create (product_version) and Build.create.
Inputs: limit, query, product.
kiwi_meCurrent userARead-only
User.filter with no query — the logged-in user.
Inputs: no named parameters.
kiwi_pingCheck Kiwi TCMS connectionARead-only
Checks connectivity and credentials. Returns URL, configured Product, and product count. Use for diagnostics.
Inputs: no named parameters.
kiwi_plan_add_attachmentAdd plan attachmentB
TestPlan.add_attachment. Uploads a file (filename + base64 content) to the plan.
Inputs: plan_id (required), filename (required), b64content (required).
kiwi_plan_add_caseAdd case to planB
TestPlan.add_case: attach a test case to a test plan.
Inputs: case_id (required), plan_id (required).
kiwi_plan_add_tagAdd tag to planB
TestPlan.add_tag. Attaches a tag to the test plan.
Inputs: tag (required), plan_id (required).
kiwi_plan_list_attachmentsList plan attachmentsARead-only
TestPlan.list_attachments. Returns attachment metadata and download URLs.
Inputs: plan_id (required).
kiwi_plan_remove_caseRemove case from planA
TestPlan.remove_case. Unlinks a test case from the given plan.
Inputs: case_id (required), plan_id (required).
kiwi_plan_remove_tagRemove tag from planA
TestPlan.remove_tag. Detaches a tag from the test plan.
Inputs: tag (required), plan_id (required).
kiwi_plan_treeTest plan treeBRead-only
TestPlan.tree: ancestry in DFS order from the root.
Inputs: plan_id (required).
kiwi_plan_update_case_orderUpdate case order in planC
TestPlan.update_case_order: sortkey, e.g. 10, 20, 30.
Inputs: case_id (required), plan_id (required), sortkey (required).
kiwi_remove_attachmentRemove attachmentB
Attachment.remove_attachment by id.
Inputs: attachment_id (required).
kiwi_rpcCall any Kiwi TCMS API methodA
Direct call to any Kiwi TCMS JSON-RPC method (https://kiwitcms.org/api/): TestPlan.remove_case, TestExecution.add_link, Bug.filter, Tag.filter, etc. Use when no specialized tool exists.
Inputs: method (required), params.
kiwi_run_add_attachmentAdd run attachmentA
TestRun.add_attachment. Uploads a file (filename + base64 content) to the run.
Inputs: run_id (required), filename (required), b64content (required).
kiwi_run_add_caseAdd cases to runA
TestRun.add_case: add one or more cases to the run (creates TestExecutions).
Inputs: run_id (required), case_ids (required).
kiwi_run_add_propertyAdd run propertyB
TestRun.add_property. Adds a name/value property to the test run.
Inputs: name (required), value (required), run_id (required).
kiwi_run_add_tagAdd tag to runA
TestRun.add_tag. Attaches a tag to the test run.
Inputs: tag (required), run_id (required).
kiwi_run_get_casesCases in test runBRead-only
TestRun.get_cases: run cases with execution_id and status.
Inputs: run_id (required).
kiwi_run_list_attachmentsList run attachmentsBRead-only
TestRun.list_attachments. Returns attachment metadata and download URLs.
Inputs: run_id (required).
kiwi_run_propertiesList run propertiesARead-only
TestRun.properties. Returns name/value properties for the run.
Inputs: run_id.
kiwi_run_remove_tagRemove tag from runA
TestRun.remove_tag. Detaches a tag from the test run.
Inputs: tag (required), run_id (required).
kiwi_run_statusTest run status summaryBRead-only
Aggregated run stats: TestRun.filter plus TestExecution breakdown by status and failed executions.
Inputs: run_id (required).
kiwi_search_casesSearch test casesARead-only
TestCase.filter by text, plan, status, priority, category, tag, component, automation. Uses KIWI_PROJECT when plan/product are omitted. Returns total and a truncated list.
Inputs: ids, tag, plan, limit, +7 more.
kiwi_update_caseUpdate test caseA
TestCase.update. Priority and category accept names; status accepts a name (resolved to id) or status_id. text replaces Kiwi's text field verbatim (Markdown; Kiwi 12+) — no section parsing or merge with the current text.
Inputs: id (required), text, notes, script, +8 more.
kiwi_update_executionUpdate executionB
TestExecution.update: status (id or name resolved from the execution run), build, assignee, dates. Optionally adds a comment via TestExecution.add_comment.
Inputs: execution_id (required), status, comment, assignee, +4 more.
kiwi_update_planUpdate test planB
TestPlan.update: name, type, product, version, text, active flag.
Inputs: id (required), name, text, type, +4 more.
kiwi_update_runUpdate test runA
TestRun.update: summary, notes, build, manager, dates (set stop_date to close the run).
Inputs: id (required), build, notes, manager, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 68 tools
Each tool clearly targets a specific resource and action (e.g., creating runs, adding cases, listing executions, managing attachments). Even similar-sounding tools like kiwi_list_executions and kiwi_run_get_cases have distinct purposes (filtering vs. retrieving run cases).
Tool names consistently use the kiwi_ prefix and snake_case, but the verb/noun order varies (kiwi_create_run vs. kiwi_run_add_case). This minor inconsistency is readable and does not cause confusion.
68 tools is well beyond the recommended range and may overwhelm agents. The server covers a large domain, but many operations could be consolidated (e.g., generic attachment/property tools already exist).
The surface covers nearly every Kiwi TCMS workflow: full CRUD for cases/plans/runs, execution management, tags, attachments, properties, links, and a generic RPC fallback. No obvious dead ends remain.
Maintenance
Related MCP Connectors
Free test management over MCP: projects, test cases, plans, runs, environments and tasks.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
Single-connection MCP gateway discovering and executing 490+ verified MCP & A2A tools.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server to interact with the QMetry for Jira API, enabling management of test cases, test cycles, test plans, and more through well-defined tools.9375 npmApache 2.0
- AlicenseCqualityDmaintenanceMCP server for TestRail API, providing AI assistants with 107 tools to manage test cases, runs, results, plans, and more. Supports API key, password, and SSO cookie authentication.5417 npm2MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that exposes Kiwi TCMS as a set of AI-callable tools, enabling assistants to create and manage test plans, test cases, test runs, and executions directly from a conversation.1-
- AlicenseBqualityCmaintenanceComprehensive MCP server for Project COR, a project management platform, exposing 61 tools covering the complete COR REST API as MCP tools.61MIT