rtm-mcp
rtm-mcp
Requirements and Test Management for Jira REST API v2용 오픈소스 MCP(Model Context Protocol) 서버입니다. 요구사항, 테스트 케이스, 테스트 계획, 테스트 실행, 테스트 케이스 실행, 결함, 트리 구조 및 자동화를 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/
기능
모든 RTM 리소스에 대한 CRUD, 링크 관리, 첨부 파일, CI 결과 가져오기를 포함한 32개의 MCP 도구.
RTM_API_TOKEN을 통한 Bearer 토큰 인증. Jira에서 토큰 생성: 앱 → Requirements and Test Management → ⋯ → Rest API authentication → Generate Token.US + EU 리전 —
RTM_BASE_URL로 전환.HTTP 클라이언트에 내장된 재시도 + 타임아웃 + 지터(429/5xx/네트워크 오류 처리).
친숙한 MCP 오류 메시지로 매핑되는 타입화된 오류 — 스택 트레이스가 절대 유출되지 않습니다.
첨부 파일 업로드는 base64 페이로드를 허용합니다(샌드박스 MCP 클라이언트에 안전).
stderr 전용 로깅 — stdout은 JSON-RPC용으로 깨끗하게 유지됩니다.
Related MCP server: Jira QMetry MCP Server
빠른 시작
1. RTM API 토큰 생성
Jira를 엽니다.
앱 → 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 / 글로벌(기본 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.deviniti.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.deviniti.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 → 앱 → RTM → API 토큰에서 가져온 Bearer 토큰. |
| 아니요 |
| EU: |
| 아니요 |
|
|
| 아니요 |
| 요청당 HTTP 타임아웃(밀리초). |
| 아니요 |
|
|
RTM_API_TOKEN이 없거나 비어 있으면 친숙한 안내와 함께 시작이 중단됩니다.
사용 가능한 도구
모든 도구는 보기 좋게 출력된 JSON과 함께 MCP text 콘텐츠를 반환합니다. 총 32개 도구이며, 아래에 RTM 리소스별로 정리되어 있습니다. 런타임에 MCP 호스트의 도구 목록 명령을 사용하여 열거하세요.
요구사항(REQUIREMENTS)
rtm_get_requirement—requirementKey로 조회rtm_create_requirement— 생성rtm_update_requirement— 부분 업데이트rtm_delete_requirement— 영구 삭제
RTM에는 요구사항 목록 엔드포인트가 없습니다 — 프로젝트별로 열거하려면
rtm_get_tree_structure를 사용하세요.
테스트 케이스(TEST_CASES)
rtm_get_test_case—testCaseKey로 조회rtm_create_test_case— 생성(stepGroups를 전달하여 단계 정의)rtm_update_test_case— 부분 업데이트rtm_update_test_case_covered_requirements— 커버된 요구사항 링크 관리.set/add/remove중 정확히 하나를 전달하세요. 실제 호출:PUT /api/v2/test-case/{key}/covered-requirements, 본문{ coveredRequirements: { <op>: [...] } }.
rtm_delete_test_case는 의도적으로 노출되지 않습니다 — 삭제는 Jira UI에서 수행하세요. RTM에는 목록 엔드포인트가 없습니다 —rtm_get_tree_structure를 사용하세요.
테스트 계획(TEST_PLANS)
공개 RTM REST API에 문서화된 8개 엔드포인트를 그대로 반영합니다:
rtm_get_test_plan—GET /api/test-plan/{testKey}rtm_create_test_plan—POST /api/test-planrtm_update_test_plan—PUT /api/test-plan/{testKey}rtm_delete_test_plan—DELETE /api/test-plan/{testKey}rtm_update_test_plan_tc_order—PUT /api/test-plan/{testKey}/tc-order, 본문{ order: [...] }rtm_create_test_plan_folder—POST /api/test-plan/{testKey}/tree/foldersrtm_add_test_case_to_test_plan—POST /api/test-plan/{testKey}/testcases, 본문{ testKey: "..." }rtm_remove_test_case_from_test_plan—DELETE /api/test-plan/{testKey}/testcases/{tcKey}
RTM에는 목록 엔드포인트가 없습니다 —
rtm_get_tree_structure를 사용하세요.
테스트 실행(TEST_EXECUTIONS)
rtm_get_test_execution—testExecutionKey로 조회rtm_create_test_execution— 테스트 계획을 실행하여 생성(testPlanTestKey전달)rtm_update_test_execution— 부분 업데이트(status,summary,description,priority,owner,customFields허용)rtm_delete_test_execution— 영구 삭제
RTM에는 목록 엔드포인트가 없습니다 —
rtm_get_tree_structure를 사용하세요.
테스트 케이스 실행(TCE)
TCE = 테스트 실행에서 하나의 테스트 케이스를 실행한 결과를 기록하는 한 행입니다.
rtm_get_test_case_execution— TCE 하나 조회(결과, 실행자, 코멘트, 결함, 단계)rtm_update_test_case_execution— 부분 업데이트.result: "Fail"(또는"Pass","Blocked"등)을 전달하여 통과/실패 상태를 변경하세요. 실제 호출:PUT /api/v2/test-case-execution/{key}, 본문{ result: { name: "Fail" } }.rtm_link_defect_to_test_case_execution— TCE 전체에 결함 링크rtm_link_defect_to_test_case_execution_step— 특정 단계에 결함 링크rtm_list_test_case_execution_attachments— TCE의 첨부 파일 목록rtm_upload_test_case_execution_attachment(base64 입력) — TCE에 파일 업로드rtm_get_test_case_execution_attachment— 첨부 파일 하나의 메타데이터 조회(다운로드 URL 반환)rtm_list_test_case_execution_step_attachments— 단일 단계의 첨부 파일 목록rtm_upload_test_case_execution_step_attachment(base64 입력) — 특정 단계에 파일 업로드
TCE의 DELETE 엔드포인트(결함 연결 해제, 첨부 파일 삭제)는 의도적으로 노출되지 않습니다 — 해당 작업은 Jira UI에서 수행하거나 기본 REST API를 직접 호출하세요. 엔드포인트 자체는 존재합니다. 파괴적 작업은 확인 흐름 뒤에 있어야 하므로 MCP 원샷 래퍼만 제거되었습니다.
결함
rtm_get_defect—defectKey로 조회rtm_create_defect— 생성(identifyingTestCases를 전달하여 테스트 케이스에 링크)rtm_update_defect— 부분 업데이트rtm_delete_defect— 영구 삭제
RTM에는 목록 엔드포인트가 없습니다 —
rtm_get_tree_structure또는 Atlassian MCP의jira_search를 사용하세요.
트리
rtm_get_tree_structure— 프로젝트의 폴더 트리 조회. 숫자projectId(Jira REST API를 통해projectKey에서 확인)와treeType∈REQUIREMENTS/TEST_CASES/TEST_PLANS/TEST_EXECUTIONS가 필요합니다.
자동화
rtm_import_test_results— JUnit / NUnit / Cucumber JSON 보고서의 ZIP/TAR.GZ 아카이브 업로드;taskId반환rtm_get_import_status— 이전taskId를status가IMPORTING을 벗어날 때까지 폴링
모든 리소스에 적용되는 규칙
규칙 | 설명 |
링크 관리 | 하나의 |
테스트 케이스 실행 결과 | 통과/실패 상태는 |
첨부 파일 |
|
중첩 리소스에 대한 DELETE MCP 도구 없음 | 결함 연결 해제와 첨부 파일 삭제는 MCP 클라이언트의 명시적 확인 흐름 뒤에 있어야 합니다 — 원샷 도구 호출이 아닙니다. Jira UI를 사용하거나 REST API를 직접 호출하세요. |
예시
"프로젝트 ACME의 요구사항을 열거해 줘."
> // No list endpoint — fetch the tree and walk it.
> rtm_get_tree_structure { projectId: 10000, treeType: "REQUIREMENTS" }"'유효한 자격 증명으로 로그인'이라는 테스트 케이스를 /Smoke 폴더 아래에 만들고 요구사항 ACME-42에 링크해 줘."
> rtm_create_test_case { projectKey: "ACME", summary: "Login with valid credentials", folder: "/Smoke", stepGroups: [...] }
> rtm_update_test_case_covered_requirements { testCaseKey: "<new>", set: ["ACME-42"] }"기존 세트를 교체하지 않고 테스트 케이스 3개를 계획 KAN-52에 추가해 줘."
> rtm_update_test_plan_included_test_cases {
testPlanKey: "KAN-52",
add: ["KAN-30", "KAN-31", "KAN-32"]
}"결함 KAN-100을 테스트 케이스 실행 KAN-53-KAN-46의 8517443 단계에 링크해 줘."
> rtm_link_defect_to_test_case_execution_step {
testCaseExecutionKey: "KAN-53-KAN-46",
stepId: "8517443",
defectTestKey: "KAN-100"
}"TCE KAN-53-KAN-46을 실패로 표시하고 코멘트를 추가해 줘."
> rtm_update_test_case_execution {
testCaseExecutionKey: "KAN-53-KAN-46",
result: "Fail",
comment: "Login button did not respond after 3 retries"
}"TCE KAN-53-KAN-46의 2단계에 스크린샷을 첨부해 줘."
> rtm_upload_test_case_execution_step_attachment {
testCaseExecutionKey: "KAN-53-KAN-46",
stepId: "8517444",
filename: "evidence.png",
contentBase64: "<base64 bytes>",
mimeType: "image/png"
}"어젯밤 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이 페이로드를 거부함. 도구 메시지에 파싱된 응답 본문이 포함됩니다. |
| 속도 제한에 도달했습니다. 동시성을 줄이거나 기다리세요. |
| 잘못된 |
도구가 멈추거나 시간 초과됨 |
|
개발
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를 여세요: https://github.com/ngocdd/rtm-mcp/compare
새 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 기여자. MIT License에 따라 배포됩니다. 저작권 고지가 유지되는 한 이 프로젝트를 오픈소스 및 독점 소프트웨어에서 자유롭게 사용, 수정, 배포할 수 있습니다.
This server cannot be deployed
Maintenance
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.
Agile project management over MCP: boards, epics, roadmap, retros, whiteboards, wiki, metrics
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that exposes the QMetry Test Management for Jira Cloud REST API as tools for MCP-compatible clients. It enables users to manage test cases, test cycles, test executions, test plans, folders, and automation rules through natural language interactions.3055 npmMIT
- AlicenseBqualityCmaintenanceMCP server to interact with the QMetry for Jira API, enabling management of test cases, test cycles, test plans, and more through well-defined tools.9339 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceJira Cloud MCP server providing Jira-first tools for common workflows and full REST API coverage through a generic request tool.454 npmMIT
- FlicenseNot gradedqualityBmaintenanceMCP server for Jira Data Center / Server (self-hosted Jira, REST API v2) that exposes core work-item project-management operations (platform + Agile) as MCP tools.-