Skip to main content
Glama

Backlog Buddy MCP

An MCP server that gives AI assistants a product owner's checklist for user stories.

The assistant does the writing. Backlog Buddy checks the drafts against INVEST and acceptance-criteria rules, suggests how to split stories that are too big, and exports the finished backlog to Markdown, CSV or Jira's CSV importer.

Why

AI assistants write plausible-looking user stories quickly, but they routinely:

  • skip the "so that" (the value),

  • write acceptance criteria that only cover the happy path,

  • use untestable words like fast, intuitive or seamless,

  • bundle two or three stories into one.

Backlog Buddy turns those habits into specific, fixable findings, so the assistant can revise its own work before you ever see it.

Related MCP server: refine-backlog-mcp

What it provides

Type

Name

What it does

Tool

validate_story

Scores one story 0–100 against INVEST, with a verdict (ready / needs-work / not-ready) and suggested fixes

Tool

validate_backlog

Checks a set of stories, totals the points and flags likely duplicates

Tool

suggest_splits

Recommends splitting patterns (workflow steps, CRUD, business rules, data variations, interfaces, happy path first, defer performance, user roles, spikes)

Tool

export_backlog

Outputs markdown, csv, or jira-csv

Prompt

feature_to_stories

Guided flow: feature brief → drafted stories → checked → revised → export

Resource

backlogbuddy://guides/invest

One-page guide to INVEST, Given/When/Then and splitting

Example check

Input:

As a user, I want to search and export transactions quickly Acceptance criteria: Search should be fast and intuitive

Backlog Buddy reports, among other things:

  • no "so that" clause, so the value is implied rather than stated

  • "user" is a generic persona

  • the goal contains "and", which often means two stories

  • "quickly", "fast" and "intuitive" can't be tested

  • the acceptance criterion isn't in Given / When / Then form

Setup

Requires Node.js 20 or later.

npm install
npm run build
npm test        # unit tests for the checking, splitting and export logic
npm run e2e     # starts the server and exercises every tool over MCP

Use it in Claude Desktop

Add this to claude_desktop_config.json (Settings → Developer → Edit Config), using the full path to dist/server.js on your machine, then restart Claude Desktop:

{
  "mcpServers": {
    "backlog-buddy": {
      "command": "node",
      "args": ["C:\\path\\to\\backlog-buddy-mcp\\dist\\server.js"]
    }
  }
}

Then try: "Use the feature_to_stories prompt for: let borrowers verify income by linking their bank account."

Inspect it

npm run inspect

opens the MCP Inspector so you can call each tool by hand.

Design notes

  • Deterministic checks, not another LLM call. The server uses rules and heuristics, so results are fast, free, repeatable and explainable. The assistant supplies the judgment; the server supplies the standard.

  • Logic separated from protocol. src/stories.ts has no MCP dependency and is unit-tested on its own; src/server.ts is a thin wrapper that registers tools, a prompt and a resource.

  • Heuristics are opinionated on purpose. They flag things worth a second look, not hard failures. Only a missing narrative or missing acceptance criteria makes a story "not ready".

Roadmap

  • Configurable rules (custom vague-word lists, point thresholds)

  • Push stories directly to Jira or Azure DevOps

  • Definition of Ready checklist per team

License

MIT

Available Tools

4 tools
export_backlogExport storiesA

Formats finished stories as Markdown (for docs or a README), plain CSV (for spreadsheets), or jira-csv (columns laid out for Jira's CSV importer: Summary, Issue Type, Description, Story Points, Labels).

NameRequiredDescriptionDefault
epicNoOptional epic or feature name to group the stories under
formatYesOutput format
storiesYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations and no output schema, the description carries the full burden. It usefully discloses output format details, especially the jira-csv column layout, but does not clarify whether export writes a file, returns a string, overwrites existing files, or requires permissions.

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 a single front-loaded sentence that starts with the core action and then efficiently explains each format. Every clause adds useful information without repetition.

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?

For a 3-parameter tool with 67% schema coverage and no output schema, the description gives enough context to call it correctly and understand the intended output formats. The remaining gap is the unspecified return/file-writing behavior.

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?

Schema description coverage is 67%, and the description adds meaningful detail beyond the schema's generic 'Output format' by explaining each enum value and its target use. It does not expand on the stories or epic parameters, which the schema already documents.

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 states a specific verb, 'Formats,' a specific resource, 'finished stories,' and enumerates the three output formats. It clearly distinguishes export from sibling validation/splitting tools by focusing on formatting finished stories for external use.

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?

It gives clear usage contexts for each format: Markdown for docs or README, CSV for spreadsheets, and jira-csv for Jira's importer. It does not explicitly state when not to use the tool or name alternatives, but the sibling tools are validation/splitting rather than export alternatives.

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

suggest_splitsSuggest ways to split a storyA

Given a story or feature that is too big, suggests splitting patterns that fit it (workflow steps, CRUD operations, business rules, data variations, interfaces, happy path first, defer performance, user roles, spikes), each with how to apply it and an example.

NameRequiredDescriptionDefault
textYesThe story narrative, acceptance criteria or feature description to split
maxSuggestionsNoHow many patterns to return (default 5)

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully says each suggestion includes how to apply the pattern and an example, which clarifies the return content, but it does not explicitly confirm that the operation is read-only or describe side effects/auth needs.

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 a single efficient sentence that front-loads the triggering condition and then clearly lists the pattern categories and output shape. Every part earns its place and there is no filler.

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 non-mutating suggestion tool with a fully documented two-parameter schema and no output schema, the description is complete enough for an agent to invoke it correctly. It explains the input precondition, the pattern catalog, and what each returned suggestion contains.

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% description coverage for both parameters, including the meaning and default for maxSuggestions. The description does not add parameter-level guidance 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 uses a specific verb ('suggests splitting patterns') and resource ('story or feature that is too big'), and lists the exact kinds of patterns returned. This clearly distinguishes it from the sibling validation/export tools without needing to name them explicitly.

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?

It gives a clear usage condition: use this tool when a story or feature is too big and needs splitting. It does not explicitly state when not to use it or name alternatives, but the context is strong enough for correct selection.

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

validate_backlogCheck a set of storiesA

Checks several user stories at once: each gets an INVEST report, plus a summary with average score, how many are ready, total points and possible duplicates.

NameRequiredDescriptionDefault
storiesYesThe stories to check

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It helpfully discloses what comes back (INVEST report per story, plus aggregate summary with average score, ready count, points, possible duplicates), but it does not state that this is a read-only/no-side-effect operation, nor any auth or rate-limit context.

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?

One front-loaded sentence with no filler; the encumbrance is that the return-value detail is packed into a dense single sentence rather than structured, but nothing is wasted.

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?

For a simple one-parameter batch tool with full schema coverage and no output schema, the description covers purpose and return contents well enough to call it correctly. The main gap is the absence of any explicit read-only/permission context and explicit sibling routing.

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 description coverage is 100% and the single required parameter (stories) is fully documented including nested fields, so the schema does the heavy lifting. The description adds only the notion of checking 'several' stories, which marginally reinforces minItems but adds no format detail beyond the schema.

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 states a specific verb (checks) and resource (several user stories) and even enumerates the output (INVEST report plus a summary with average score, ready count, total points, duplicates). It implies batch versus the singular sibling validate_story via 'at once', but never names that sibling, so differentiation is inferred rather than stated.

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?

'Checks several user stories at once' hints that this is the batch tool versus validate_story, but there is no explicit when-to-use/when-not guidance and no mention of alternatives like validate_story or suggest_splits. Usage is left implied.

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

validate_storyCheck a user storyA

Checks one user story against INVEST (Independent, Negotiable, Valuable, Estimable, Small, Testable) and acceptance-criteria quality rules. Returns a 0–100 score, a verdict (ready / needs-work / not-ready) and specific findings with suggested fixes. Use it on every story you draft before showing it to the user.

NameRequiredDescriptionDefault
titleNoShort title, e.g. 'Link a bank account'
labelsNoLabels or tags
estimateNoStory points, if estimated
narrativeYesAs a <persona>, I want <goal> so that <benefit>.
acceptanceCriteriaNoAcceptance criteria, ideally each in Given / When / Then form

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose the return shape: a 0-100 score, a verdict enum (ready / needs-work / not-ready), and findings with suggested fixes. It does not state whether the check is read-only/pure or whether findings are prioritized, but for a validation tool this is substantial disclosure.

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?

Three tight sentences: purpose and criteria first, return values second, usage directive last. No filler, and the most decision-relevant content is front-loaded.

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?

No output schema exists, yet the description compensates by describing the score, verdict, and findings. Inputs are fully documented by schema, and the usage rule closes the loop on when to invoke, so nothing an agent needs to call this correctly is missing.

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 description coverage is 100% and every parameter is documented inline, so the baseline is 3. The description adds only indirect meaning (acceptanceCriteria is implicitly the target of 'acceptance-criteria quality rules'); it does not clarify optional-parameter effects, e.g., what happens when narrative is present but acceptanceCriteria is omitted.

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?

States a concrete verb (checks) plus the resource (one user story) and enumerates the exact criteria set (INVEST + acceptance-criteria rules), so the agent knows precisely what the tool does. It implicitly separates itself from validate_backlog by scope (one story), but never names the sibling, leaving a small differentiation gap.

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?

'Use it on every story you draft before showing it to the user' gives clear, actionable timing guidance. It stops short of exclusions or naming an alternative (e.g., validate_backlog for whole backlogs, suggest_splits for oversized stories).

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. 4 tool updatesv0.1.0
    • First observedexport_backlog
    • First observedsuggest_splits
    • First observedvalidate_backlog
    • First observedvalidate_story

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct operation: single-story validation, batch validation, splitting suggestions, and export. The only near-overlap (validate_story vs validate_backlog) is explicitly disambiguated by 'one user story' vs 'several user stories at once' in the descriptions.

Naming Consistency5/5

All four names follow a uniform snake_case verb_noun pattern (validate_story, validate_backlog, suggest_splits, export_backlog) with semantically accurate verbs. No mixed conventions or vague verbs.

Tool Count4/5

Four tools is on the lean side but each covers a real step in the story-writing workflow (validate, validate-in-bulk, split, export). It sits at the low end of the comfortable 3-15 range without feeling padded or redundant.

Completeness4/5

Validation, splitting, and export round out the stated purpose well, and the agent supplies the drafting in-context. Minor gaps exist: no tool to persist/retrieve a backlog or to generate acceptance criteria or story points, so exported data must be assembled entirely by the model.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers