claude mcp add retro-mcp -- npx -y retro-mcp{
"mcpServers": {
"retro-mcp": {
"command": "npx",
"args": ["-y", "retro-mcp"],
"env": {
"JIRA_BASE_URL": "<jira_base_url>",
"JIRA_API_TOKEN": "<jira_api_token>"
}
}
}
}JIRA_BASE_URLJIRA_API_TOKENMCP Servers overview
# retro-mcp
**A sprint retrospective grounded in what actually happened, not what people remember.**
[](https://www.npmjs.com/package/retro-mcp)
[](LICENSE)
[](https://nodejs.org)
[](https://modelcontextprotocol.io)
Retros run on memory, so they run on bias. The loudest voice and the last few days win, the same complaints come back every sprint, and the action items quietly never happen. Meanwhile the actual record of the sprint, the reopened ticket, the PR that sat two days in review, the Slack thread where someone said they were blocked, is sitting right there in your tools, unused.
`retro-mcp` reads that record and hands you a retro built from it. You ask your AI assistant for the retro and it answers with **what went well, what didn't, and action items, every line backed by a specific metric, ticket, PR, or thread.** It frames everything around the process, never individuals, and it flags the problems that keep recurring across sprints.
It is a standard [Model Context Protocol](https://modelcontextprotocol.io) server, so it works in any MCP client (Claude, Cursor, Cline, and more) on any model. It is **local and read-only**: nothing about your sprint leaves your machine except the calls to your own tools' APIs, and it needs **no AI API key**. That is also the answer to the obvious worry: it is a retro aid, not a surveillance tool.
## See it in 30 seconds (no accounts needed)
It ships with a realistic closed sprint and runs against it automatically when no credentials are set:
```bash
npx -y retro-mcp --demo
```
Here is the headline tool on that demo sprint:
```
# 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?
```
Every line points at something real. Nobody typed it from memory, and the three recurring problems are flagged as patterns, not fresh complaints.
## What it does
Six tools. Everything defaults to the most recently closed sprint.
| Tool | What you get |
| --- | --- |
| `retro_brief` | The full retro: went well / didn't / action items / discussion prompts, every line evidence-backed, recurring themes flagged. |
| `retro_metrics` | The evidence base: completion, mid-sprint scope change, carryover, reopens, cycle time vs prior, velocity, PR review latency, reverts, flagged threads. |
| `action_item_review` | Paste last retro's action items; it attaches this sprint's data to each, so you see what actually moved. |
| `discussion_prompts` | Open questions for the board, each grounded in a real anomaly. Questions, not verdicts. |
| `sprint_compare` | This sprint vs the prior one, plus the problem themes recurring across recent sprints. |
| `list_sources` | Which sources are wired, or that you are on demo data. |
### Why this is different
Every other retro tool is a digital sticky-note board: humans still type the observations from memory, and the "AI" ones just cluster the notes people already wrote. `retro-mcp` derives the observations from the data itself, across Jira, GitHub, and Slack at once. Specifically:
- **Every finding is grounded.** No platitudes. If it cannot cite a metric, ticket, PR, or thread, it does not say it.
- **Blameless by construction.** Findings are about the system and the process. It never names or ranks a person.
- **It closes the action-item loop.** Teams implement a small fraction of their retro actions, and reviewing the previous ones is the single proven lever. `action_item_review` puts last retro's items next to this sprint's data.
- **It catches patterns, not just this sprint.** Themes that recur across recent sprints are flagged, so "the same complaint every sprint" finally shows up with evidence.
- **It augments the human retro.** It outputs prompts for the board, not verdicts that end the conversation.
<details>
<summary><b>Example: action_item_review</b></summary>
```
# 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)
```
It does not declare done or not done. It surfaces the evidence and lets the team judge, which keeps it honest.
</details>
## Privacy
- **Local.** It runs on your machine, inside your AI client. There is no retro-mcp server or account.
- **Read-only.** Every token it asks for is used only to read. It never writes, posts, or moves anything.
- **No AI key, no third party.** It makes no LLM calls of its own. Your sprint data goes only to your tools' APIs and your existing AI client's model.
- **A retro aid, not surveillance.** It reports on the system to help the team improve, not on individuals to rank them.
## Connect your data
Jira is the spine of a retro, so live mode needs it. GitHub and Slack are optional enrichment, scoped to the closed sprint's dates.
| Variable | Source | Notes |
| --- | --- | --- |
| `JIRA_BASE_URL` `JIRA_EMAIL` `JIRA_API_TOKEN` | Jira | Required for live. Cloud site, account email, and an [API token](https://id.atlassian.com/manage-profile/security/api-tokens). |
| `JIRA_BOARD_ID` | Jira | Optional. Pin a board when the account has several. |
| `GITHUB_TOKEN` `GITHUB_REPOS` | GitHub | Optional. Read-only token and the team's repos (`owner/name`, comma-separated) for PR review latency and reverts. |
| `SLACK_TOKEN` `SLACK_CHANNELS` | Slack | Optional. Read token and the sprint channel ids (comma-separated) to scan for blocker and incident language. |
Verify before wiring it into a client:
```bash
JIRA_BASE_URL=https://you.atlassian.net JIRA_EMAIL=you@co.com JIRA_API_TOKEN=xxx npx -y retro-mcp --check
```
## Connect your AI client
### Claude Desktop
Add this to `claude_desktop_config.json` (Settings, Developer, Edit Config), then restart:
```json
{
"mcpServers": {
"retro": {
"command": "npx",
"args": ["-y", "retro-mcp"],
"env": {
"JIRA_BASE_URL": "https://your-company.atlassian.net",
"JIRA_EMAIL": "you@company.com",
"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"
}
}
}
}
```
Leave the `env` block out to run on demo data first. Include only the sources you use. Cursor, Cline, Continue, Zed, and Windsurf read the same `mcpServers` JSON.
## How it works
- **Jira is the spine, GitHub and Slack enrich.** One provider fans out to whichever sources are configured and tolerates any of them failing, so a misconfigured Slack token never sinks the retro.
- **Metrics come from the changelog.** Completion, scope change, carryover, reopens, and cycle time are reconstructed by reading each issue's history, so they reflect what happened, not just the final state.
- **Pure-function engine.** Metrics, themes, findings, and the brief are pure functions over normalized data. They run identically on demo and live data, and the tests run them directly.
- **No model in the server.** It assembles a factual, evidence-linked retro; your AI client phrases it. That is why it needs no AI key and why it never invents a finding.
```
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, promWhat people ask about retro-mcp
What is sathvic-kollu/retro-mcp?
+
sathvic-kollu/retro-mcp is mcp servers for the Claude AI ecosystem with 0 GitHub stars.
How do I install retro-mcp?
+
You can install retro-mcp by cloning the repository (https://github.com/sathvic-kollu/retro-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is sathvic-kollu/retro-mcp safe to use?
+
sathvic-kollu/retro-mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains sathvic-kollu/retro-mcp?
+
sathvic-kollu/retro-mcp is maintained by sathvic-kollu. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to retro-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy retro-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/sathvic-kollu-retro-mcp)<a href="https://claudewave.com/repo/sathvic-kollu-retro-mcp"><img src="https://claudewave.com/api/badge/sathvic-kollu-retro-mcp" alt="Featured on ClaudeWave: sathvic-kollu/retro-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。