Skip to main content
Glama

retro-mcp

A sprint retrospective grounded in what actually happened, not what people remember.

npm version license node MCP

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

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.

Related MCP server: Git Metrics MCP Server

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.

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

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.

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:

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:

{
  "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, prompts, brief
  tools/              one MCP tool per file, thin wrappers over analytics

What has been verified

  • All six tools run end to end over real MCP stdio (npm test).

  • The Jira parse layer is unit tested against a documented Cloud payload (test/normalize.test.ts).

  • The retro engine is unit tested: changelog-derived metrics, recurring-theme detection across sprints, and evidence-grounded findings (test/retro.test.ts).

  • The whole engine is exercised against the demo sprint and reconciles across tools (npm run smoke).

The demo proves the engine. It does not prove each live client against every account shape, which is why the parse layer is unit tested separately and each source is kept small and tolerant. Run --check to confirm your own connections.

Roadmap

  • Linear cycles as an alternative sprint spine

  • A persisted action-item ledger so the loop closes automatically, no pasting

  • Status-dwell and cumulative-flow detail for cycle-time bottlenecks

  • GitLab and Bitbucket

  • A one-call "retro pack" that bundles the brief, metrics, and prompts for the facilitator

Built by Sathvic Kollu

I run delivery for SaaS and fintech teams, and I build tools like this with Claude Code. This is the third in a set of PM-focused MCP servers, after jira-pm-mcp and standup-mcp. If it makes your retro sharper, I would like to hear how you use it.

Issues and pull requests are welcome.

License

MIT. See LICENSE.

Available Tools

6 tools
action_item_reviewAction Item ReviewA

Close the loop on last retro's action items. Give the previous retro's action items and it attaches THIS sprint's relevant data to each, so the team can see what actually moved. Reviewing prior actions is the single proven lever on retro follow-through. It shows evidence only and lets you judge what counts as done.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdNoBoard id. Optional when the account has a single board, or set JIRA_BOARD_ID.
sprintIdNoSprint id to reflect on. Optional: defaults to the most recently closed sprint.
previousActionsNoLast retro's action items, one per entry. Omit in demo mode to use sample items.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behavioral traits: 'It shows evidence only and lets you judge what counts as done' — indicating a read-only, non-judgmental analysis. It also clarifies that the tool attaches data, implying no mutation or destructive actions, which is useful transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, reasonably concise. The first sentence is slightly jargony, but the second directly explains the mechanism. The third sentence ('single proven lever') is somewhat promotional yet not excessive. Front-loading is adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 params, no required fields, no output schema. The description explains the core workflow (attach current sprint data to previous actions) and the output's nature ('shows evidence only'). It lacks specifics on what 'relevant data' includes, but the overall context is sufficiently conveyed for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds context by tying 'previous retro's action items' to the previousActions param and 'THIS sprint' to sprintId, but does not provide additional syntactic or semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Give the previous retro's action items and it attaches THIS sprint's relevant data to each' — a specific verb-resource pair. It also distinguishes itself from siblings like retro_metrics or retro_brief by focusing on action-item evidence and follow-through.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('Reviewing prior actions is the single proven lever on retro follow-through') but does not explicitly compare with sibling tools or state when not to use it. It offers a strong rationale but lacks exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discussion_promptsDiscussion PromptsA

Open questions for the retro board, each grounded in a real anomaly from the closed sprint (a reopened ticket, mid-sprint scope, a slow review, a revert, a blocker). Questions to start the conversation, not verdicts that end it.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdNoBoard id. Optional when the account has a single board, or set JIRA_BOARD_ID.
sprintIdNoSprint id to reflect on. Optional: defaults to the most recently closed sprint.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It adds useful context by stating the prompts are grounded in real anomalies and framed as questions, not verdicts. However, it does not disclose side effects, permissions, or output structure, which prevents a higher score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences that deliver the core purpose immediately and include only valuable details. Every phrase earns its place without unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only two optional parameters and no output schema, and the description adequately conveys that the output is a set of open questions for discussion. It could specify quantity or format more precisely, but for this simple tool the description is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters with 100% coverage, so the baseline of 3 applies. The description does not add any additional meaning or guidance for boardId or sprintId beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as providing open discussion questions for a retro board, grounded in real anomalies from the closed sprint. It distinguishes itself from sibling tools by emphasizing open-ended questions rather than metrics, summaries, or action items, though it lacks an explicit verb such as 'generates' or 'lists.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: it is for the retro board and intended to start conversation, not to pass verdicts. It implies when this tool is appropriate and differentiates from siblings, but does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sourcesList SourcesA

Show which data sources are configured (Jira, plus optional GitHub and Slack enrichment), or that the server is running on a synthetic demo sprint. Does not hit the network; run the server with --check to verify live connections.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and excels by disclosing the non-network read-only nature, the possibility of a synthetic demo sprint, and the alternative --check flag. This goes beyond basic purpose and sets accurate expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences, front-loaded with the core purpose, followed by relevant scope details and a caveat. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description fully covers what it does, what it does not do, and how to verify live connections. It is complete within its simple context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so schema coverage is effectively complete. The description does not need to explain parameter details, and the baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Show which data sources are configured' and enumerates the specific sources (Jira, optional GitHub/Slack enrichment, synthetic demo sprint). It distinguishes itself from sibling tools that focus on retrospective content rather than configuration listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly notes that the tool 'Does not hit the network' and directs users to 'run the server with --check to verify live connections', providing a clear when-not-to-use and an alternative approach for live verification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retro_briefRetro BriefA

Generate a data-grounded sprint retrospective for the most recently closed sprint: What went well, What did not, Action items, and Discussion prompts. Every line is backed by a metric, ticket, PR, or Slack thread, framed around the process not individuals. Recurring themes across recent sprints are flagged.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdNoBoard id. Optional when the account has a single board, or set JIRA_BOARD_ID.
sprintIdNoSprint id to reflect on. Optional: defaults to the most recently closed sprint.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that every line is backed by specific data sources (metric, ticket, PR, Slack thread), frames the output around process not individuals, and flags recurring themes. These are meaningful behavioral traits beyond the basic generation, especially given no annotations are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the tool's purpose and key behavioral characteristics. Every sentence provides substantive information with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description outlines the four sections of the retrospective and notes data grounding and thematic flagging, effectively explaining the expected output despite the absence of an output schema. Minor details like output format are not specified, but overall it is suitably complete for a tool with only two optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both optional parameters with clear descriptions, achieving 100% coverage. The tool description adds no additional parameter-specific information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a data-grounded sprint retrospective with four named sections (What went well, What did not, Action items, Discussion prompts). It distinguishes from sibling tools by combining metrics, prompts, and action items into a single comprehensive brief.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for the tool's default behavior (most recently closed sprint) and output scope, but does not explicitly name alternatives or when-not-to-use scenarios. The sibling tool list suggests narrower tools exist, but the description doesn't reference them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retro_metricsRetro MetricsA

The hard numbers behind the retro for the closed sprint: completion, mid-sprint scope change, carryover, reopens, average cycle time vs the prior sprint, velocity, PR review latency, reverts and hotfixes, and flagged Slack threads. This is the evidence base the brief draws from.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdNoBoard id. Optional when the account has a single board, or set JIRA_BOARD_ID.
sprintIdNoSprint id to reflect on. Optional: defaults to the most recently closed sprint.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the scope (closed sprint, comparison with prior sprint) and the output content (detailed metrics list). It does not explicitly state it is read-only, but that is strongly implied by the nature of metrics retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two sentences. The first sentence front-loads the core purpose with a dense but relevant list of metrics; the second adds context. Every phrase contributes, though the list could be seen as slightly exhaustive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description does well to enumerate the returned metrics and establish the comparison baseline. It does not explain parameter defaults or prerequisites, but the schema fills that gap. Overall, it gives a clear picture of what the tool offers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters clearly described. The tool description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool's function as retrieving quantitative metrics for a retro on the closed sprint, enumerating specific measurements. It distinguishes itself from siblings by calling itself 'the evidence base the brief draws from', implying a distinct data-provision role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'evidence base the brief draws from' provides clear context for when to use this tool—when raw numbers are needed for a retro. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sprint_compareSprint CompareA

Compare the closed sprint against the one before it (completion, scope, carryover, reopens, cycle time, velocity), and list the problem themes that recur across recent sprints. Use it to tell a one-off from a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdNoBoard id. Optional when the account has a single board, or set JIRA_BOARD_ID.
sprintIdNoSprint id to reflect on. Optional: defaults to the most recently closed sprint.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It explains what the tool compares and that it lists problem themes, implying a read-only analysis. However, it does not explicitly state whether it modifies any data, require permissions, or describe the output format, leaving some behavioral aspects undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using two sentences to cover core functionality and usage guidance. It is front-loaded with the main comparison action and metrics, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides a solid overview of the tool's function and output (comparison metrics and problem themes). While it lacks an output schema or explicit return-value details, the description sufficiently covers what the tool delivers. The absence of annotations and the tool's analytical nature make this reasonably complete, though a note on read-only behavior would improve it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with clear descriptions for both parameters (boardId and sprintId), including defaults. The tool description adds no additional parameter semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares the closed sprint to the previous one, enumerating specific metrics (completion, scope, carryover, reopens, cycle time, velocity) and lists recurring problem themes. This specific verb+resource combination distinguishes it from sibling tools like retro_metrics, which likely focus on single-sprint analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence 'Use it to tell a one-off from a pattern' provides explicit usage context, indicating when this tool is appropriate. However, it does not explicitly mention alternatives or exclusions relative to sibling tools like retro_metrics or retro_brief, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedaction_item_review
    • First observeddiscussion_prompts
    • First observedlist_sources
    • First observedretro_brief
    • First observedretro_metrics
    • First observedsprint_compare

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct aspect of the retrospective workflow: raw metrics, generated brief, discussion prompts, action item follow-up, sprint comparison, and source configuration. There is no overlap or ambiguity between tool purposes.

Naming Consistency4/5

All names use snake_case and most follow a noun_verb or noun_noun pattern with a clear domain prefix (retro_, discussion_, action_item_, sprint_). 'list_sources' uses a verb_noun pattern, which is a minor deviation but still readable and consistent in style.

Tool Count5/5

Six tools is well within the ideal range for a domain-specific server. Each tool addresses a necessary part of the retrospective process, and none are redundant or superfluous.

Completeness5/5

The tool surface covers the full retrospective lifecycle: generate evidence-based insights, produce a summary brief, prompt discussion, review prior action items, and compare sprints. Optional source listing rounds out the set without any obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers