Skip to main content
Glama

sanban

Simple kanban that just works. No bloat, no login, no SaaS.

JSON-backed boards with a REST API, MCP server, and a dark UI. For devs who want tasks tracked without the overhead.

Screenshots

Welcome Board

Related MCP server: Obsidian Kanban MCP Server

Quick Start

uv sync
uv tool install .
sanban              # http://localhost:8900

The web server runs independently. Agents connect via MCP separately.

Setup with an AI Agent

Paste this into opencode, Claude Code, Cursor, or any AI agent — it will install sanban, start the server, register MCP, load the skill, and verify everything:

Clone https://github.com/aancw/sanban, run `uv tool install .` from inside the repo (binary lands at ~/.local/bin/sanban — ensure ~/.local/bin is on PATH, e.g. `export PATH="$HOME/.local/bin:$PATH"`), start the server with `sanban` running in the background (or nohup/disown), register it as an MCP server named "sanban" running `sanban --mcp-only`, copy SKILL.md from the cloned repo into the agent's skills folder (e.g. ~/.claude/skills/sanban/SKILL.md or ~/.agents/skills/sanban/SKILL.md), then call `list_boards` to confirm it works.

Features

  • Multiple boards with custom columns

  • Drag-and-drop between columns

  • Priority, effort, tags, assignees, due dates

  • Full-text search and filters

  • Markdown in titles and descriptions (code blocks with syntax highlighting)

  • Edit and delete buttons on every card

  • Keyboard shortcuts (/ search, n new, e expand)

  • Agent-ready via MCP server

Why

  • No database — one JSON file per board in ~/.sanban/boards/, easy to diff, commit, back up

  • No auth — local-first, runs on localhost

  • No framework — vanilla JS frontend, Geist font, dark mode

  • Multi-board — one server, unlimited boards

REST API

Method

Endpoint

Description

GET

/api/boards

List all boards

POST

/api/boards

Create board { name, columns? }

GET

/api/boards/:id

Get board with items

DELETE

/api/boards/:id

Delete board

GET

/api/boards/:id/items

List items (?q=, ?status=, ?tag=, ?assignee=)

POST

/api/boards/:id/items

Create item

PATCH

/api/boards/:id/items/:iid

Update item

DELETE

/api/boards/:id/items/:iid

Delete item

GET

/api/search?q=

Search across boards

MCP Server

Agents interact with boards via MCP stdio. This is a separate process from the web server — both read/write the same JSON files.

Agent Config (opencode.json)

{
  "mcp": {
    "sanban": {
      "type": "local",
      "command": ["sanban", "--mcp-only"],
      "enabled": true
    }
  }
}

Or running from source:

{
  "mcp": {
    "sanban": {
      "type": "local",
      "command": ["uv", "run", "--directory", "/path/to/sanban", "python", "-m", "sanban.server", "--mcp-only"],
      "enabled": true
    }
  }
}

Other agents: Adapt the config format for your CLI agent (Claude Desktop, Cursor, etc.). The command is always sanban --mcp-only — only the config wrapper changes.

Tools

Tool

Description

list_boards

List all boards

create_board(name, columns?)

Create a new board

get_board(board_id)

Get board details + items

create_item(board_id, title, ...)

Add an item

update_item(board_id, item_id, ...)

Update fields

move_item(board_id, item_id, new_status)

Move to column

delete_item(board_id, item_id)

Remove item

search(query, board_id?)

Search across boards

Run Modes

sanban                # web server (REST API + UI) — keep this running
sanban --mcp-only     # MCP stdio — for agent config
sanban --rest-only    # REST only, no UI
sanban --port 9000    # custom port

Typical setup: run sanban in a terminal (or background it), then add sanban --mcp-only to your agent config. Both use the same ~/.sanban/boards/ data.

Data

Boards live in ~/.sanban/boards/<id>.json. Override with SANBAN_DATA_DIR.

For Agents

See SKILL.md for the full agent reference — API examples, MCP tools, item fields, and keyboard shortcuts.

Tech

Python 3.10+, FastAPI, uvicorn, MCP SDK. No database, no framework, no build step.

License

MIT

Available Tools

8 tools
create_boardA

Create a new kanban board.

Args: name: Board name columns: Column names (default: backlog, in_progress, done)

Inputs: name (required), columns. Returns: result

create_itemB

Create an item on a board.

Args: board_id: Board ID title: Item title status: Column/status to place it in description: Full description priority: critical/high/medium/low/none effort: XS/S/M/L/XL tags: List of tags assignee: Assigned person due_date: Due date (ISO format)

Inputs: board_id (required), title (required), status, description, +5 more. Returns: result

delete_itemC

Delete an item from a board.

Args: board_id: Board ID item_id: Item ID

Inputs: board_id (required), item_id (required). Returns: result

get_boardB

Get board details and all items.

Args: board_id: Board ID

Inputs: board_id (required). Returns: result

list_boardsA

List all kanban boards.

Inputs: no named parameters. Returns: result

move_itemB

Move an item to a different column/status.

Args: board_id: Board ID item_id: Item ID new_status: Target column name

Inputs: board_id (required), item_id (required), new_status (required). Returns: result

update_itemC

Update an item's fields.

Args: board_id: Board ID item_id: Item ID title: New title status: New status/column description: New description priority: New priority effort: New effort estimate tags: New tags list assignee: New assignee due_date: New due date sort_order: New sort order

Inputs: board_id (required), item_id (required), fields (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clear, distinct purpose: board creation, item CRUD, movement, and search. No overlap in functionality.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (e.g., create_item, delete_item). The 'search' tool deviates slightly without a noun, but it's a common, acceptable exception.

    Tool Count5/5

    8 tools is well-scoped for a kanban board server, covering essential operations without excess.

    Completeness3/5

    Covers core item CRUD and board creation/listing, but missing board update and delete operations, which are notable gaps for full lifecycle management.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers