rtm-mcp
rtm-mcp
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-mcpEnlaces
📦 Paquete npm: https://www.npmjs.com/package/rtm-mcp
🐙 Repositorio de GitHub: https://github.com/ngocdd/rtm-mcp
🐛 Seguimiento de incidencias: https://github.com/ngocdd/rtm-mcp/issues
📚 Documentación de la API de RTM: https://deviniti.com/support/addon/cloud/requirements-test-management/latest/rest-api/
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
Abre Jira.
Ve a Apps → Requirements and Test Management.
Haz clic en el menú de tres puntos (⋯) → Rest API authentication.
Haz clic en Generate Token, elige un usuario, añade una etiqueta y haz clic en Generate.
Copia el token inmediatamente — RTM no vuelve a mostrarlo nunca más.
2. Ejecuta el servidor
RTM_API_TOKEN=your-token-here npx rtm-mcpEl 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-mcpRegió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-mcpEscribe 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 entryElimina el servidor
claude mcp remove rtmConfiguración
Env var | Obligatorio | Valor por defecto | Propósito |
| sí | — | Token Bearer de Jira → Apps → RTM → API Tokens. |
| no |
| UE: |
| no |
| Uno de |
| no |
| Tiempo de espera HTTP por petición, en milisegundos. |
| no |
| Reintentos en caso de errores |
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 conprojectKey, opcionalfolder,page,pageSizertm_get_requirement— obtiene segúnrequirementKeyrtm_create_requirement— creartm_update_requirement— actualización parcialrtm_delete_requirementrtm_set_requirement_covered_test_cases— sustituye el conjunto de enlacesrtm_add_requirement_covered_test_cases— añadertm_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_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_execution— enlaza un defecto a una ejecución de caso de pruebartm_unlink_defect_from_test_case_execution— desvincula un defecto de una ejecución de caso de pruebartm_link_defect_to_test_case_execution_step— enlaza un defecto a un paso de ejecución de caso de pruebartm_unlink_defect_from_test_case_execution_step— desvincula un defecto de una ejecución de caso de prueba pasortm_list_test_case_execution_attachments— lista los adjuntos de la ejecución de caso de pruebartm_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_defectrtm_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 opcionalesprojectKeyyresourceType
Automation
rtm_import_test_results— importa un ZIP/TAR.GZ con JSON de JUnit/NUnit/Cucumber; devuelve untaskIdrtm_get_import_status— consulta el estado hasta questatusdeje de serIMPORTING
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 | El token no se ha definido o está vacío. Configúralo como |
La herramienta devuelve | El token no es válido, ha caducado o se generó para otro usuario. Vuélvelo a generar en Jira. |
La herramienta devuelve | La clave no coincide con ninguna issue — compruébala primero con |
| RTM rechazó la solicitud. El mensaje de la herramienta incluye el cuerpo de la respuesta analizado. |
| Has alcanzado el límite de velocidad de la API. Reduce la concurrencia o espera. |
|
|
La herramienta se cuelga o expira el tiempo de espera | Aumenta |
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 --noEmitEstructura 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:integrationUtiliza 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 publicprepublishOnly ejecuta typecheck, test y build automáticamente.
Contribución
Es un proyecto de código abierto — ¡son bienvenidas las incidencias y las PRs!
Haz un fork del repositorio: https://github.com/ngocdd/rtm-mcp
Crea una rama de funcionalidad:
git checkout -b feat/my-toolInstala y ejecuta las pruebas en local:
npm install npm run typecheck npm testAñade pruebas para cualquier nuevo método de recurso o herramienta.
Abre una Pull Request dirigida a
main: https://github.com/ngocdd/rtm-mcp/compare
Añadir un nuevo endpoint de RTM
Añade un método tipo ificador al módulo que corresponda de
src/resources/<resource>.ts.Añade un esquema de entrada zod a
src/schemas/<resource>.schema.ts.Registra una herramienta MCP en
src/tools/<resource>.ts.Añade una prueba unitaria en
tests/unit/.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.
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