Skip to main content
The Beads MCP (Model Context Protocol) server enables AI agents to manage issues through native tool calls. This is ideal for MCP-only environments like Claude Desktop.
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.

When to Use MCP

Use MCP

  • Claude Desktop (no shell access)
  • VS Code with GitHub Copilot
  • MCP-only environments
  • Natural language interfaces

Use CLI + Hooks

  • Claude Code
  • Cursor
  • Windsurf
  • Any environment with shell access

Installation

1

Install beads-mcp

Install from PyPI using uv (recommended):
uv tool install beads-mcp
Alternative installation methods:
# Using pip
pip install beads-mcp

# Using pipx
pipx install beads-mcp
2

Configure your AI client

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
  "mcpServers": {
    "beads": {
      "command": "beads-mcp"
    }
  }
}
3

Initialize Beads in your project

cd your-project
bd init --quiet
4

Restart your AI client

Restart Claude Desktop or reload VS Code window for configuration to take effect.

Available Tools

All tools support an optional workspace_root parameter for multi-project setups.
ToolDescriptionExample
beads_initInitialize bd in directory”Initialize beads here”
beads_createCreate new issue”Create a bug for login timeout”
beads_listList issues with filters”Show all P1 bugs”
beads_readyFind unblocked work”What can I work on?”
beads_showShow issue details”Show bd-42”
beads_updateUpdate issue fields”Set bd-42 to in-progress”
beads_closeClose completed issue”Close bd-42 as done”
beads_reopenReopen closed issue”Reopen bd-42”
beads_depAdd dependency”bd-99 blocks bd-42”
beads_dep_treeShow dependency tree”What blocks bd-42?”
beads_blockedGet blocked issues”Show blocked issues”
beads_statsGet project statistics”Show project stats”
beads_syncSync to git”Sync beads to git”
set_contextSet default workspace”Use /path/to/project”

Resources

ResourceDescription
beads://quickstartQuickstart guide for using beads

Multi-Repository Setup

Use one MCP server instance for all projects:
{
  "mcpServers": {
    "beads": {
      "command": "beads-mcp"
    }
  }
}
How it works:
  1. MCP server detects the beads project in your current workspace
  2. Routes requests to the per-project Dolt server
  3. Auto-starts local Dolt server if not running
  4. Each project gets isolated database access
Architecture:
MCP Server (one instance)

Per-Project Dolt Servers (one per workspace)

Dolt Databases (complete isolation)

Multi-Project Support

Every tool accepts an optional workspace_root parameter:
# Query issues from different projects concurrently
results = await asyncio.gather(
    beads_ready_work(workspace_root="/Users/you/project-a"),
    beads_ready_work(workspace_root="/Users/you/project-b"),
)

# Create issue in specific project
await beads_create_issue(
    title="Fix auth bug",
    priority=1,
    workspace_root="/Users/you/project-a"
)

Connection Pool

The MCP server maintains a connection pool keyed by canonical workspace path:
  • Each workspace gets its own Dolt server connection
  • Paths are canonicalized (symlinks resolved, git toplevel detected)
  • Concurrent requests use asyncio.Lock to prevent race conditions
  • No LRU eviction (keeps all connections open for session)

Environment Variables

All optional:
VariableDescriptionDefault
BEADS_PATHPath to bd executable~/.local/bin/bd
BEADS_DBPath to beads databaseAuto-discover from cwd
BEADS_WORKING_DIRWorking directory$PWD or current directory
BEADS_ACTORActor name for audit$USER
BEADS_NO_AUTO_FLUSHDisable auto syncfalse
BEADS_NO_AUTO_IMPORTDisable auto importfalse

Usage Examples

Natural Language Queries

You: What issues are ready to work on?
Claude: [Calls beads_ready]
There are 3 issues ready:
1. [P1] bd-42: Fix authentication timeout
2. [P2] bd-99: Add password reset flow
3. [P3] bd-17: Update API documentation

Creating Issues

You: Create a bug for the login timeout
Claude: [Calls beads_create]
Created bd-123: Fix login timeout [P1, bug]

Updating Issues

You: Set bd-42 to in-progress and claim it
Claude: [Calls beads_update]
Updated bd-42: status=in-progress, claimed by you

Tracking Dependencies

You: bd-99 blocks bd-42
Claude: [Calls beads_dep]
Added dependency: bd-99 blocks bd-42

Completing Work

You: Close bd-42 as done
Claude: [Calls beads_close]
Closed bd-42: Fix authentication timeout

You: Sync to git
Claude: [Calls beads_sync]
Synced 1 issue to git

Troubleshooting

Check installation:
which beads-mcp
beads-mcp --version
Verify PATH:
# If installed with uv
export PATH="$HOME/.local/bin:$PATH"

# Reinstall if needed
uv tool install beads-mcp --force
Restart client:
  • Claude Desktop: Quit and relaunch
  • VS Code: Reload window (Cmd/Ctrl + Shift + P → “Reload Window”)
Initialize beads in your project:
cd your-project
bd init --quiet
Check current context:
You: Where am I?
Claude: [Calls where_am_i]
Workspace: /path/to/project
Database: /path/to/project/.beads/prefix.db
Set explicit context:
You: Use /path/to/correct/project
Claude: [Calls set_context]
Context set to /path/to/correct/project
If you see connection issues, restart the Dolt server:
bd dolt stop
bd dolt start
The MCP server will automatically reconnect.
Ensure bd and beads-mcp are up to date:
# Update bd
brew upgrade beads
# or
go install github.com/steveyegge/beads/cmd/bd@latest

# Update beads-mcp
uv tool install beads-mcp --upgrade

Token Overhead Comparison

MCP adds significant token overhead compared to CLI + hooks.
ApproachToken OverheadCompute CostLatency
CLI + Hooks~1-2k tokensLowFast
MCP Server~10-50k tokensHigh (10-50x)Slower
Why the difference?
  • MCP requires full tool schemas in context
  • Each tool adds 1-5k tokens for schema definition
  • CLI just injects workflow instructions (~1-2k total)
When context doesn’t matter:
  • Very short conversations
  • MCP-only environments (no alternative)
When to prefer CLI:
  • Long conversations or coding sessions
  • Any environment with shell access
  • Multi-editor workflows

Development

Run MCP Inspector

cd beads/integrations/beads-mcp
uv run fastmcp dev src/beads_mcp/server.py

Type Checking

uv run mypy src/beads_mcp

Linting and Formatting

uv run ruff check src/beads_mcp
uv run ruff format src/beads_mcp

Testing

# Run all tests
uv run pytest

# With coverage
uv run pytest --cov=beads_mcp tests/

# Multi-repo integration test
bd dolt start
uv run python test_multi_repo.py

See Also

Claude Code

Recommended CLI + hooks integration

GitHub Copilot

Use MCP with VS Code Copilot

Aider Integration

Human-in-the-loop AI pair programming

Quick Start

Learn Beads basics

Build docs developers (and LLMs) love