rtm-mcp
rtm-mcp
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링크
📦 npm 패키지: https://www.npmjs.com/package/rtm-mcp
🐙 GitHub 저장소: https://github.com/ngocdd/rtm-mcp
🐛 이슈 트래커: https://github.com/ngocdd/rtm-mcp/issues
📚 RTM API 문서: https://deviniti.com/support/addon/cloud/requirements-test-management/latest/rest-api/
기능
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 토큰 생성
Jira를 엽니다.
Apps → Requirements and Test Management로 이동합니다.
점 3개 메뉴(⋯) → Rest API Authentication을 클릭합니다.
Generate Token 클릭 → 사용자 선택 → 라벨 추가 → Generate 클릭.
토큰을 즉시 복사하세요 — 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-mcpEU 지역:
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설정
환경 변수 | 필수 | 기본값 | 설명 |
| 네 | — | Jira → Apps → RTM → API Tokens에서 생성한 Bearer 토큰. |
| 아니오 |
| EU: |
| 아니오 |
|
|
| 아니오 |
| 요청당 HTTP 타임아웃(밀리초). |
| 아니오 |
|
|
RTM_API_TOKEN이 없거나 비어 있으면 안내 메시지와 함께 시작이 중단됩니다.
사용 가능한 도구
모든 도구는 예쁘게 출력된 JSON을 포함하는 MCP text 콘텐츠를 반환합니다.
Requirements (REQUIREMENTS)
rtm_list_mapping—projectKey포함 목록 조회, 선택적으로folder,page,pageSizertm_get_requirement—requirementKey로 조회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_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 입력)
Defects
rtm_list_defects,rtm_get_defect,rtm_create_defect,rtm_update_defect,rtm_delete_defectrtm_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_status—status가IMPORTING을 벗어날 때까지 폴링
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>" }문제 해결
증상 | 원인 / 해결 방법 |
시작 시 | 토큰이 없거나 비어 있습니다. 실행 전에 |
도구가 | 토큰이 유효하지 않거나, 만료되었거나, 다른 사용자용입니다. Jira에서 다시 생성하세요. |
도구가 | 테스트 키가 어떤 이슈와도 일치하지 않습니다. 먼저 |
| RTM이 요청 본문을 거부했습니다. 도구 메시지에는 파싱된 응답 본문이 포함됩니다. |
| RTM API의 rate limit에 도달했습니다. 동시 실행을 줄이거나 잠시 기다리세요. |
|
|
도구가 멈추거나 타임아웃됨 |
|
개발
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 publicprepublishOnly가 typecheck, test, build를 자동 실행합니다.
기여
오픈소스 프로젝트입니다 — 이슈 및 PR을 환영합니다!
저장소를 포크하세요: https://github.com/ngocdd/rtm-mcp
기능 브랜치를 생성하세요:
git checkout -b feat/my-tool로컬에서 설치 + 테스트 실행:
npm install npm run typecheck npm test새 리소스 메서드나 도구에 대한 테스트를 추가하세요.
main브랜치로 Pull Request를 열어 주세요:
새 RTM 엔드포인트 추가
해당
src/resources/<resource>.ts모듈에 타입화된 메서드를 추가하세요.src/schemas/<resource>.schema.ts에 zod 입력 스키마를 추가하세요.src/tools/<resource>.ts에 MCP 도구를 등록하세요.tests/unit/에 유닛 테스트를 추가하세요.npm run typecheck && npm test를 실행하세요.
버그 신고
https://github.com/ngocdd/rtm-mcp/issues를 사용하세요 — RTM 리소스 유형, 엔드포인트 경로, 기대/실제 응답 및(수정된) 요청 본문을 포함해 주세요.
라이선스
MIT — LICENSE을 참조하세요.
Copyright (c) 2026 rtm-mcp contributors. MIT License에 따라 배포됩니다; 저작권 표시를 유지하는 한, 오픈소스 및 상업적 소프트웨어에서 자유롭게 이 프로젝트를 사용, 수정, 재배포할 수 있습니다.
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