Created CHANGELOG.md for beads-mcp documenting: - Breaking change: ready() and list() now return list[IssueMinimal] | CompactedResult - Migration guide for clients expecting list[Issue] - Context engineering optimization details (~80% context reduction) Assessment complete: Current approach is correct: - Type "mismatch" is intentional two-layer architecture - Client layer returns List[Issue], MCP layer converts to minimal - Adding full=True would defeat context optimization purpose - CONTEXT_ENGINEERING.md already has migration guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Changelog
All notable changes to beads-mcp will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.41.0] - 2024-12-30
Changed
- Minor maintenance release
[0.24.0] - 2024-01-15
Changed
Breaking: Context Engineering Optimizations
The ready() and list() MCP tools now return list[IssueMinimal] or CompactedResult instead of list[Issue]. This breaking change reduces context window usage by ~80%.
What changed:
ready()returnslist[IssueMinimal] | CompactedResult(waslist[Issue])list()returnslist[IssueMinimal] | CompactedResult(waslist[Issue])show()still returns fullIssue(unchanged)
IssueMinimal includes:
id,title,status,priority,issue_typeassignee,labels,dependency_count,dependent_count
IssueMinimal excludes (use show() for these):
description,design,acceptance_criteria,notescreated_at,updated_at,closed_atdependencies,dependents(full objects)
CompactedResult (returned when >20 results):
{
"compacted": True,
"total_count": 47,
"preview": [/* first 5 IssueMinimal */],
"preview_count": 5,
"hint": "Use show(issue_id) for full details"
}
Migration guide:
-
Check for compacted results:
if isinstance(response, dict) and response.get("compacted"): issues = response["preview"] else: issues = response -
Use
show()for full details:for issue in issues: full_issue = show(issue_id=issue.id) print(full_issue.description) -
Available options for list operations:
brief=True- ReturnsBriefIssue(id, title, status, priority only)fields=["id", "title"]- Custom field projectionmax_description_length=100- Truncate descriptions
Rationale:
- Reduces context usage from ~400 bytes/issue to ~80 bytes/issue
- Prevents context overflow for large issue lists (>20 items)
- Encourages efficient "list then show" pattern for AI agents
See CONTEXT_ENGINEERING.md for full migration guide.
Added
discover_tools()- Lightweight tool catalog for lazy schema loadingget_tool_info(tool_name)- On-demand tool detailsCompactedResultmodel for large result setsIssueMinimalmodel for list viewsBriefIssuemodel for ultra-compact responsesbrief,fields,max_description_lengthparameters for all list operations- Environment variables for compaction tuning:
BEADS_MCP_COMPACTION_THRESHOLD(default: 20)BEADS_MCP_PREVIEW_COUNT(default: 5)
[0.23.0] and earlier
See git history for changes prior to context engineering optimizations.