Skip to main content

MCP Server

Kanban Lite ships a first-class Model Context Protocol server so AI agents can read and mutate your boards using natural language. Works with Claude Code, Cursor, OpenCode, and any MCP-compatible client.

  • 40+ tools covering boards, cards, columns, comments, logs, attachments, webhooks, and storage
  • Consistent search semantics shared with the CLI and REST API (searchQuery, fuzzy, metaFilter)
  • Stdio transport — start with kl mcp or via npx kanban-lite mcp
  • All mutations go through the same SDK paths as the UI and CLI
Claude Code setup (.claude/settings.json)
{
  "mcpServers": {
    "kanban": {
      "type": "stdio",
      "command": "npx",
      "args": ["kanban-lite", "mcp"],
      "env": { "KANBAN_DIR": "/path/to/your/project/.kanban" }
    }
  }
}

MCP Server

Expose your kanban board to AI agents (Claude, Cursor, etc.) via the Model Context Protocol.

Setup with Claude Code

Add to your .claude/settings.json:

{
  "mcpServers": {
    "kanban": {
      "type": "stdio",
      "command": "npx",
      "args": ["kanban-lite", "mcp"],
      "env": {
        "KANBAN_DIR": "/path/to/your/project/.kanban"
      }
    }
  }
}

Or run directly:

kl mcp                          # Auto-detect directory
kl mcp --dir .kanban            # Explicit directory
kanban-mcp --dir .kanban        # Via dedicated binary

Available Tools

Tool Description
list_boards List all boards in the workspace
create_board Create a new board with optional custom columns
get_board Get board configuration and details
delete_board Delete an empty board
list_board_actions List all named actions defined on a board
add_board_action Add or update a named board action
remove_board_action Remove a named board action
trigger_board_action Trigger a board action webhook event
transfer_card Move a card from one board to another
list_cards List/filter cards by status, priority, assignee, label, searchQuery, fuzzy, and metaFilter
get_card Get full details of a card (supports partial ID matching)
get_card_state_status Get the active card.state provider status for the workspace
get_card_state Get the side-effect-free unread/open summary for one card
open_card Explicitly acknowledge unread activity and persist actor-scoped open-card state
read_card Explicitly acknowledge unread activity without changing open-card state
get_active_card Get the currently active/open card, or null if none is active
create_card Create a new card with title, body, status, priority, metadata, forms, and formData
update_card Update fields of an existing card, including forms and formData
submit_card_form Validate and submit a card form payload through the shared SDK workflow
move_card Move a card to a different status column
delete_card Permanently delete a card
trigger_action Trigger a named action on a card, calling the configured action webhook
list_attachments List attachments on a card
add_attachment Attach a file to a card (copies to card directory)
remove_attachment Remove an attachment reference from a card
list_comments List comments on a card
add_comment Add a comment to a card
update_comment Edit a comment's content
delete_comment Remove a comment from a card
list_logs List log entries on a card
add_log Add a log entry to a card
clear_logs Clear all log entries from a card
list_board_logs List board-level log entries
add_board_log Add a board-level log entry
clear_board_logs Clear all board-level log entries
list_columns List all board columns
add_column Add a new column to the board
update_column Update a column's name or color
remove_column Remove a column (must be empty)
get_settings Get board display settings
update_settings Update board display settings
list_webhooks List registered webhooks
add_webhook Register a new webhook
update_webhook Update a webhook (url, events, secret, active)
remove_webhook Remove a webhook
get_workspace_info Get workspace root path, kanban directory, and active storage provider metadata

For agent-driven search, pass searchQuery for free text (including inline tokens like meta.team: backend), set fuzzy: true to widen matching across text and metadata values, or use metaFilter when you want structured dot-notation field filters. | get_storage_status | Get current card/attachment storage provider status | | migrate_to_sqlite | Migrate all card data from markdown to SQLite | | migrate_to_markdown | Migrate all card data from SQLite back to markdown files |

All card, column, comment, and attachment tools accept an optional boardId parameter to target a specific board.