jira について
atlassian MCP サーバーと mcporter を通じて Jira をプログラムから操作するスキルです。課題検索、詳細取得、ステータス遷移、コメント、メタデータ、関連リソースの確認手順とスクリプトを提供します。
主な機能
- 01JQLで課題を検索
- 02課題の概要と詳細を取得
- 03ワークフローの遷移を確認して実行
- 04コメントを追加し関連リソースを検索
- 05ユーザー情報とクラウド情報を取得
- 06mcporterでツールのスキーマを確認
活用シーン
- 01プロジェクトやステータスで課題を絞り込む
- 02チケットと関連するプルリクエストを確認
- 03課題をワークフロー上で次の状態へ進める
- 04Jiraチケットにコメントを追加
MCP 対応
mcporterを介してatlassian MCP サーバーを利用し、Jiraの課題、プロジェクト、メタデータにアクセスします。スキーマを調べて利用可能なツールとパラメーターを確認する方法も説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zenobi-us/ dotfiles --skill jiraインストール後、Claude Code で/jiraを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
scripts/get_cloud_id.shget_current_user.shget_ticket_summary.sh詳細
JIRA スキル
atlassian MCP サーバーを使用した Jira の自動化と統合を習得します。このスキルにより、Jira の課題、プロジェクト、メタデータへプログラムからアクセスできます。
[!CRITICAL] ⚠️ 重要 — パラメーターの渡し方:
関数呼び出し構文を使用してください(フラグ構文は使用しないでください)。パラメーターはフラグではなく、関数呼び出しの中に指定します。
mcporter call 'atlassian.functionName(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", fields: ["key", "summary"])'主なルール:
- 関数呼び出し内のパラメーターはキャメルケースにします
- 文字列値は二重引用符で囲みます:
"value"- 配列値には角括弧を使用します:
["item1", "item2"]- オブジェクト値にはオブジェクト表記を使用します:
{key: "value"}- 環境変数は引用符の外側で展開します:
"'$VAR'"--flag構文は使用しません。JSON 文字列のエスケープも不要です
クイックセットアップ
チケットの概要を取得する(ワンショット)
チケット情報を取得する最速の方法:
mise x node@20 -- ./scripts/get_ticket_summary.sh TICKET-123
人が読みやすい概要が返されます。内容は次のとおりです。
- キー、概要、タイプ、ステータス、優先度、担当者
- 作成日時と更新日時
- 説明全文
- 関連リソース(PR など)
- Jira への直接リンク
解析用の JSON 出力:
mise x node@20 -- ./scripts/get_ticket_summary.sh TICKET-123 --json
ticketオブジェクトとremoteLinksオブジェクトを含む、構造化された JSON が返されます。
現在のユーザー情報を取得する
mise x node@20 -- ./scripts/get_current_user.sh
返される項目:accountId、displayName、email
または、特定のフィールドを取得します:
mise x node@20 -- ./scripts/get_current_user.sh --account-id
mise x node@20 -- ./scripts/get_current_user.sh --email
mise x node@20 -- ./scripts/get_current_user.sh --display-name
Cloud ID を取得する(すべての操作で必要)
export JIRA_CLOUD_ID=$(mise x node@20 -- ./scripts/get_cloud_id.sh)
export JIRA_URL=$(mise x node@20 -- ./scripts/get_cloud_id.sh --url)
これにより、以降のすべての mcporter 呼び出しで使用する環境変数が設定されます。
主な操作
課題を検索する
mise x node@20 -- mcporter call 'atlassian.searchJiraIssuesUsingJql(cloudId: "'$JIRA_CLOUD_ID'", jql: "assignee = currentUser() AND status = Open")'
特定のフィールドを指定する場合:
mise x node@20 -- mcporter call 'atlassian.searchJiraIssuesUsingJql(cloudId: "'$JIRA_CLOUD_ID'", jql: "assignee = currentUser()", fields: ["key", "summary", "status", "assignee"])'
ページネーションを使用する場合:
mise x node@20 -- mcporter call 'atlassian.searchJiraIssuesUsingJql(cloudId: "'$JIRA_CLOUD_ID'", jql: "assignee = currentUser()", maxResults: 50)'
key、fields.summary、fields.status.nameを含むissues[]配列が返されます。
よく使用する JQL:
assignee = currentUser()- 自分に割り当てられた課題status = Open- ステータスで絞り込むproject = PROJ- 特定のプロジェクトupdated >= -7d- 過去 7 日間に更新された課題issuetype = Bug- 特定の課題タイプ
課題の詳細を取得する
mise x node@20 -- mcporter call 'atlassian.getJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123")'
特定のフィールドを指定する場合:
mise x node@20 -- mcporter call 'atlassian.getJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", fields: ["key", "summary", "status", "assignee", "description"])'
追加の詳細を取得するために expand を指定する場合:
mise x node@20 -- mcporter call 'atlassian.getJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", expand: ["changelog", "editmeta"])'
keyとfields(概要、ステータス、担当者、説明など)を含む課題オブジェクト全体が返されます。
課題のトランジションを取得する
mise x node@20 -- mcporter call 'atlassian.getTransitionsForJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123")'
ワークフローの状態を変更するために利用できるトランジションの ID と名前の一覧が返されます。
課題を新しいステータスに移行する
mise x node@20 -- mcporter call 'atlassian.transitionJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", transition: {id: "11"})'
フィールドを更新する場合:
mise x node@20 -- mcporter call 'atlassian.transitionJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", transition: {id: "11"}, fields: {assignee: {id: "USER_ID"}})'
プロジェクトのメタデータを取得する
mise x node@20 -- mcporter call 'atlassian.getJiraProjectIssueTypesMetadata(cloudId: "'$JIRA_CLOUD_ID'", projectIdOrKey: "PROJ")'
Jira 課題のフィールドを編集する
TODO: 課題のフィールドを更新する例を追加する
課題にコメントを追加する
mise x node@20 -- mcporter call 'atlassian.addCommentToJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", commentBody: "Your comment here")'
GitHub のパーマリンクを付ける場合:
mise x node@20 -- mcporter call 'atlassian.addCommentToJiraIssue(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123", commentBody: "See implementation details:\n\nhttps://github.com/owner/repo/blob/commit-hash/path/to/file.ts#L123")'
id、body、author、created、updatedを含むコメントオブジェクトが返されます。
新しい課題を作成する
TODO: 新しい課題を作成する例を追加する
課題タイプのメタデータを取得する
mise x node@20 -- mcporter call 'atlassian.getJiraIssueTypeMetaWithFields(cloudId: "'$JIRA_CLOUD_ID'", projectIdOrKey: "PROJ", issueTypeId: "10001")'
関連リンクを取得する(PR、Confluence など)
mise x node@20 -- mcporter call 'atlassian.getJiraIssueRemoteIssueLinks(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123")'
関連リソースを含むremoteIssueLinks[]配列が返されます。
GitHub PR に絞り込む場合:
mise x node@20 -- mcporter call 'atlassian.getJiraIssueRemoteIssueLinks(cloudId: "'$JIRA_CLOUD_ID'", issueIdOrKey: "PROJ-123")' | \
jq '.[]? | select(.type.name == "GitHub" or (.globalId | contains("github"))) | .object.url'
ヘルパースクリプト
| スクリプト | 用途 |
|---|---|
./scripts/get_ticket_summary.sh | ワンショットでチケットの概要を取得 - 1 回の呼び出しですべてのチケット情報を取得します(人が読みやすい形式または JSON 形式) |
./scripts/get_current_user.sh | 認証済みユーザーの情報を取得します(accountId、displayName、email) |
./scripts/get_cloud_id.sh | Jira Cloud ID と URL を取得します |
よくある問題と解決策
| 問題 | 解決策 |
|---|---|
| 利用可能なクラウド ID がない | ./scripts/get_cloud_id.sh を実行して取得し、エクスポートします |
| 現在のユーザー情報が必要 | ./scripts/get_current_user.sh を使って、accountId、displayName、email を取得します |
| 検索結果が 0 件 | JQL の構文を確認してください。status = "To Do" ではなく、status = Open を試してください。まず Jira の UI でクエリをテストしてください。 |
remoteIssueLinks に PR リンクが見つからない | すべての PR が自動でリンクされるわけではありません。GitHub または Jira で「リンク」が作成されたか確認してください。 |
| 「Cannot transition」でトランジションに失敗する | トランジション ID が間違っています。現在のステータスで有効なトランジションを確認するため、必ず最初に getTransitionsForJiraIssue を実行してください。 |
| 「Invalid arguments」が表示される、またはコマンドが失敗する | フラグ形式ではなく、関数呼び出し構文を使ってください。パラメーターは --param value ではなく、functionName(param: value) の中に指定します |
| 配列が機能しない | 関数呼び出しの中で角括弧表記を使ってください:--fields '["key","summary"]' ではなく、fields: ["key", "summary"] |
| オブジェクトが機能しない | 関数呼び出しの中でオブジェクト表記を使ってください:--transition '{"id":"11"}' ではなく、transition: {id: "11"} |
スキーマイントロスペクションによる関数パラメーターの確認
mcporter CLI は MCP サーバーのスキーマをイントロスペクションし、正しいパラメーターとその型を確認できます。
利用可能なすべてのツールを一覧表示する
mise x node@20 -- mcporter list atlassian --json | jq -r ".tools[].name"
戻り値:
atlassianUserInfo
getAccessibleAtlassianResources
getConfluenceSpaces
getConfluencePage
getPagesInConfluenceSpace
getConfluencePageFooterComments
getConfluencePageInlineComments
getConfluencePageDescendants
createConfluencePage
updateConfluencePage
createConfluenceFooterComment
createConfluenceInlineComment
searchConfluenceUsingCql
getJiraIssue
editJiraIssue
createJiraIssue
getTransitionsForJiraIssue
transitionJiraIssue
lookupJiraAccountId
searchJiraIssuesUsingJql
addCommentToJiraIssue
addWorklogToJiraIssue
getJiraIssueRemoteIssueLinks
getVisibleJiraProjects
getJiraProjectIssueTypesMetadata
getJiraIssueTypeMetaWithFields
search
fetch
特定のツールのスキーマを確認する
mise x node@20 -- mcporter list atlassian --json | jq '.tools[] | select(.name == "addCommentToJiraIssue")'
次の内容を含む完全な JSON スキーマが返されます:
inputSchema.properties- 型と説明を含む、利用可能なすべてのパラメーターinputSchema.required- 必須パラメーターoptions- 各パラメーターの CLI 固有のメタデータ
必須パラメーターのみを絞り込む:
mise x node@20 -- mcporter list atlassian --json | \
jq '.tools[] | select(.name == "addCommentToJiraIssue") | .inputSchema.required[]'
パラメーターの説明を取得する:
mise x node@20 -- mcporter list atlassian --json | \
jq '.tools[] | select(.name == "addCommentToJiraIssue") | .inputSchema.properties | to_entries[] | "\(.key): \(.value.description)"'
このイントロスペクション方法はどのツールでも利用できます。select() フィルターのツール名を変更してください。
ヒント
-
セッションごとに一度だけセットアップします:
export JIRA_CLOUD_ID=$(mise x node@20 -- ./scripts/get_cloud_id.sh) export JIRA_URL=$(mise x node@20 -- ./scripts/get_cloud_id.sh --url) -
関数呼び出し構文は mcporter の標準です - フラグではなく、
mcporter call 'func(param: value)'を使ってください -
トランジションの実行前に必ず
getTransitionsForJiraIssueを使ってください - トランジション ID はプロジェクトのワークフローによって異なります -
引用符の外側で環境変数を展開してください:
mcporter call 'func(cloudId: "'$VAR'")'は機能しますが、mcporter call 'func(cloudId: "$VAR")'は機能しません -
シェルスクリプトで JSON を解析するには
jqを使ってください -
パラメーターが不明な場合はスキーマイントロスペクションを使ってください -
mcporter list atlassian --json | jqが役立ちます -
ワークフローの完全な例については、
examples/ディレクトリを参照してください