Skip to main content
Glama

rtm-mcp

npm version npm downloads License: MIT GitHub repo CI status

Requirements and Test Management for Jira REST API v2를 위한 오픈소스 MCP(Model Context Protocol) 서버입니다. Requirements, Test Cases, Test Plans, Test Executions, Test Case Executions, Defects, Tree Structure, Automation을 MCP 도구로 노출하므로 MCP 호환 클라이언트(Claude Desktop, IDE 확장 프로그램, 커스텀 에이전트)라면 누구든 RTM을 직접 제어할 수 있습니다.

NPX로 실행하면 됩니다 — 설치도, 클론도 필요 없습니다:

npx rtm-mcp

링크


기능

  • 40개 이상의 도구 — 모든 RTM 리소스에 대한 CRUD 및 링크 관리 지원.

  • Bearer 토큰 인증RTM_API_TOKEN으로 인증합니다. Jira에서 토큰 생성: Apps → Requirements and Test Management → ⋯ → Rest API 접속 인증 → Generate Token.

  • US + EU 리전RTM_BASE_URL로 전환할 수 있습니다.

  • 재시도 + 타임아웃 + 지터가 HTTP 클라이언트에 내장되어 있습니다(429/5xx/네트워크 오류 처리).

  • 타입화된 오류가 친숙한 MCP 오류 메시지로 매핑됩니다 — 스택 트레이스가 노출되지 않습니다.

  • 첨부 파일 업로드는 base64 페이로드를 지원합니다(샌드박스형 MCP 클라이언트에서 안전).

  • stderr 전용 로깅 — stdout은 JSON-RPC를 위해 깨끗하게 유지됩니다.


빠른 시작

1. RTM API 토큰 생성

  1. Jira를 엽니다.

  2. Apps → Requirements and Test Management로 이동합니다.

  3. 점 3개 메뉴(⋯) → Rest API Authentication을 클릭합니다.

  4. Generate Token 클릭 → 사용자 선택 → 라벨 추가 → Generate 클릭.

  5. 토큰을 즉시 복사하세요 — RTM은 다시 표시하지 않습니다.

2. 서버 실행

RTM_API_TOKEN=your-token-here npx rtm-mcp

서버는 stdio 위에서 MCP를 사용합니다. 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

Jira → Apps → RTM → API Tokens에서 생성한 Bearer 토큰.

RTM_BASE_URL

아니오

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

EU: https://rtm-eu-api.heygen.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이 없거나 비어 있으면 안내 메시지와 함께 시작이 중단됩니다.


사용 가능한 도구

모든 도구는 예쁘게 출력된 JSON을 포함하는 MCP text 콘텐츠를 반환합니다.

Requirements (REQUIREMENTS)

  • rtm_list_mappingprojectKey 포함 목록 조회, 선택적으로 folder, page, pageSize

  • rtm_get_requirementrequirementKey로 조회

  • 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 (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 입력)

Defects

  • rtm_list_defects, rtm_get_defect, rtm_create_defect, rtm_update_defect, rtm_delete_defect

  • rtm_set_defect_covered_test_cases

Tree

  • rtm_get_tree_structure — 선택적으로 projectKey, 선택적으로 resourceType

Automation

  • rtm_import_test_results — JUnit/NUnit/Cucumber JSON이 포함된 ZIP/TAR.GZ 업로드; taskId 반환

  • rtm_get_import_statusstatusIMPORTING을 벗어날 때까지 폴링


Examples

"ACME 프로젝트의 가장 최근 Requirements 10개를 나열해 주세요."

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

"'Login with valid credentials'라는 이름의 Test Case를 /Smoke 폴더 아래에 만들고 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"] }

"결함 DEF-1을 test-case execution TCE-42의 step 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 반환

테스트 키가 어떤 이슈와도 일치하지 않습니다. 먼저 rtm_list_*로 확인하세요.

Validation failed (HTTP 400)

RTM이 요청 본문을 거부했습니다. 도구 메시지에는 파싱된 응답 본문이 포함됩니다.

Rate limited by RTM API (HTTP 429).

RTM API의 rate limit에 도달했습니다. 동시 실행을 줄이거나 잠시 기다리세요.

Network error reaching RTM API 오류

RTM_BASE_URL 설정이 잘못되었거나(US/EU 불일치), 방화벽 또는 일시적인 네트워크 문제입니다.

도구가 멈추거나 타임아웃됨

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 프로젝트를 사용하세요. 스모크 테스트는 Requirement를 생성하고, 이를 가져오고, 주변 목록을 보고, 정리합니다.


배포

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

prepublishOnlytypecheck, test, build를 자동 실행합니다.


기여

오픈소스 프로젝트입니다 — 이슈 및 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. main 브랜치로 Pull Request를 열어 주세요:

    https://github.com/ngocdd/rtm-mcp/compare

새 RTM 엔드포인트 추가

  1. 해당 src/resources/<resource>.ts 모듈에 타입화된 메서드를 추가하세요.

  2. src/schemas/<resource>.schema.ts에 zod 입력 스키마를 추가하세요.

  3. src/tools/<resource>.ts에 MCP 도구를 등록하세요.

  4. tests/unit/에 유닛 테스트를 추가하세요.

  5. npm run typecheck && npm test를 실행하세요.

버그 신고

https://github.com/ngocdd/rtm-mcp/issues를 사용하세요 — RTM 리소스 유형, 엔드포인트 경로, 기대/실제 응답 및(수정된) 요청 본문을 포함해 주세요.


라이선스

MIT — LICENSE을 참조하세요.

Copyright (c) 2026 rtm-mcp contributors. MIT License에 따라 배포됩니다; 저작권 표시를 유지하는 한, 오픈소스 및 상업적 소프트웨어에서 자유롭게 이 프로젝트를 사용, 수정, 재배포할 수 있습니다.

-
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