Local-first MCP server for task tracking and coordination of autonomous AI coding agents.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
rhizome-mcp is a local-first MCP server for task tracking and coordination of autonomous AI coding agents. It gives agents from different products β Claude Code, Codex, GitHub Copilot, VS Code, and any other MCP-compatible client β a shared, durable view of project work: one static Go binary, one SQLite database per project, no accounts, no Docker, no network dependency.
AI coding agents are concurrent, context-limited, and interruptible. A TODO.md or a single chat context doesn't survive that. rhizome-mcp is built around those failure modes:
in_progress is never a stored status β it is derived from an active lease, so a vanished agent can't lock an issue forever. When the lease expires, the issue becomes claimable again. A partial unique index guarantees at most one active attempt per issue at the database level.blocks relations, epics, claimable entry-point highlighting, and atomic batch planning (up to 50 issues, 100 relations, and 20 decisions in one all-or-nothing transaction).rhizome-mcp board prints live leases, blockers, and the review queue, or writes a self-contained HTML snapshot; the CLI reads everything as tables, JSON, Markdown, or Mermaid.Use it when several agent sessions (or several agent products) work the same repository over time and you need handoffs, parallel work, and recovery after crashes or context limits.
Skip it if you need a hosted multi-user tracker with auth, permissions, and a web UI β this is a local single-developer tool by design.
Choose the approach that matches your workflow:
Try rhizome-mcp immediately with no separate binary install, no Go toolchain:
Works with any MCP client. See packages/npm/README.md for platform coverage. Great for quick evaluation.
Install Rhizome MCP (odrin.rhizome-mcp) from the Marketplace or Open VSX. The extension bundles the platform binary, registers the MCP server automatically, and adds Rhizome: Initialize Project to the Command Palette. No terminal, no mcp.json editing. Details: docs/10-vscode-extension.md.
Prefer a standalone binary with a plain mcp.json entry instead? Install the binary below and use this one-click link: Add to VS Code.
Download and install a release binary for your platform. Verifies checksums, installs to ~/.local/bin by default:
Use rhizome-mcp via the official MCP Registry, available in the Model Context Protocol registry as io.github.Odrin/rhizome-mcp for clients that consume the registry.
Initialize tracking inside your repository:
Then register the server with your MCP client. Automated setup for common clients:
Use --print for a dry run. The manual equivalent for any MCP client:
or, via npx, without installing a binary at all:
Run serve with the repository as its working directory. Stdio is the default transport; protocol output goes to stdout, logs to stderr.
That's it β connected agents start with open_project using the absolute repository root, retain its project_ref, and pass that reference to later project-scoped calls. The returned metadata links the rhizome://guides/agent-workflow, rhizome://guides/issue-lifecycle, and rhizome://guides/multi-agent-handoff resources, and repository agents can load the rhizome-task-workflow skill from .github/skills/.
For agents that support the open Agent Skills format, install rhizome-task-workflow with the npm-distributed skills CLI:
Run the command in a project for a project-scoped installation, or add --global to make the skill available across projects. The skill teaches compatible agents how to select, claim, checkpoint, hand off, and finish Rhizome work. It complements the MCP server; it does not install the rhizome-mcp binary or configure an MCP connection.
The bound endpoint is logged to stderr; the Streamable HTTP endpoint is http://127.0.0.1:<port>/mcp. The transport is loopback-only, unauthenticated, and enforces strict Host/Origin validation plus a 1 MiB outer request body limit. Modern MCP 2026-07-28 clients call server/discover and then send direct requests with protocol metadata; legacy 2025-11-25 clients can still use initialize and notifications/initialized without relying on a persistent transport session. If you want durable audit attribution, create an explicit agent_session_handle with create_agent_session, pass it to the relevant mutating tools, and end it later with end_agent_session; transport closure never ends it.
init writes exactly one file into the repository:
stored as .agent-tracker.json. The SQLite database lives outside the repository in the platform application-data directory, resolved through project_id:
Use --data-root PATH to select an explicit data root for any command. Nothing else touches your repository, and the database is never committed to Git.
Design principle: an issue must never remain permanently stuck in in_progress. Effective status is computed from stored status plus the presence of an active leased attempt; if the agent disappears and the lease expires, the attempt becomes expired and the issue is available again when its stored state permits it.
Core constraints (by design): Go, SQLite (modernc.org/sqlite, pure Go, CGO-free), stdio as the primary transport, one database per project, no web UI, no authentication, minimal CLI. Deferred features are listed in docs/06.
| Command | Purpose |
|---|---|
init | Create .agent-tracker.json and the project database |
serve | Run the MCP server (stdio; --http-address for local HTTP; --profile to narrow the advertised tool catalog) |
connect TARGET [--print] | Register the server with an MCP client (claude, codex, vscode, json) |
board [--output PATH] | Status board: counts, leases, blockers, review queue; optional HTML snapshot |
issue list / issue show ISSUE-ID | Inspect issues with filters |
search QUERY | Full-text search across issues, comments, decisions, notes |
graph ISSUE-ID | Dependency graph as table, JSON, or Mermaid |
project info / project export | Project metadata; logical JSON export |
backup --output PATH | WAL-safe online backup |
doctor [--full] | Integrity, schema, and invariant checks |
maintenance release-attempt / rebuild-search-index | Administrative recovery |
Run rhizome-mcp without arguments for complete usage, rhizome-mcp version for build information.
The server exposes 32 tools covering the full lifecycle: project discovery, issue CRUD with labels and relations, planning and dependency graphs, batch plan validation/apply, comments and decisions, claim/renew/checkpoint/finish work attempts, work-context assembly, review requests, full-text search, delta changes, and logical project export/import. The complete contract, including the MCP tool annotation matrix and the full/agent/read-only/migration exposure profile matrix, is in docs/03-mcp-tools.md.
By default serve advertises the complete full catalog. Pass --profile agent|read-only|migration (or set TOOL_PROFILE) to narrow it β for example serve --profile read-only for a client that should never see a mutating tool. Profiles are an exposure and prompt-size control, not an authorization boundary: every tool still enforces its own server-side validation regardless of what a client can see in tools/list.
The modular files under docs/ are the canonical specification; SPEC.md is the index. Agents should load only the sections relevant to their current task (AGENT_BRIEF.md explains how).
Guides for humans (quick start, workflow, CLI) live in site/ and are published via GitHub Pages. Release history is in the CHANGELOG.
Build and test (no CGO, no external services):
The integration tag runs real-process MCP smoke and workflow tests: they build a temporary server binary, initialize a fresh repository and SQLite data root per test, and speak to serve over stdio or HTTP. Beyond single-process smoke coverage, the suite also exercises cross-process scenarios on one shared SQLite data root β concurrent claim and update-version races, an ungraceful process kill and restart, and a backup taken while a server is writing β to catch defects a single-process test structurally cannot see. Most live in the dedicated integration package; tests that need unexported package-main internals stay at the repository root.
CI runs go vet, unit, and integration tests on Ubuntu, macOS, and Windows for every push and pull request targeting main. Releases (.github/workflows/release.yml) publish CGO-free binaries with SHA-256 checksums for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, and windows/amd64; release binaries embed the version, commit, and build timestamp (local builds report git VCS info or dev, and the VERSION environment variable overrides both).
This repository tracks its own backlog in rhizome-mcp: work is selected, claimed, and finished through the MCP server, and durable choices are recorded as decisions. Markdown holds specification only, not task status. See AGENTS.md and CONTRIBUTING.md.
Apache-2.0. Security policy: SECURITY.md.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/rhizome-mcp)<a href="https://allmcps.com/mcp/rhizome-mcp"><img src="https://allmcps.com/api/badge/rhizome-mcp?style=directory" alt="Rhizome MCP on AllMCPs" /></a>