Skip to main content
Glama

rtm-mcp

npm version npm downloads License: MIT GitHub repo CI status

Ein Open-Source-MCP-Server (Model Context Protocol) für die Requirements and Test Management for Jira REST-API v2. Er stellt Requirements, Test Cases, Test Plans, Test Executions, Test Case Executions, Defects, Tree Structure und Automation als MCP-Tools bereit, damit jeder MCP-kompatible Client (Claude Desktop, IDE-Erweiterungen, eigene Agents) RTM direkt ansteuern kann.

Mit NPX starten — keine Installation, kein Klonen erforderlich:

npx rtm-mcp

Funktionen

  • Über 40 Tools für CRUD- und Linkverwaltung für jede RTM-Ressource.

  • Bearer-Token-Authentifizierung über RTM_API_TOKEN. Token in Jira erzeugen: Apps → Requirements and Test Management → ⋯ → Rest API authentication → Generate Token.

  • US- und EU-Regionen — umschalten über RTM_BASE_URL.

  • Retries + Timeouts + Jitter im HTTP-Client integriert (behandelt 429/5xx/Netzwerkfehler).

  • Typisierte Fehler werden auf verständliche MCP-Fehlermeldungen abgebildet — gibt keine Stack-Traces preis.

  • Attachment-Upload akzeptiert Base64-Payloads (sicher für Sandbox-MCP-Clients).

  • Nur-Stderr-Logging — stdout bleibt sauber für JSON-RPC.


Schnellstart

1. RTM-API-Token erzeugen

  1. Öffnen Sie Jira.

  2. Gehen Sie zu Apps → Requirements and Test Management.

  3. Klicken Sie auf das Drei-Punkte-Menü (⋯) → Rest API authentication.

  4. Klicken Sie auf Generate Token, wählen Sie einen Benutzer, fügen Sie ein Label hinzu und klicken Sie auf Generate.

  5. Kopieren Sie das Token sofort — RTM zeigt es danach nie wieder an.

2. Server ausführen

RTM_API_TOKEN=your-token-here npx rtm-mcp

Der Server spricht MCP über stdio — richten Sie Ihren MCP-Client darauf aus.


Claude Desktop einrichten

Ergänzen Sie folgende Einträge in claude_desktop_config.json:

US / Global (Standard-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-Region:

{
  "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 einrichten

Verwenden Sie den Befehl claude mcp add, um den Server bei Claude Code zu registrieren.

Benutzerbereich (empfohlen — in allen Ihren Projekten verfügbar)

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-Region:

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 schreibt den Eintrag in ~/.claude.json, damit jedes Claude-Code-Projekt auf diesem Rechner den rtm-Server sehen kann.

Projektbereich (nur dieses Projekt)

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

Dabei wird in .mcp.json im aktuellen Verzeichnis geschrieben (und an Git übertragen).

Registrierung überprüfen

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

Server entfernen

claude mcp remove rtm

Konfiguration

Env-Variable

Erforderlich

Standard

Zweck

RTM_API_TOKEN

ja

Bearer-Token aus Jira → Apps → RTM → API Tokens.

RTM_BASE_URL

nein

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

EU: https://rtm-eu-api.heygen.com/api. Über das Feld Rest API authentication bestätigen.

RTM_LOG_LEVEL

nein

info

Einer von debug, info, warn, error. Logs gehen nur an stderr.

RTM_TIMEOUT_MS

nein

30000

HTTP-Timeout pro Anfrage in Millisekunden.

RTM_MAX_RETRIES

nein

2

Wiederholungen bei 429/5xx/Netzwerkfehlern. Respektiert Retry-After.show

Ein fehlendes oder leeres RTM_API_TOKEN bricht den Start mit einem hilfreichen Hinweis ab.


Verfügbare Tools

Alle Tools geben MCP-text-Inhalte mit sauber formatiertem JSON zurück.

Requirements (REQUIREMENTS)

  • rtm_list_requirements — Liste mit projectKey, optional folder, page, pageSize

  • rtm_get_requirement — Abruf per requirementKey

  • rtm_create_requirement — erstellen

  • rtm_update_requirement — teilweise aktualisieren

  • rtm_delete_requirement — löschen

  • rtm_set_requirement_covered_test_cases — Verknüpfungssatz ersetzen

  • rtm_add_requirement_covered_test_cases — ergänzen

  • rtm_remove_requirement_covered_test_cases — Teilmenge entfernen

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 (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 (TEST_EXECUTIONS)

  • rtm_list_test_executions, rtm_get_test_execution, rtm_create_test_execution, rtm_update_test_execution, rtm_delete_test_execution

Test Case Executions (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-Eingabe)

Defects

  • rtm_list_defects, rtm_get_defect, rtm_create_defect, rtm_update_defect, rtm_delete_defect

  • rtm_set_defect_identifying_test_cases

Tree

  • rtm_get_tree_structure — optional projectKey, optional resourceType

Automation

  • rtm_import_test_results — ZIP/TAR.GZ mit JUnit/NUnit/Cucumber-JSON hochladen; gibt eine taskId zurück

  • rtm_get_import_status — abfragen, bis status den Zustand IMPORTING verlässt


Beispiele

„Liste die 10 neuesten Requirements im Projekt ACME auf.“

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

„Erstelle einen Test Case mit dem Namen 'Login with valid credentials' im Ordner /Smoke und verlinke ihn mit dem Requirement 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"] }

„Verknüpfe den Defekt DEF-1 mit der Test Case Execution TCE-42 in Schritt 3.“

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

„Importiere das JUnit-XML von letzter Nacht.“

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

Fehlerbehebung

Symptom

Wahrscheinliche Ursache / Lösung

Server beendet sich beim Start mit RTM_API_TOKEN is required

Token fehlt oder ist leer. Vor dem Start via RTM_API_TOKEN=... setzen.

Tool meldet Authentication failed. Verify RTM_API_TOKEN…

Token ungültig, abgelaufen oder für einen anderen Benutzer generiert. In Jira neu erzeugen.

Tool meldet Resource not found

Der Test-Schlüssel passt zu keinem Issue — zuerst mit rtm_list_* prüfen.

Validation failed (HTTP 400)

RTM hat die Nutzdaten abgelehnt. Die Toolmeldung enthält den geparsten Response-Body.

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

Das Rate-Limit ist erreicht. Parallelität verringern oder warten.

Network error reaching RTM API

Falsches RTM_BASE_URL (US/EU-Mismatch), Firewall oder kurzer Netzwerkfehler.

Tool hängt / bricht mit Timeout ab

RTM_TIMEOUT_MS erhöhen. Standard ist 30s; Automatisierungsimports können länger dauern.


Entwicklung

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

Projektstruktur

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)

Live-Integrationstests

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

Solche Tests nutzen ein Sandbox-Jira-Projekt. Der Smoke-Test legt ein Requirement an, ruft es ab, listet die Umgebung auf und räumt anschließend auf.


Veröffentlichung

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

prepublishOnly führt automatisch typecheck, test und build aus.


Mitwirken

Dies ist ein Open-Source-Projekt — Issues und Pull Requests sind willkommen!

  1. Forken Sie das Repository: https://github.com/ngocdd/rtm-mcp

  2. Erstellen Sie einen Feature-Branch: git checkout -b feat/my-tool

  3. Abhängigkeiten installieren und Tests lokal ausführen:

    npm install
    npm run typecheck
    npm test
  4. Fügen Sie für neue Ressourcenmethoden oder Tools Tests hinzu.

  5. Eröffnen Sie einen Pull-Request gegen main: https://github.com/ngocdd/rtm-mcp/compare

Neuen RTM-Endpunkt hinzufügen

  1. Fügen Sie dem passenden Modul src/resources/<resource>.ts eine typisierte Methode hinzu.

  2. Ergänzen Sie ein Zod-Eingabeschema in src/schemas/<resource>.schema.ts.

  3. Registrieren Sie in src/tools/<resource>.ts ein MCP-Tool.

  4. Fügen Sie unter tests/unit/ einen Unit-Test hinzu.

  5. Führen Sie npm run typecheck && npm test aus.

Fehler melden

Nutzen Sie https://github.com/ngocdd/rtm-mcp/issues — nennen Sie den RTM-Ressourcentyp, Endpunkt-Pfad, erwartete und tatsächliche Antwort sowie (redigierte) Request-Bodies.


Lizenz

MIT — siehe LICENSE.

Copyright (c) 2026 rtm-mcp contributors. Veröffentlicht unter der MIT-Lizenz; Sie dürfen dieses Projekt frei nutzen, modifizieren und vertreiben — in Open-Source- und in proprietärer Software, sofern der Urheberrechtshinweis erhalten bleibt.

-
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