Skip to main content
Glama

rtm-mcp

npm version npm downloads License: MIT GitHub repo CI status

Un servidor de código abierto de MCP (Model Context Protocol) para la REST API v2 de Requirements and Test Management for Jira. Expone Requirements, Test Cases, Test Plans, Test Executions, Test Case Executions, Defects, Tree Structure y Automation como herramientas MCP para que cualquier cliente compatible con MCP (Claude Desktop, extensiones de IDE, agentes personalizados) pueda manejar RTM directamente.

Ejecútalo con NPX — sin instalación ni clonado:

npx rtm-mcp

Enlaces


Características

  • Más de 40 herramientas que cubren CRUD y la gestión de enlaces para cada recurso de RTM.

  • Autenticación con Bearer token mediante RTM_API_TOKEN. Genera un token en Jira: Apps → Requirements and Test Management → ⋯ → Rest API authentication → Generate Token.

  • Regiones US + UE — cámbialas con RTM_BASE_URL.

  • Reintentos + timeouts + jitter integrados en el cliente HTTP (gestiona 429/5xx/errores de red).

  • Errores tipados convertidos a mensajes de error de MCP amigables — nunca filtran stack traces.

  • Subida de adjuntos que acepta payloads en base64 (segura para clientes MCP sandboxed).

  • Registro solo en stderr — stdout se mantiene limpio para JSON-RPC.


Inicio rápido

1. Genera un token de la API de RTM

  1. Abre Jira.

  2. Ve a Apps → Requirements and Test Management.

  3. Haz clic en el menú de tres puntos (⋯) → Rest API authentication.

  4. Haz clic en Generate Token, elige un usuario, añade una etiqueta y haz clic en Generate.

  5. Copia el token inmediatamente — RTM no vuelve a mostrarlo nunca más.

2. Ejecuta el servidor

RTM_API_TOKEN=your-token-here npx rtm-mcp

El servidor habla MCP sobre stdio — apunta tu cliente MCP hacia él.


Configuración de Claude Desktop

Añade a claude_desktop_config.json:

US / Global (URL por defecto):

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

Región UE:

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

Configuración de la CLI de Claude Code

Usa el comando claude mcp add para registrar el servidor con Claude Code.

Ámbito de usuario (recomendado — disponible en todos tus proyectos)

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

Región UE:

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 escribe la entrada en ~/.claude.json, de modo que todos los proyectos de Claude Code en esta máquina puedan ver el servidor rtm.

Ámbito de proyecto (solo este proyecto)

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

Escribe en .mcp.json en el directorio actual (se incluye en el sistema de control de versiones y se sube a Git).

Verifica el registro

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

Elimina el servidor

claude mcp remove rtm

Configuración

Env var

Obligatorio

Valor por defecto

Propósito

RTM_API_TOKEN

Token Bearer de Jira → Apps → RTM → API Tokens.

RTM_BASE_URL

no

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

UE: https://rtm-eu-api.hexygen.com/api. Confírmalo desde el panel Rest API authentication.

RTM_LOG_LEVEL

no

info

Uno de debug, info, warn, error. Los logs se escriben solo en stderr.

RTM_TIMEOUT_MS

no

30000

Tiempo de espera HTTP por petición, en milisegundos.

RTM_MAX_RETRIES

no

2

Reintentos en caso de errores 429/5xx/de red. Respeta Retry-After.

Si falta RTM_API_TOKEN o está vacío, el arranque se interrumpe con un aviso claro.


Herramientas disponibles

Todas las herramientas devuelven contenido text de MCP con JSON formateado de forma legible.

Requirements (REQUIREMENTS)

  • rtm_list_requirements — lista con projectKey, opcional folder, page, pageSize

  • rtm_get_requirement — obtiene según requirementKey

  • rtm_create_requirement — crea

  • rtm_update_requirement — actualización parcial

  • rtm_delete_requirement

  • rtm_set_requirement_covered_test_cases — sustituye el conjunto de enlaces

  • rtm_add_requirement_covered_test_cases — añade

  • rtm_remove_requirement_covered_test_cases — elimina un subconjunto

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 — enlaza un defecto a una ejecución de caso de prueba

  • rtm_unlink_defect_from_test_case_execution — desvincula un defecto de una ejecución de caso de prueba

  • rtm_link_defect_to_test_case_execution_step — enlaza un defecto a un paso de ejecución de caso de prueba

  • rtm_unlink_defect_from_test_case_execution_step — desvincula un defecto de una ejecución de caso de prueba paso

  • rtm_list_test_case_execution_attachments — lista los adjuntos de la ejecución de caso de prueba

  • rtm_upload_test_case_execution_attachment — sube un adjunto desde base64

Defects

  • rtm_list_defects, rtm_get_defect, rtm_create_defect, rtm_update_defect, rtm_delete_defect

  • rtm_set_defect_identifying_test_cases — establece los casos de prueba que identifican el defecto

Tree

  • rtm_get_tree_structure — recibe la estructura de árbol; parámetros opcionales projectKey y resourceType

Automation

  • rtm_import_test_results — importa un ZIP/TAR.GZ con JSON de JUnit/NUnit/Cucumber; devuelve un taskId

  • rtm_get_import_status — consulta el estado hasta que status deje de ser IMPORTING


Ejemplos

"Lista los 10 Requirements más recientes del proyecto ACME."

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

"Crea un Test Case llamado 'Login with valid credentials' en la carpeta /Smoke y enlázalo al 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"] }

"Enlaza el defecto DEF-1 a la ejecución de caso de prueba TCE-42 en el paso 3."

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

"Importa el XML JUnit de anoche."

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

Solución de problemas

Síntoma

Causa probable / solución

El servidor termina al iniciar con RTM_API_TOKEN is required

El token no se ha definido o está vacío. Configúralo como RTM_API_TOKEN=... antes de lanzarlo.

La herramienta devuelve Authentication failed. Verify RTM_API_TOKEN…

El token no es válido, ha caducado o se generó para otro usuario. Vuélvelo a generar en Jira.

La herramienta devuelve Resource not found

La clave no coincide con ninguna issue — compruébala primero con rtm_list_*.

Validation failed (HTTP 400)

RTM rechazó la solicitud. El mensaje de la herramienta incluye el cuerpo de la respuesta analizado.

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

Has alcanzado el límite de velocidad de la API. Reduce la concurrencia o espera.

Network error reaching RTM API

RTM_BASE_URL equivocada (discrepancia entre US y UE), cortafuegos o un problema de red temporal.

La herramienta se cuelga o expira el tiempo de espera

Aumenta RTM_TIMEOUT_MS. El valor por defecto es 30 s; las importaciones de automatización pueden tardar más.


Desarrollo

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

Estructura del proyecto

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)

Pruebas de integración en vivo

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

Utiliza un proyecto de enviJira de bloqueo. La prueba rápida crea un Requirement, lo recupera, lista los cercanos y limpia.


Publicación

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

prepublishOnly ejecuta typecheck, test y build automáticamente.


Contribución

Es un proyecto de código abierto — ¡son bienvenidas las incidencias y las PRs!

  1. Haz un fork del repositorio: https://github.com/ngocdd/rtm-mcp

  2. Crea una rama de funcionalidad: git checkout -b feat/my-tool

  3. Instala y ejecuta las pruebas en local:

    npm install
    npm run typecheck
    npm test
  4. Añade pruebas para cualquier nuevo método de recurso o herramienta.

  5. Abre una Pull Request dirigida a main: https://github.com/ngocdd/rtm-mcp/compare

Añadir un nuevo endpoint de RTM

  1. Añade un método tipo ificador al módulo que corresponda de src/resources/<resource>.ts.

  2. Añade un esquema de entrada zod a src/schemas/<resource>.schema.ts.

  3. Registra una herramienta MCP en src/tools/<resource>.ts.

  4. Añade una prueba unitaria en tests/unit/.

  5. Ejecuta npm run typecheck && npm test.

Informar de errores

Usa https://github.com/ngocdd/rtm-mcp/issues — incluye el tipo de recurso RTM, la ruta del endpoint, la respuesta esperada frente a la obtenida y el cuerpo de la solicitud (sin datos sensibles).


Licencia

MIT — consulta LICENSE.

Copyright (c) 2026 los colaboradores de rtm-mcp. Publicado bajo la Licencia MIT; eres libre de usar, modificar y distribuir este proyecto tanto en software de código abierto como comercial, siempre que se conserve el aviso de copyright.

-
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