Skip to main content
Glama

rtm-mcp

npm version npm downloads License: MIT GitHub repo CI status

オープンソースの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-mcp

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トークンを生成

  1. Jiraを開きます。

  2. Apps → Requirements and Test Management に移動します。

  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 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-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.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

Configuration

環境変数

必須

デフォルト

目的

RTM_API_TOKEN

はい

—

Jira → Apps → RTM → API Tokens からのBearerトークン。

RTM_BASE_URL

いいえ

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

EU: https://rtm-eu-api.hexygen.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 が欠落または空の場合、起動は親しみやすいヒントとともに中止されます。


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-plan

  • rtm_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/folders

  • rtm_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つの PUT /api/v2/{resource}/{key}/{linkField} エンドポイントが、ボディ内で操作(set / add / remove)を受け取ります。個別の …/set、…/add、…/remove パスはありません。

テストケース実行結果

合格/不合格ステータスは { result: { name: "Fail" } } として送信されます(プレーンな文字列ではありません)。MCPツールは result: "Fail" を自動的に { result: { name: "Fail" } } に正規化します。

添付ファイル

file=@… を使用したマルチパートでアップロードします。一覧、IDによる取得、ステップレベルのバリアントはV2レイアウトに従って公開されています。

ネストされたリソースの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>" }

トラブルシューティング

症状

考えられる原因 / 修正方法

起動時に RTM_API_TOKEN is required でサーバーが終了する

トークンが欠落しているか空です。起動前に RTM_API_TOKEN=... として設定してください。

ツールが Authentication failed. Verify RTM_API_TOKEN… を返す

トークンが無効、期限切れ、または別のユーザー用に生成されています。Jira で再生成してください。

ツールが Resource not found を返す

テストキーがどの課題とも一致しません。rtm_get_* またはツリー構造ツールで確認してください。

Validation failed (HTTP 400)

RTM がペイロードを拒否しました。ツールメッセージには解析されたレスポンス本文が含まれます。

Rate limited by RTM API (HTTP 429). Retry after Ns.

レート制限に達しています。並行処理を減らすか、待機してください。

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 プロジェクトを使用してください。スモークテストは要件を作成し、取得し、近隣を一覧表示し、クリーンアップします。


公開

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

prepublishOnly は typecheck、test、build を自動的に実行します。


コントリビューション

これはオープンソースプロジェクトです。Issue と 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 に対してプルリクエストを開く: 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 の下で公開されています。著作権表示が保持される限り、オープンソースおよびプロプライエタリソフトウェアの両方でこのプロジェクトを自由に使用、変更、配布できます。

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    30
    55 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Jira Cloud MCP server providing Jira-first tools for common workflows and full REST API coverage through a generic request tool.
    454 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    -