Data-grounded sprint retro について
Data-grounded sprint retro は、Jira、GitHub、Slack の活動を基に回顧を作成するローカルの読み取り専用 MCP サーバーです。根拠付きの所見や繰り返す課題を示し、前回のアクション項目を今スプリントのデータと照合します。
主な機能
- 01根拠に基づく回顧の作成
- 02スプリント指標の集計
- 03過去のアクション項目の確認
- 04議論用プロンプトの生成
- 05スプリント比較と反復テーマの検出
- 06データソースへの読み取り専用アクセス
活用シーン
- 01Jira、GitHub、Slack の活動から回顧を準備する
- 02前回の回顧項目を今スプリントのデータで確認する
MCP 対応
標準的な MCP サーバーとして、回顧、指標、アクション項目の確認、議論用プロンプト、スプリント比較、ソース一覧の6つのツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y retro-mcpJIRA_BASE_URLYour Jira Cloud site, e.g. https://your-company.atlassian.net. Required for a live retro.JIRA_EMAILAtlassian account email the API token belongs to.JIRA_API_TOKENシークレットJira API token from id.atlassian.com. Read-only use.JIRA_BOARD_IDOptional board id to pin when the account has several boards.GITHUB_TOKENシークレットOptional GitHub read-only token for PR review latency and reverts.GITHUB_REPOSOptional comma-separated owner/name repos to scope PR analysis.SLACK_TOKENシークレットOptional Slack read token to scan sprint channels for blocker and incident language.SLACK_CHANNELSOptional comma-separated Slack channel ids to scan for the sprint window.RETRO_DEMO_MODESet to true to force the synthetic demo sprint even when credentials are present.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| boardId | integer | いいえ | ボード ID。アカウントにボードが 1 つだけの場合は省略できます。または JIRA_BOARD_ID を設定してください。 |
| sprintId | integer | いいえ | 振り返り対象のスプリント ID。任意:デフォルトでは直近で終了したスプリントを使用します。 |
詳細
retro-mcp
人々の記憶ではなく、実際に起きたことに基づくスプリントレトロスペクティブです。
レトロスペクティブは記憶に頼るため、偏りが生じます。声の大きい人や直近数日間の出来事が優先され、同じ不満が毎スプリント繰り返され、アクションアイテムはいつの間にか実行されなくなります。一方、再オープンされたチケット、レビューで2日間止まっていたPR、誰かがブロックされていると伝えたSlackのスレッドなど、スプリントの実際の記録は、使われないまま各種ツールに残っています。
retro-mcp はその記録を読み取り、それに基づくレトロスペクティブを提供します。AI アシスタントにレトロスペクティブを頼むと、**うまくいったこと、うまくいかなかったこと、アクションアイテムを、すべて具体的なメトリクス、チケット、PR、スレッドで裏付けて回答します。**すべてをプロセスの観点から捉え、個人を問題にすることはありません。また、スプリントをまたいで繰り返される問題にフラグを立てます。
これは標準的なModel Context Protocolサーバーなので、どのモデルでも、あらゆる MCP クライアント(Claude、Cursor、Cline など)で動作します。ローカルで動作し、読み取り専用です。使用しているツールの API への呼び出し以外に、スプリントの情報がマシンの外に出ることはなく、AI API キーも不要です。よくある懸念への答えも明確です。これはレトロスペクティブの支援ツールであり、監視ツールではありません。
30秒で試す(アカウント不要)
現実的な完了済みスプリントのデータが付属しており、認証情報が設定されていない場合は自動的にそのデータを使って実行されます。
npx -y retro-mcp --demo
以下は、そのデモスプリントで使える代表的なツールです。
# Sprint Retrospective: MBANK Sprint 23
_May 27 to Jun 10. Demo data, no credentials configured._
_Grounded in 8 issues, 5 merged PRs, and 4 flagged threads. System-level and blameless: this is about the process, not people._
## What went well
- **Work moved through faster than last sprint.** avg cycle time 4.6d, down from 5.6d.
## What did not go well
- **The sprint fell short of its commitment.** only 23 of 34 pts done (68%). ⟳ recurring across recent sprints
- **Scope grew mid-sprint.** +5 pts across 2 issues pulled in after the sprint started. ⟳ recurring across recent sprints
- **Work carried over into the next sprint.** 3 issues (16 pts) not finished. ⟳ recurring across recent sprints
- **Some work was called done before it was.** MBANK-203 · reopened 1 time: Statement PDF export.
- **Code review was a bottleneck.** PRs waited 20.3h on average for a first review; PR #503 · sat 52h: statement PDF export.
- **Changes had to be reverted or hotfixed.** PR #504 · revert: OTP delivery change; 1 hotfix merged.
- **The team hit repeated blockers and interruptions.** 2 threads mentioned being blocked; 1 thread mentioned an incident.
## Action items
- [ ] (recurring) Adopt a scope-change rule: anything pulled in mid-sprint bumps something out, decided at standup, not silently.
- [ ] (recurring) Pull less or split large items so they finish inside the sprint.
- [ ] Tighten the definition of done: an explicit QA check before anything moves to Done.
- [ ] Add a pre-merge guard on risky changes: a second approval or a smoke test before merge.
## Discussion prompts
- MBANK-203 was reopened once. What made it hard to call done the first time?
- +5 pts came in after the sprint started. What drove the mid-sprint adds?
- PR #504 had to be reverted. What would have surfaced the problem before it merged?
すべての行が実際の情報を示しています。誰も記憶を頼りに入力したものではありません。また、繰り返し発生している3つの問題は、新たな不満ではなく、パターンとしてフラグが立てられます。
できること
6つのツールを利用できます。すべて、既定では直近の完了済みスプリントを対象にします。
| ツール | 内容 |
|---|---|
retro_brief | レトロスペクティブ全体:うまくいったこと/うまくいかなかったこと/アクションアイテム/議論のきっかけを提示します。各行は根拠で裏付けられ、繰り返し現れるテーマにはフラグが立てられます。 |
retro_metrics | 根拠となるデータ:完了率、スプリント途中のスコープ変更、持ち越し、再オープン、前回とのサイクルタイム比較、ベロシティ、PR のレビュー所要時間、リバート、フラグが立てられたスレッドを確認できます。 |
action_item_review | 前回のレトロスペクティブのアクションアイテムを貼り付けると、それぞれに今スプリントのデータを添付し、実際に進展した内容を確認できます。 |
discussion_prompts | ボードで話し合うための自由回答形式の質問を提示します。各質問は実際の異常な動きに基づいており、断定ではなく問いかけです。 |
sprint_compare | 今回のスプリントと前回のスプリントを比較し、さらに最近のスプリントで繰り返されている問題のテーマを示します。 |
list_sources | 接続されているデータソース、またはデモデータを使用中であることを確認できます。 |
これが異なる理由
他のふりかえりツールはどれもデジタル付箋ボードで、人が記憶を頼りに観察事項を入力しなければなりません。「AI」搭載のツールも、すでに人が書いたメモを分類するだけです。retro-mcp は Jira、GitHub、Slack のデータを一度に分析し、そこから観察事項を導き出します。具体的には、次のとおりです。
- すべての発見に根拠があります。 当たり障りのないことは言いません。指標、チケット、PR、スレッドを根拠として示せない場合、その内容は出力しません。
- 仕組み上、誰かを責めません。 発見の対象はシステムやプロセスです。個人の名前を挙げたり、順位付けしたりすることはありません。
- アクションアイテムの振り返りを完結させます。 チームが実行するふりかえりのアクションはごく一部にとどまり、以前のアクションを見直すことが、効果が実証されている唯一の手段です。
action_item_reviewは、前回のふりかえりのアクションアイテムを今回のスプリントのデータと並べて表示します。 - 今回のスプリントだけでなく、パターンを捉えます。 直近の複数のスプリントで繰り返されるテーマに印を付けるため、「毎回同じ不満が出る」という状況が、ついに根拠とともに明らかになります。
- 人間によるふりかえりを補助します。 ボードに使うプロンプトを出力し、会話を終わらせるような結論を示すことはありません。
例:action_item_review
# Last retro's action items, against this sprint's data
_Demo data. Evidence only. You decide what counts as done._
- **Speed up PR reviews so nothing sits more than a day**
- avg PR review latency this sprint: 20.3h
- slowest review: PR #503 at 52h
- **Stop pulling unplanned work into the sprint mid-flight**
- scope added mid-sprint: +5 pts (2 issues)
- completion: 68%
- **Finish what we commit to and cut the carryover**
- carryover this sprint: 3 issues (16 pts)
完了か未完了かを断定しません。根拠を提示し、判断はチームに委ねることで、誠実さを保ちます。
プライバシー
- ローカルで動作します。 AI クライアント内で、お使いのマシン上で実行されます。retro-mcp サーバーやアカウントは不要です。
- 読み取り専用です。 要求するトークンはすべて、読み取りのみに使用します。書き込み、投稿、移動は一切行いません。
- AI キー不要、サードパーティー不使用です。 独自の LLM 呼び出しは行いません。スプリントのデータが送信されるのは、各ツールの API と、お使いの AI クライアントで使用中のモデルだけです。
- 監視ではなく、ふりかえりの補助です。 個人を順位付けするのではなく、チームの改善に役立つよう、システムについて報告します。
データを接続する
Jira はふりかえりの要となるため、ライブモードでは必須です。GitHub と Slack は任意で、完了したスプリントの日付の範囲に絞って情報を補完します。
| 変数 | ソース | 備考 |
|---|---|---|
JIRA_BASE_URL JIRA_EMAIL JIRA_API_TOKEN | Jira | ライブモードでは必須です。クラウドサイト、アカウントのメールアドレス、および API トークンを指定します。 |
JIRA_BOARD_ID | Jira | 任意です。アカウントに複数のボードがある場合、使用するボードを指定します。 |
GITHUB_TOKEN GITHUB_REPOS | GitHub | 任意です。PR のレビュー所要時間と取り消しを確認するため、読み取り専用トークンとチームのリポジトリ(owner/name 形式、カンマ区切り)を指定します。 |
SLACK_TOKEN SLACK_CHANNELS | Slack | 任意です。ブロッカーやインシデントに関する表現を検索するため、読み取りトークンとスプリントのチャンネル ID(カンマ区切り)を指定します。 |
クライアントに設定する前に確認してください。
JIRA_BASE_URL=https://you.atlassian.net [email protected] JIRA_API_TOKEN=xxx npx -y retro-mcp --check
AI クライアントを接続する
Claude Desktop
claude_desktop_config.json(設定、開発者、設定を編集)に以下を追加し、再起動します。
{
"mcpServers": {
"retro": {
"command": "npx",
"args": ["-y", "retro-mcp"],
"env": {
"JIRA_BASE_URL": "https://your-company.atlassian.net",
"JIRA_EMAIL": "[email protected]",
"JIRA_API_TOKEN": "your-jira-token",
"GITHUB_TOKEN": "ghp_your_token",
"GITHUB_REPOS": "your-org/your-app",
"SLACK_TOKEN": "xoxp-your-token",
"SLACK_CHANNELS": "C0123ENG"
}
}
}
}
まずデモデータで実行する場合は、env ブロックを省略してください。使用するソースだけを指定します。Cursor、Cline、Continue、Zed、Windsurf は、同じ mcpServers JSON を読み込みます。
仕組み
- Jira が要となり、GitHub と Slack が情報を補完します。 1 つのプロバイダーが、設定されているソースに応じて処理を振り分けます。いずれかのソースで障害が発生しても処理を継続できるため、Slack トークンの設定ミスでふりかえり全体が失敗することはありません。
- 指標は変更履歴から算出します。 完了、スコープの変更、持ち越し、再オープン、サイクルタイムは各課題の履歴を読み取って再構成されるため、最終状態だけでなく実際に起きたことを反映します。
- 純粋関数のエンジンです。 指標、テーマ、発見事項、ブリーフは、正規化されたデータに対する純粋関数です。デモデータでもライブデータでも同じように実行され、テストから直接実行できます。
- サーバーにモデルはありません。 事実に基づき、根拠へのリンクを含むふりかえりを組み立て、表現は AI クライアントが行います。そのため AI キーは不要で、発見事項を捏造することもありません。
src/
index.ts MCP server, stdio transport, --demo/--check/--help
config.ts env resolution, demo-mode detection
gather.ts one place that pulls the sprint, PRs, and signals together
provider.ts aggregator over Jira + GitHub + Slack
types.ts normalized domain types and source interfaces
jira/normalize.ts raw Jira to normalized, plus the ADF flattener
sources/ jira, github, slack clients, plus the demo provider
analytics/ metrics, themes, findings, actionReview, prompts, brief
tools/ one MCP tool per file, thin wrappers over analytics
検証済みの内容
- 6 つすべてのツールが、実際の MCP stdio 上でエンドツーエンドに動作します(
npm test)。 - Jira の解析レイヤーは、ドキュメント化された Cloud ペイロードを使って単体テストされています(
test/normalize.test.ts)。 - レトロエンジンは、変更履歴から導出したメトリクス、スプリントをまたぐ繰り返しテーマの検出、根拠に基づいた所見について単体テストされています(
test/retro.test.ts)。 - エンジン全体をデモ用スプリントで実行し、ツール間で結果が一致することを確認しています(
npm run smoke)。
デモで実証できるのはエンジンです。各ライブクライアントがあらゆるアカウント構成で動作することまでは実証できません。そのため、解析レイヤーを個別に単体テストし、各データソースを小さく、さまざまな形式に対応できるようにしています。--check を実行して、ご自身の接続を確認してください。
ロードマップ
- スプリントの軸となる Linear サイクルの追加
- ループを自動的に完結させ、貼り付けを不要にする、永続化されたアクションアイテム台帳
- サイクルタイムのボトルネックを把握するための、ステータス滞留時間と累積フローの詳細
- GitLab と Bitbucket
- ファシリテーター向けに概要、メトリクス、プロンプトをまとめた、1 回の呼び出しで取得できる「レトロパック」
Sathvic Kollu が開発
私は SaaS とフィンテックのチームでデリバリーを担当しており、Claude Code を使ってこのようなツールを開発しています。これは、jira-pm-mcp と standup-mcp に続く、PM に特化した MCP サーバーシリーズの 3 つ目です。これによってレトロスペクティブの質が高まったなら、どのように活用しているかぜひお聞かせください。
- ウェブサイト:sathvickollu.com
- LinkedIn:linkedin.com/in/sathvic-kollu
Issue とプルリクエストを歓迎します。
ライセンス
MIT です。LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。