Skip to main content
Glama

rtm-mcp

npm version npm downloads License: MIT GitHub repo CI status

open-source MCP-сервер (Model Context Protocol) для REST API v2 Requirements and Test Management for Jira. Предоставляет требования, тест-кейсы, тест-планы, тестовые выполнения, выполнения тест-кейсов, дефекты, древовидную структуру и автоматизацию как MCP-инструменты, чтобы любой MCP-совместимый клиент (Claude Desktop, IDE-расширения, кастомные агенты) мог управлять RTM напрямую.

Запускается через NPX — без установки и клонирования:

npx rtm-mcp

Ссылки


Возможности

  • 40+ инструментов для CRUD-операций и управления связями для каждого ресурса RTM.

  • Аутентификация по Bearer-токену через RTM_API_TOKEN. Токен генерируется в Jira: Apps → Requirements and Test Management → ⋯ → Rest API authentication → Generate Token.

  • Регионы US + EU — переключение через RTM_BASE_URL.

  • Повторные попытки + таймауты + джиттер встроены в HTTP-клиент (обрабатывает 429/5xx/сетевые ошибки).

  • Типизированные ошибки сопоставляются с понятными сообщениями MCP — без утечки стектрейсов.

  • Загрузка вложений принимает base64-данные (безопасно для изолированных MCP-клиентов).

  • Логирование только в stderr — stdout остаётся чистым для JSON-RPC.


Быстрый старт

1. Сгенерируйте API-токен RTM

  1. Откройте Jira.

  2. Перейдите в Apps → Requirements and Test Management.

  3. Нажмите меню с тремя точками (⋯) → Rest API authentication.

  4. Нажмите Generate Token, выберите пользователя, добавьте метку, нажмите Generate.

  5. Скопируйте токен сразу — RTM больше не покажет его.

2. Запустите сервер

RTM_API_TOKEN=your-token-here npx rtm-mcp

Сервер говорит по MCP через stdio — укажите его вашему MCP-клиенту.


Настройка Claude Desktop

Добавьте в claude_desktop_config.json:

US / Global (URL по умолчанию):

{
  "mcpServers": {
    "rtm": {
      "command": "npx",
      "args": ["-y", "rtm-mcp"],
      "env": {
        "RTM_API_TOKEN": "<your-token-here>",
        "RTM_BASE_URL": "https://rtm-us.deviniti.com/api"
      }
    }
  }
}

Регион EU:

{
  "mcpServers": {
    "rtm": {
      "command": "npx",
      "args": ["-y", "rtm-mcp"],
      "env": {
        "RTM_API_TOKEN": "<your-token-here>",
        "RTM_BASE_URL": "https://rtm-eu-api.hexygen.com/api"
      }
    }
  }
}

Настройка Claude Code CLI

Используйте команду claude mcp add, чтобы зарегистрировать сервер в Claude Code.

Область пользователя (рекомендуется — доступна во всех ваших проектах)

claude mcp add --scope user --transport stdio rtm \
  -e RTM_API_TOKEN=<your-token-here> \
  -e RTM_BASE_URL=https://rtm-us.devinti.com/api \
  -- npx -y rtm-mcp

Регион EU:

claude mcp add --scope user --transport stdio rtm \
  -e RTM_API_TOKEN=<your-token-here> \
  -e RTM_BASE_URL=https://rtm-eu-api.hexygen.com/api \
  -- npx -y rtm-mcp

--scope user записывает параметр в ~/.claude.json, поэтому каждый проект Claude Code на этой машине видит сервер rtm.

Область проекта (только для этого проекта)

claude mcp add --scope project --transport stdio rtm \
  -e RTM_API_TOKEN=<your-token-here> \
  -e RTM_BASE_URL=https://rtm-us.devinti.com/api \
  -- npx -y rtm-mcp

Запись сохраняется в .mcp.json в текущем каталоге (в git).

Проверьте регистрацию

claude mcp list           # see all configured servers
claude mcp get rtm        # inspect the rtm entry

Удалите сервер

claude mcp remove rtm

Конфигурация

Переменная окружения

Обязательна

По умолчанию

Назначение

RTM_API_TOKEN

да

Bearer-токен из Jira → Apps → RTM → API Tokens.

RTM_BASE_URL

нет

https://rtm-us.deviniti.com/api

EU: https://rtm-eu-api.hexygen.com/api. Уточните на панели Rest API authentication.

RTM_LOG_LEVEL

нет

info

Одно из: debug, info, warn, error. Логи выводятся только в stderr.

RTM_TIMEOUT_MS

нет

30000

HTTP-таймаут на запрос в миллисекундах.

RTM_MAX_RETRIES

нет

2

Повторы при ошибках 429/5xx/сетевых сбоях. Учитывает Retry-After.

Если RTM_API_TOKEN отсутствует или пуст, запуск прекращается с понятной подсказкой.


Доступные инструменты

Все инструменты возвращают MCP text с отформатированным JSON.

Требования (REQUIREMENTS)

  • rtm_list_requirements — список с projectKey, необязательные folder, page, pageSize

  • rtm_get_requirement — получить по requirementKey

  • rtm_create_requirement — создать

  • rtm_update_requirement — частично обновить

  • rtm_delete_requirement

  • rtm_set_requirement_covered_test_cases — заменить набор связей

  • rtm_add_requirement_covered_test_cases — дополнить

  • rtm_remove_requirement_covered_test_cases — удалить подмножество

Тест-кейсы (TEST_CASES)

  • rtm_list_test_cases, rtm_get_test_case, rtm_create_test_case, rtm_update_test_case, rtm_delete_test_case

  • rtm_set_test_case_covered_requirements, rtm_add_test_case_covered_requirements, rtm_remove_test_case_covered_requirements

Тест-планы (TEST_PLANS)

  • rtm_list_test_plans, rtm_get_test_plan, rtm_create_test_plan, rtm_update_test_plan, rtm_delete_test_plan

  • rtm_set_test_plan_included_test_cases, rtm_add_test_plan_included_test_cases, rtm_remove_test_plan_included_test_cases

Выполнения тестов (TEST_EXECUTIONS)

  • rtm_list_test_executions, rtm_get_test_execution, rtm_create_test_execution, rtm_update_test_execution, rtm_delete_test_execution

Выполнения тест-кейсов (TCE)

  • rtm_link_defect_to_test_case_execution

  • rtm_unlink_defect_from_test_case_execution

  • rtm_link_defect_to_test_case_execution_step

  • rtm_unlink_defect_from_test_case_execution_step

  • rtm_list_test_case_execution_attachments

  • rtm_upload_test_case_execution_attachment (входные данные base64)

Дефекты

  • rtm_list_defects, rtm_get_defect, rtm_create_defect, rtm_update_defect, rtm_delete_defect

  • rtm_set_defect_identifying_test_cases

Дерево

  • rtm_get_tree_structure — необязательные projectKey, resourceType

Автоматизация

  • rtm_import_test_results — загружает ZIP/TAR.GZ с JUnit/NUnit/Cucumber JSON; возвращает taskId

  • rtm_get_import_status — опрашивает, пока status не выйдет из IMPORTING


Примеры

«Перечисли 10 последних требований в проекте ACME.»

> rtm_list_requirements { projectKey: "ACME", pageSize: 10 }

«Создай тест-кейс под названием „Login with valid credentials“ в папке /Smoke и привяжи его к требованию ACME-42.»

> rtm_create_test_case { projectKey: "ACME", name: "Login with valid credentials", folder: "/Smoke", stepGroups: [...] }
> rtm_set_test_case_covered_requirements { testCaseKey: "<new>", requirementKeys: ["ACME-42"] }

«Свяжи дефект DEF-1 с выполнением теста TCE-42 на шаге 3.»

> rtm_link_defect_to_test_case_execution_step { testCaseExecutionKey: "TCE-42", stepId: "3", defectTestKey: "DEF-1" }

«Импортируй вчерашний JUnit XML.»

> rtm_import_test_results { projectKey: "ACME", filename: "junit.zip", contentBase64: "<base64>", reportType: "JUNIT", jobUrl: "https://ci/job/123" }
> rtm_get_import_status { taskId: "<returned>" }

Поиск и устранение неполадок

Симптом

Вероятная причина / решение

Сервер падает при запуске с RTM_API_TOKEN is required

Токен отсутствует или пуст. Задайте RTM_API_TOKEN=... перед запуском.

Инструмент возвращает Authentication failed. Verify RTM_API_TOKEN…

Токен недействителен, истёк или создан для другого пользователя. Перегенерируйте его в Jira.

Инструмент возвращает Resource not found

Ключ теста не соответствует ни одному issue — сначала проверьте его через rtm_list_*.

Validation failed (HTTP 400)

RTM отклонил отправленные данные. В сообщении инструмента содержится разобранное тело ответа.

Rate limited by RTM API (HTTP 429). Retry after Ns.

Достигнут лимит запросов. Уменьшите параллельность или подождите.

Network error reaching RTM API

Неверный RTM_BASE_URL (несоответствие US/EV), файрвол или временный сбой сети.

Инструмент зависает / превышает время ожидания

Увеличьте RTM_TIMEOUT_MS. По умолчанию 30 с; импорт из автоматизации может выполняться дольше.


Разработка

git clone <repo>
cd rtm-mcp
npm install
npm run build         # compile to dist/
npm test              # unit tests
npm run dev           # run from src/ via tsx
npm run typecheck     # tsc --noEmit

Структура проекта

src/
├── index.ts                  # entry point (shebang)
├── server.ts                 # McpServer wiring
├── config/                   # env validation + constants
├── client/
│   ├── http.ts               # fetch wrapper w/ retry + timeout
│   ├── errors.ts             # RTMError hierarchy
│   └── rtm-client.ts         # facade composing all resources
├── resources/                # one file per RTM resource
├── tools/                    # MCP tool registrations
├── schemas/                  # zod input schemas per tool group
└── utils/                    # logger, MCP response helpers
tests/
├── unit/                     # mocked fetch tests
└── integration/              # opt-in live tests (gated by RTM_LIVE=1)

Живые интеграционные тесты

RTM_API_TOKEN=xxx \
RTM_BASE_URL=https://rtm-us.deviniti.com/api \
RTM_LIVE=1 \
RTM_TEST_PROJECT=ACME \
npm run test:integration

Используйте отдельный Jira-проект. Smoke-тест создаёт требование, получает его, показывает список рядом и затем чистит.


Публикация

npm login
npm version patch   # or minor / major
npm publish --access public

prepublishOnly автоматически запускает typecheck, test, build.


Вклад в проект

Это open-source проект — приветствуются issues и PR!

  1. Либо форке репозитория: https://github.com/ngocdd/rtm-mcp

  2. Создайте новую ветку: git checkout -b feat/my-tool

  3. Установите зависимости и запустите тесты локально:

    npm install
    npm run typecheck
    npm test
  4. Добавьте тесты для любого нового метода ресурса или инструмента.

  5. Отправьте Pull Request в main: https://github.com/ngocdd/rtm-mcp/compare

Добавление нового endpoint RTM

  1. Добавьте типизированный метод в модуль src/resources/<resource>.ts.

  2. Добавьте zod-схему входных данных в src/schemas/<resource>.schema.ts.

  3. Зарегистрируйте инструмент MCP в src/tools/<resource>.ts.

  4. Добавьте unit-тест в tests/unit/.

  5. Запустите npm run typecheck && npm test.

Сообщение о багах

Используйте https://github.com/ngocdd/rtm-mcp/issues — указывайте тип ресурса RTM, путь endpoint, ожидаемый и фактический ответ, а также переданное тело запроса (без конфиденциальных данных).


Лицензия

MIT — см. LICENSE.

Copyright (c) 2026 контрибьюторы rtm-mcp. Проект выпущен под MIT License — вы можете свободно использовать, модифицировать и распространять его в любом проекте, включая open-source и проприетарный, при условии сохранения уведомления об авторстве.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.

  • MCP Server for JFrog, providing tools for development and artifact management.

  • Search, document and execute authenticated API calls across 700+ apps via one MCP server

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ngocdd/rtm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server