rtm-mcp
rtm-mcp
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-mcpLinks
📦 npm-Paket: https://www.npmjs.com/package/rtm-mcp
🐙 GitHub-Repository: https://github.com/ngocdd/rtm-mcp
🐛 Issue-Tracker: https://github.com/ngocdd/rtm-mcp/issues
📚 RTM-API-Dokumentation: https://deviniti.com/support/addon/cloud/requirements-test-management/latest/rest-api/
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
Öffnen Sie Jira.
Gehen Sie zu Apps → Requirements and Test Management.
Klicken Sie auf das Drei-Punkte-Menü (⋯) → Rest API authentication.
Klicken Sie auf Generate Token, wählen Sie einen Benutzer, fügen Sie ein Label hinzu und klicken Sie auf Generate.
Kopieren Sie das Token sofort — RTM zeigt es danach nie wieder an.
2. Server ausführen
RTM_API_TOKEN=your-token-here npx rtm-mcpDer 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-mcpEU-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-mcpDabei 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 entryServer entfernen
claude mcp remove rtmKonfiguration
Env-Variable | Erforderlich | Standard | Zweck |
| ja | — | Bearer-Token aus Jira → Apps → RTM → API Tokens. |
| nein |
| EU: |
| nein |
| Einer von |
| nein |
| HTTP-Timeout pro Anfrage in Millisekunden. |
| nein |
| Wiederholungen bei |
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 mitprojectKey, optionalfolder,page,pageSizertm_get_requirement— Abruf perrequirementKeyrtm_create_requirement— erstellenrtm_update_requirement— teilweise aktualisierenrtm_delete_requirement— löschenrtm_set_requirement_covered_test_cases— Verknüpfungssatz ersetzenrtm_add_requirement_covered_test_cases— ergänzenrtm_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_casertm_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_planrtm_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_executionrtm_unlink_defect_from_test_case_executionrtm_link_defect_to_test_case_execution_steprtm_unlink_defect_from_test_case_execution_steprtm_list_test_case_execution_attachmentsrtm_upload_test_case_execution_attachment(Base64-Eingabe)
Defects
rtm_list_defects,rtm_get_defect,rtm_create_defect,rtm_update_defect,rtm_delete_defectrtm_set_defect_identifying_test_cases
Tree
rtm_get_tree_structure— optionalprojectKey, optionalresourceType
Automation
rtm_import_test_results— ZIP/TAR.GZ mit JUnit/NUnit/Cucumber-JSON hochladen; gibt einetaskIdzurückrtm_get_import_status— abfragen, bisstatusden ZustandIMPORTINGverlä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 | Token fehlt oder ist leer. Vor dem Start via |
Tool meldet | Token ungültig, abgelaufen oder für einen anderen Benutzer generiert. In Jira neu erzeugen. |
Tool meldet | Der Test-Schlüssel passt zu keinem Issue — zuerst mit |
| RTM hat die Nutzdaten abgelehnt. Die Toolmeldung enthält den geparsten Response-Body. |
| Das Rate-Limit ist erreicht. Parallelität verringern oder warten. |
| Falsches |
Tool hängt / bricht mit Timeout ab |
|
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 --noEmitProjektstruktur
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:integrationSolche 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 publicprepublishOnly führt automatisch typecheck, test und build aus.
Mitwirken
Dies ist ein Open-Source-Projekt — Issues und Pull Requests sind willkommen!
Forken Sie das Repository: https://github.com/ngocdd/rtm-mcp
Erstellen Sie einen Feature-Branch:
git checkout -b feat/my-toolAbhängigkeiten installieren und Tests lokal ausführen:
npm install npm run typecheck npm testFügen Sie für neue Ressourcenmethoden oder Tools Tests hinzu.
Eröffnen Sie einen Pull-Request gegen
main: https://github.com/ngocdd/rtm-mcp/compare
Neuen RTM-Endpunkt hinzufügen
Fügen Sie dem passenden Modul
src/resources/<resource>.tseine typisierte Methode hinzu.Ergänzen Sie ein Zod-Eingabeschema in
src/schemas/<resource>.schema.ts.Registrieren Sie in
src/tools/<resource>.tsein MCP-Tool.Fügen Sie unter
tests/unit/einen Unit-Test hinzu.Führen Sie
npm run typecheck && npm testaus.
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.
This server cannot be installed
Maintenance
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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