Releases: corbym/backlog-mcp
Release list
v1.2.0
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
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 coveringlist_storiesUnicode mojibake in story titles and abulk_update_acceptance_criteriakey-lookup failure on combinedID: textinputs. Both are tracked for future fixes.
Upgrading
brew upgrade backlog-mcpor download the binary for your platform from the assets below.
v1.1.1
Changelog
- a6f62c4 build: add x86 (386) build targets for Windows and Linux
v1.1.0
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 matching —
check_acceptance_criterionandbulk_update_acceptance_criterianow 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 acriteria_errorsfailure. RemoveFromBacklognow reports whether an entry was actually removed — previously it silently returned nil even if the story wasn't in the backlog.bulk_update_storiessurfaces 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-storyerrorsarray.
Discoverability
list_storiesdescription 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_storiescriteria 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
What's Changed
- chore: fix backlog-agent install action to use
go installinstead ofgo buildby @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
v1.0.2
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
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
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 nextEPIC-NNN, and registers inrequirements-index.md.
- Creates an epic directory +
create_story- Creates a story under an epic, assigns next
STORY-NNN, writes story markdown, registers in index + backlog. - Now supports
story_type.
- Creates a story under an epic, assigns next
set_acceptance_criteria- Replaces the story’s “Acceptance criteria” section from an array of strings.
- Schema bug fixed: the
criteriaarray 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_itemswhen criteria are unchecked.
check_acceptance_criterion- Checks a single AC item (
- [ ]→- [x]) by 0-based index or case-insensitive text match.
- Checks a single AC item (
groom_epic- Reconciles an epic’s
## Storiessection against story files on disk + index metadata.
- Reconciles an epic’s
Updated existing tools / behavior changes
set_story_status- Now only allows:
draft,in-progress,blocked. - Setting status to
doneis blocked and returns an error instructing callers to usecomplete_story. - If a story isn’t found in
backlog.md, the tool now returns abacklog_warninginstead of silently ignoring the failure.
- Now only allows:
list_stories- Now supports filtering by
story_typeand returnsstory_typein results.
- Now supports filtering by
get_story- Now includes
story_typein the returned metadata.
- Now includes
Concurrency & Safety
- File locking added for mutating tools via
parser.AcquireLock(...)(5-second timeout), with platform-specific implementations:parser/lock_unix.goparser/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.
- New format:
- Epic files now maintain a
## Storiessectioncreate_storyupdates the epic file with a checklist entry for the story.complete_storyflips the epic checklist entry to done ([x]) (best-effort / non-fatal).
groom_epictool can rebuild/sync that## Storiessection:- Adds missing stories, removes stale entries, refreshes titles and checked-state from index, keeps entries ordered.
Story “Type” Support (feature/bug/chore/spike)
create_storyaccepts optionalstory_type(defaults tofeature, validates allowed values).- New stories include a
**Type:** ...line in the story file. requirements-index.mdepic tables were extended to include an optional Type column (with backward compat parsing).
Acceptance Criteria: Parsing, Enforcement, and Completion Gating
- Added parsing utilities:
ParseAcceptanceCriteriareads## Acceptance criteriachecklist items into structured{Text, Checked}.
complete_storynow enforces:- Blocks completion if AC is placeholder-only (“Define acceptance criteria”).
- If any unchecked criteria exist, requires
incomplete_itemswith one explanation per unchecked item, included in the completion note.
- New
check_acceptance_criteriontool 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_criterionbehaviors (index/text/case-insensitive/already checked/out-of-range/not found/etc.)set_story_statusredirect-from-done behavior and missing-backlog warning behavior
- Grooming epic story sections (
- 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:CreateStorysignature changed to acceptstoryType; new helpers to update backlog + epic files.parser/index.go: index parsing now supports an optional “Type” column and defaults legacy rows tofeature.parser/story.go: acceptance-criteria parsing plus new “check one criterion” mutation function.
Full Changelog: v0.1.4...v0.1.6