rtm-mcp
rtm-mcp
オープンソースのMCP(Model Context Protocol)サーバーで、Requirements and Test Management for Jira REST API v2 用です。Requirements、Test Cases、Test Plans、Test Executions、Test Case Executions、Defects、Tree Structure、Automation をMCPツールとして公開し、MCP互換のクライアント(Claude Desktop、IDE拡張、カスタムエージェント)がRTMを直接操作できるようにします。
NPXで実行できます。インストールもクローンも不要です:
npx rtm-mcpLinks
📦 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/
Features
32のMCPツールが、すべてのRTMリソースに対するCRUD、リンク管理、添付ファイル、CI結果インポートをカバーします。
RTM_API_TOKENによるBearerトークン認証。Jiraでトークンを生成: Apps → 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
Quick start
1. RTM APIトークンを生成
Jiraを開きます。
Apps → Requirements and Test Management に移動します。
三点リーダーメニュー(⋯)→ Rest API authentication をクリックします。
Generate Token をクリックし、ユーザーを選択、ラベルを追加、Generate をクリックします。
トークンをすぐにコピー — RTMは二度と表示しません。
2. サーバーを実行
RTM_API_TOKEN=your-token-here npx rtm-mcpサーバーはstdio上でMCPを話します。MCPクライアントから接続してください。
Claude Desktop setup
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 setup
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 rtmConfiguration
環境変数 | 必須 | デフォルト | 目的 |
| はい | — | Jira → Apps → RTM → API Tokens からのBearerトークン。 |
| いいえ |
| EU: |
| いいえ |
|
|
| いいえ |
| リクエストごとのHTTPタイムアウト(ミリ秒)。 |
| いいえ |
|
|
RTM_API_TOKEN が欠落または空の場合、起動は親しみやすいヒントとともに中止されます。
Available tools
すべてのツールは、整形されたJSONを含むMCP text コンテンツを返します。合計32ツールで、以下にRTMリソースごとに整理されています。実行時にMCPホストのツール一覧コマンドを使用して列挙できます。
Requirements(REQUIREMENTS)
rtm_get_requirement—requirementKeyで取得rtm_create_requirement— 作成rtm_update_requirement— 部分更新rtm_delete_requirement— 完全削除
RTMには要件の一覧エンドポイントがありません。プロジェクトごとに列挙するには
rtm_get_tree_structureを使用してください。
Test Cases(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のいずれか1つを渡します。ワイヤー呼び出し:PUT /api/v2/test-case/{key}/covered-requirements、ボディは{ coveredRequirements: { <op>: [...] } }。
rtm_delete_test_caseは意図的に公開されていません。削除はJira UIで行ってください。RTMには一覧エンドポイントがないため、rtm_get_tree_structureを使用してください。
Test Plans(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(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を使用してください。
Test Case Executions(TCE)
TCE = テスト実行内の1行で、1つのテストケースを実行した結果を記録します。
rtm_get_test_case_execution— 1つの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— 1つの添付ファイルのメタデータを取得(ダウンロードURLを返します)rtm_list_test_case_execution_step_attachments— 単一ステップの添付ファイルを一覧表示rtm_upload_test_case_execution_step_attachment(base64入力)— 特定のステップにファイルをアップロード
TCEのDELETEエンドポイント(
unlink defect、delete attachment)は意図的に公開されていません。これらはJira UIまたは基盤となるREST APIを直接呼び出して実行してください。エンドポイントは存在しますが、破壊的な操作は確認フローの背後にあるべきため、MCPのワンショットラッパーのみが削除されました。
Defects
rtm_get_defect—defectKeyで取得rtm_create_defect— 作成(テストケースにリンクするにはidentifyingTestCasesを渡します)rtm_update_defect— 部分更新rtm_delete_defect— 完全削除
RTMには一覧エンドポイントがありません。
rtm_get_tree_structureまたはAtlassian MCP経由のjira_searchを使用してください。
Tree
rtm_get_tree_structure— プロジェクトのフォルダツリーを取得します。数値のprojectId(Jira REST API経由でprojectKeyから解決)とtreeType∈REQUIREMENTS/TEST_CASES/TEST_PLANS/TEST_EXECUTIONSが必要です。
Automation
rtm_import_test_results— JUnit / NUnit / Cucumber JSONレポートのZIP/TAR.GZアーカイブをアップロードし、taskIdを返しますrtm_get_import_status— 以前のtaskIdをポーリングして、statusがIMPORTINGを離れるまで待ちます
すべてのリソースで使用される規約
規約 | 説明 |
リンク管理 | 1つの |
テストケース実行結果 | 合格/不合格ステータスは |
添付ファイル |
|
ネストされたリソースの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 の下に「Login with valid credentials」というテストケースを作成し、要件 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"] }"既存のセットを置き換えずに、プラン KAN-52 に3つのテストケースを追加してください。"
> 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 プロジェクトを使用してください。スモークテストは要件を作成し、取得し、近隣を一覧表示し、クリーンアップします。
公開
npm login
npm version patch # or minor / major
npm publish --access publicprepublishOnly は typecheck、test、build を自動的に実行します。
コントリビューション
これはオープンソースプロジェクトです。Issue と PR を歓迎します!
リポジトリをフォーク: https://github.com/ngocdd/rtm-mcp
フィーチャーブランチを作成:
git checkout -b feat/my-toolローカルでインストールしてテストを実行:
npm install npm run typecheck npm test新しいリソースメソッドまたはツールのテストを追加してください。
mainに対してプルリクエストを開く: 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 contributors. 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.-