This tutorial covers how to add the [Beads MCP Server](https://github.com/steveyegge/beads) as a goose extension. Beads is a distributed, git-backed issue tracker designed for AI agents. It enables persistent task tracking with dependency management, so multiple goose sessions can coordinate work on complex projects.
[Launch the installer](goose://extension?cmd=uvx&arg=beads-mcp&id=beads&name=Beads&description=Git-backed%20issue%20tracker%20for%20AI%20agent%20task%20management)
</TabItem>
<TabItem value="cli" label="goose CLI">
**Command**
```sh
uvx beads-mcp
```
</TabItem>
</Tabs>
:::
## Configuration
:::info
Note that you'll need [uv](https://docs.astral.sh/uv/#installation) installed on your system to run this command, as it uses `uvx`.
:::
:::note Troubleshooting
If the extension fails to start with `ModuleNotFoundError: No module named 'packaging'` (fixed in versions after 0.49.1), run:
description="Git-backed issue tracker for AI agent task management"
type="stdio"
command="uvx"
args={["beads-mcp"]}
/>
</TabItem>
<TabItem value="cli" label="goose CLI">
<CLIExtensionInstructions
name="beads"
description="Git-backed issue tracker for AI agent task management"
type="stdio"
command="uvx beads-mcp"
timeout={300}
/>
</TabItem>
</Tabs>
## Example Usage
In this example, we'll use Beads to coordinate building an expense tracker web app across **multiple parallel sessions**. This demonstrates how Beads enables multiple goose instances to work on the same project without conflicts.
### Overview
We'll run **4 goose sessions**:
1. **Step 1**: Create all tasks with dependencies
2. **Step 2**: Build frontend tasks
3. **Step 3**: Build backend tasks (in parallel with Step 2)
4. **Step 4**: Wait for blockers, then wire everything together
---
### Step 1: Plan the Project
Create a new directory and start a goose session.
#### goose Prompt
```
I want to build an expense tracker web app. Initialize beads and create all tasks with dependencies:
Frontend tasks:
- "HTML Structure" - create form, expense list, total display (no dependencies)
- "CSS Styling" - style the app (depends on "HTML Structure")
- "Wire Up UI" - connect buttons to functions (depends on "CSS Styling" AND all backend tasks)
Backend tasks:
- "Storage Setup" - localStorage helpers to save/load expenses (no dependencies)
- "Add Expense" - function to add expense to storage (depends on "Storage Setup")
- "Calculate Total" - function to sum all expenses (depends on "Storage Setup")
- "Delete Expense" - function to remove expense (depends on "Storage Setup")
Show me all tasks and which ones are ready to work on.
```
#### goose Output
```
I'll initialize beads and create all the tasks with their dependencies.
─── context | beads ──────────────────────────
action: init
─── create | beads ──────────────────────────
title: HTML Structure
description: Create form, expense list, and total display for the expense tracker app
labels: frontend
─── create | beads ──────────────────────────
title: Storage Setup
description: Create localStorage helpers to save/load expenses
labels: backend
─── create | beads ──────────────────────────
title: CSS Styling
deps: ultimate-beads-test-987
description: Style the expense tracker app with CSS
labels: frontend
─── create | beads ──────────────────────────
title: Add Expense
deps: ultimate-beads-test-6gs
description: Function to add expense to storage
labels: backend
─── create | beads ──────────────────────────
title: Calculate Total
deps: ultimate-beads-test-6gs
description: Function to sum all expenses
labels: backend
─── create | beads ──────────────────────────
title: Delete Expense
deps: ultimate-beads-test-6gs
description: Function to remove expense from storage