Skip to content

Releases: corbym/backlog-mcp

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 10:43

What's new since v1.1.2

get_story: optional include_notes parameter

Set include_notes=false to omit the ## Notes section (and everything after it) from the returned content. Story files only grow over time — every add_story_note and complete_story call appends a timestamped note, and nothing ever trims it — so a heavily-annotated, long-lived story can carry a lot of accumulated history that a caller doesn't always need. Defaults to true; existing callers see no change.

bulk_update_acceptance_criteria no longer echoes file content

The response no longer includes the full post-update file content — it now returns {story_id, path, criteria_updated, errors}. The criteria_updated/errors pair was already sufficient signal; callers who want to see the resulting file should call get_story explicitly. Both of these changes were flagged from a real dogfood session where repeated calls made up a disproportionate share of the session's token spend.

Bug fix: bare AC IDs with non-hex suffixes now resolve correctly

bulk_update_acceptance_criteria and check_acceptance_criterion previously only recognised AC IDs with an 8-character hex suffix (e.g. AC-STORY-042-a3f9b2c1). Stories whose acceptance criteria were hand-authored with plain sequential IDs instead (e.g. AC-STORY-159-1, AC-STORY-159-2, ...) — most commonly when an external tool or agent writes AC lines directly to markdown rather than going through set_acceptance_criteria — would fail lookup for every criterion with "criterion/criteria not found", even though the same call worked fine for hex-suffixed stories. The ID regex now accepts any-length hex suffix, so both formats resolve.

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 02 Jul 18:45

What's fixed

set_acceptance_criteria no longer corrupts acceptance criteria when passed pre-ticked or fully-formatted input.

Previously, set_acceptance_criteria unconditionally prepended - [ ] to every criterion string, even when the string already began with a checkbox marker ([x] ..., - [x] ...) or a full stored line including an existing AC-ID. This produced double-nested, broken checkboxes (e.g. - [ ] [x] AC-STORY-114-abc: text), and the ID-assignment logic would then treat the original ID as ordinary text and generate a brand new one — silently breaking any subsequent tool call that referenced the old ID. Recovery previously required a direct file edit.

set_acceptance_criteria now strips any leading checkbox marker before processing, preserves the ticked state of the input, and keeps existing AC-IDs intact rather than regenerating them. This makes it safe to re-pass criteria lines read directly from a story file (e.g. during bulk updates or story review), which is the natural workflow for an agent working with get_story output.

Also in this release

  • Filed two new bug stories (STORY-032, STORY-033) in the backlog covering list_stories Unicode mojibake in story titles and a bulk_update_acceptance_criteria key-lookup failure on combined ID: text inputs. Both are tracked for future fixes.

Upgrading

brew upgrade backlog-mcp

or download the binary for your platform from the assets below.

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 18 May 14:49
a6f62c4

Changelog

  • a6f62c4 build: add x86 (386) build targets for Windows and Linux

v1.1.0

Choose a tag to compare

@corbym corbym released this 14 May 19:51

What's new since v1.0.4

New tool: reorder_backlog

Reorder the active backlog by supplying a priority-ordered list of story IDs. Stories omitted from the list are appended at the end — nothing is silently dropped. Uses the same atomic write + file lock path as all other mutating tools.

Bug fixes

  • Acceptance criteria text matchingcheck_acceptance_criterion and bulk_update_acceptance_criteria now tolerate Unicode dash variants (em-dash, en-dash, figure dash, etc.) in criterion text, so an agent that stored a criterion with can look it up with or - without a criteria_errors failure.
  • RemoveFromBacklog now reports whether an entry was actually removed — previously it silently returned nil even if the story wasn't in the backlog.
  • bulk_update_stories surfaces backlog update failures — previously, if a story's backlog entry was missing during a status update, the error was silently discarded. It now appears in the per-story errors array.

Discoverability

  • list_stories description now lists all other tools in the server, so agents in deferred-tool environments (e.g. VS Code Copilot) discover the full tool surface from a single lookup.
  • bulk_update_stories criteria format is now documented with a concrete example in the tool description.

Docs

  • README updated with Homebrew install instructions and an expanded tool list.

v1.0.4

Choose a tag to compare

@corbym corbym released this 12 May 16:47
96467fc

What's Changed

  • chore: fix backlog-agent install action to use go install instead of go build by @Copilot in #5
  • Copilot/story 022 add bulk update tools by @corbym in #7
  • feat: lazy acceptance criteria ID generation by @Copilot in #8
  • feat(STORY-023): Add Homebrew tap formula and release automation by @Copilot in #9
  • Allow Release workflow to dispatch Homebrew update workflow by @Copilot in #10
  • chore: replace manual Homebrew tap workflow with goreleaser native brews support by @Copilot in #11

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 17 Apr 19:08

Changelog

  • 459eb58 feat: add FindEpicFilePath function to retrieve relative path of epic markdown files
  • f5d6c7f feat: add set_epic_status tool to manage epic lifecycle and update requirements index
  • de82e09 feat: update README with new epic status management details and guards

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 17 Apr 14:35

Added epic status change command to manage epic lifecycle and update requirements index

Changelog

  • 02a2768 feat: add set_epic_status tool to manage epic lifecycle and update requirements index

Full Changelog: v1.0.1...v1.0.2

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 16 Apr 16:00

Changelog

  • 7328b87 Merge pull request #3 from corbym/copilot/promote-release-v016-to-v100
  • 7400a32 Merge pull request #4 from corbym/copilot/update-readme-http-port-info
  • 601f6ba feat: add promote-release workflow for tagging aliases without rebuild
  • a4e8d57 feat: enhance story status management and update related configurations
  • 3ace4b6 fix CLAUDE.md: remove stale HTTP refs, add plan subcommand, fix repo layout
  • 20afc8a fix README: remove unimplemented HTTP env vars, add plan subcommand docs
  • 3b3e631 fix: update acceptance criteria descriptions and improve error messaging in tools

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 14 Apr 10:51

Changelog (v0.1.4 → v0.1.6)

Comparison: v0.1.4...v0.1.6

Highlights

  • Expanded the MCP server from 5 tools → 9 tools, covering full backlog lifecycle: create epics, create stories, set acceptance criteria, and complete stories (with validation), plus new maintenance tooling.
  • Added file locking for all mutating operations to prevent concurrent-write corruption.
  • Introduced story types (feature/bug/chore/spike) end-to-end (create, index storage, list/get, filtering).
  • Improved backlog and epic navigation by adding relative links and maintaining an epic “Stories” section.
  • Added acceptance-criteria parsing and enforcement, including a dedicated tool to check off criteria line-by-line.
  • Added a groom_epic tool to reconcile epic story lists with the filesystem and index.

Added / Changed MCP Tools

New tools (added since v0.1.4)

  • create_epic
    • Creates an epic directory + epic.md, assigns next EPIC-NNN, and registers in requirements-index.md.
  • create_story
    • Creates a story under an epic, assigns next STORY-NNN, writes story markdown, registers in index + backlog.
    • Now supports story_type.
  • set_acceptance_criteria
    • Replaces the story’s “Acceptance criteria” section from an array of strings.
    • Schema bug fixed: the criteria array is now properly declared/required in the tool schema.
  • complete_story
    • One-call completion: validates AC, marks done in index, removes from backlog, appends completion note.
    • Supports incomplete_items when criteria are unchecked.
  • check_acceptance_criterion
    • Checks a single AC item (- [ ]- [x]) by 0-based index or case-insensitive text match.
  • groom_epic
    • Reconciles an epic’s ## Stories section against story files on disk + index metadata.

Updated existing tools / behavior changes

  • set_story_status
    • Now only allows: draft, in-progress, blocked.
    • Setting status to done is blocked and returns an error instructing callers to use complete_story.
    • If a story isn’t found in backlog.md, the tool now returns a backlog_warning instead of silently ignoring the failure.
  • list_stories
    • Now supports filtering by story_type and returns story_type in results.
  • get_story
    • Now includes story_type in the returned metadata.

Concurrency & Safety

  • File locking added for mutating tools via parser.AcquireLock(...) (5-second timeout), with platform-specific implementations:
    • parser/lock_unix.go
    • parser/lock_windows.go
  • Reinforced “atomic writes everywhere” pattern (still uses atomic write strategy).

Backlog + Epic Markdown UX Improvements

  • Backlog entries are now link-based, supporting navigation:
    • New format: N. [STORY-NNN](story-path) ([EPIC-NNN](epic-path)) — title *(status)*
    • Parser updated to support both old and new formats, including safer renumbering and status updates.
  • Epic files now maintain a ## Stories section
    • create_story updates the epic file with a checklist entry for the story.
    • complete_story flips the epic checklist entry to done ([x]) (best-effort / non-fatal).
  • groom_epic tool can rebuild/sync that ## Stories section:
    • Adds missing stories, removes stale entries, refreshes titles and checked-state from index, keeps entries ordered.

Story “Type” Support (feature/bug/chore/spike)

  • create_story accepts optional story_type (defaults to feature, validates allowed values).
  • New stories include a **Type:** ... line in the story file.
  • requirements-index.md epic tables were extended to include an optional Type column (with backward compat parsing).

Acceptance Criteria: Parsing, Enforcement, and Completion Gating

  • Added parsing utilities:
    • ParseAcceptanceCriteria reads ## Acceptance criteria checklist items into structured {Text, Checked}.
  • complete_story now enforces:
    • Blocks completion if AC is placeholder-only (“Define acceptance criteria”).
    • If any unchecked criteria exist, requires incomplete_items with one explanation per unchecked item, included in the completion note.
  • New check_acceptance_criterion tool implements line-level checklist progress.

Tests & Quality

  • Added a substantial set of tests covering:
    • Grooming epic story sections (parser/groom_test.go)
    • Acceptance-criteria gating behavior in complete_story
    • check_acceptance_criterion behaviors (index/text/case-insensitive/already checked/out-of-range/not found/etc.)
    • set_story_status redirect-from-done behavior and missing-backlog warning behavior
  • Updated fixtures to include additional epic/story files and acceptance criteria states.

Documentation / Metadata

  • README.md: added a Glama MCP server badge.
  • CLAUDE.md: updated to reflect 9 tools (was 5), added detailed tool docs, and updated design decisions to reflect file locking.
  • Some IDE/project files were added/changed (e.g., .idea/editor.xml, backlog.iml) as part of development environment configuration.

Notable Internal Implementation Changes (developer-facing)

  • parser/backlog.go: parsing and renumbering rewritten to support the new link-style backlog format.
  • parser/create.go: CreateStory signature changed to accept storyType; new helpers to update backlog + epic files.
  • parser/index.go: index parsing now supports an optional “Type” column and defaults legacy rows to feature.
  • parser/story.go: acceptance-criteria parsing plus new “check one criterion” mutation function.

Full Changelog: v0.1.4...v0.1.6

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Apr 21:29
432c5ac

Changelog

  • 432c5ac Merge pull request #2 from corbym/copilot/check-release-build-failure
  • fb80bc5 fix: split lock.go into lock_unix.go and lock_windows.go for cross-platform build