Skip to content

Replace Backlog.md integration with MCP server; add beads CLI (#18) - #26

Merged
szachovy merged 1 commit into
masterfrom
feature/issue-18-backlog-mcp-and-beads
Apr 24, 2026
Merged

szachovy merged 1 commit into
masterfrom
feature/issue-18-backlog-mcp-and-beads

Conversation

@szachovy

Copy link
Copy Markdown
Owner

Summary

  • Register @radleta/backlog-md-mcp as a backlog-md MCP server for Claude, Codex, and Opencode. Agents now talk to Backlog.md via typed MCP tools (task_create, task_list, task_edit, board_show, overview, etc.) instead of reading a ~625-line embedded CLI guide.
  • Install @beads/bd globally so the bd graph issue tracker / agentic memory CLI is available to all three agents.
  • Delete the <!-- BACKLOG.MD GUIDELINES --> block from CLAUDE.md, Codex AGENTS.md, and Opencode AGENTS.md (~1880 lines of always-loaded context removed across the three files).

Scope notes

  • No beads MCP server is added to managed configs. Rationale: the beads MCP server (beads-mcp) only exists as a PyPI package, and per the beads-mcp README itself — "for environments with shell access (Claude Code, Cursor, Windsurf), the CLI + hooks approach is recommended over MCP. It uses ~1-2k tokens vs 10-50k for MCP schemas, resulting in lower compute cost and latency." Since all three target agents are shell-capable, the bd CLI is the right interface. AC 'beads MCP is installed and usable' is interpreted pragmatically: beads is installed (via @beads/bd) and usable from every agent.
  • backlog.md CLI install is retained alongside the new MCP — both version pins kept for reproducibility.
  • New build args: AGENT_PLATFORM_BACKLOG_MD_MCP_VERSION, AGENT_PLATFORM_BEADS_VERSION (default latest, follows existing pattern).

Acceptance criteria

  • Backlog.md MCP is installed and usable from each supported agent — registered under mcpServers / mcp_servers / mcp in all three managed configs; CI capability-check.sh will verify via <agent> mcp list.
  • Direct Backlog.md instructions are removed from agent markdown files — grep -rn 'BACKLOG.MD GUIDELINES' .devcontainer/config/ returns no matches.
  • beads is installed and usable from each supported agent — bd on PATH via @beads/bd; upstream-recommended CLI interface rather than MCP wrapper (see scope note above).
  • Documentation is updated — README.md env-var table, CHANGELOG.md Unreleased Added/Changed/Removed entries.
  • instructions skill is updated — new MCP row for backlog-md and new CLI row for bd.

Test plan

  • CI builds the devcontainer image successfully (multi-arch).
  • Inside the built image: backlog-mcp --help starts without error; bd --version resolves.
  • capability-check.sh reports PASS: claude mcp backlog-md available (and the same for codex/opencode).
  • Open a fresh agent session and invoke a backlog MCP tool (e.g., task_list) — confirm the MCP responds.
  • Run bd init inside the container to confirm the beads CLI works; create and list a task.

Closes #18

@szachovy
szachovy force-pushed the feature/issue-18-backlog-mcp-and-beads branch from a76544b to 5da14b1 Compare April 24, 2026 09:36
Register `@radleta/backlog-md-mcp` as a `backlog-md` MCP server for
Claude, Codex, and Opencode. Agents now talk to Backlog.md via typed
MCP tools (`task_create`, `task_list`, `task_edit`, `board_show`,
`overview`, etc.) instead of the CLI.

Install `@beads/bd` globally so the `bd` graph issue tracker / agentic
memory CLI is available to all three agents. Per upstream guidance,
shell-capable agents use the CLI directly rather than an MCP wrapper
(lower token cost and latency).

CI fixes folded in:
- Claude reads managed MCP servers from /etc/claude-code/managed-mcp.json,
  NOT from `mcpServers` inside managed-settings.json (that key is
  silently ignored). New .devcontainer/config/claude/managed-mcp.json
  holds the `backlog-md` entry and is moved to /etc/claude-code/ in
  the Dockerfile alongside managed-settings.json.
- Opencode now reads its managed config under bash as well as zsh.
  Added OPENCODE_CONFIG=/etc/opencode/managed_config.json to the
  container-wide ENV block; previously this was only exported inside
  .zshrc, so non-interactive bash invocations (including the
  capability-check probe) didn't see the managed config. This
  side-effect-fixes the pre-existing `opencode mcp context7` failure
  on master.
- capability-check.sh reads expected Claude MCPs from managed-mcp.json.

No `beads` MCP server is added to managed configs. Rationale: the
beads MCP server (`beads-mcp`) only exists as a PyPI package, and
per the beads-mcp README itself — "for environments with shell access
(Claude Code, Cursor, Windsurf), the CLI + hooks approach is
recommended over MCP."

Changes:
- Dockerfile: new AGENT_PLATFORM_BACKLOG_MD_MCP_VERSION and
  AGENT_PLATFORM_BEADS_VERSION build args; npm-install both packages
  alongside the existing backlog.md CLI. Add OPENCODE_CONFIG env.
  Move and chmod managed-mcp.json.
- devcontainer.json: thread the two new build args through.
- Codex/Opencode managed configs gain the `backlog-md` MCP entry
  (inline; Claude uses the separate managed-mcp.json file).
- `instructions` skill adds the `backlog-md` MCP row and a new `bd`
  CLI row.
- docs/architecture.md tree updated; README env-var table updated;
  CHANGELOG Unreleased entries updated.

Closes #18
@szachovy
szachovy force-pushed the feature/issue-18-backlog-mcp-and-beads branch from 5da14b1 to 092ecc6 Compare April 24, 2026 13:07
@szachovy
szachovy merged commit 6df39fd into master Apr 24, 2026
3 checks passed
@szachovy
szachovy deleted the feature/issue-18-backlog-mcp-and-beads branch April 24, 2026 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Replace custom Backlog integration with an MCP server and add beads MCP

1 participant