kanbn-mcp
An MCP server that lets AI agents inspect and manage Kanbn markdown-based project boards end-to-end — boards, tasks, columns, relations, sprints, contributors, and search — without direct shell access.
Board lifecycle: check status, initialize/ensure a board, create/rename/delete secondary boards, list boards and summaries, check existence, validate slugs, list reserved slugs, and analyze orphaned or cross-board tasks.
Task CRUD: create, get, edit, rename, move between columns, delete, archive/unarchive/restore, and comment on tasks.
Relations: add, remove, or authoritatively replace a task's relation edges (e.g.
depends-on,blocks).Simple tasks: find, resolve, move (including to another board), delete, and promote inline column entries into real task files.
Index & file health: list tracked/untracked tasks, find missing task files, add untracked tasks or existing task files to a board, find a task's column or referencing boards, and check file/existence.
Search & sorting: filter tasks across all columns by tags, assignee, dates, progress, relations, and custom fields; sort columns by field/order with optional regex filters.
Sprints & metrics: start sprints, generate burndown chart data, and view sprint/overdue/date-scoped status.
Contributors: list, resolve, detect the current user, collect in-use values, report usage variants, and warn on unknown contributors.
Config & rules: get/save board config, resolved action rules and their warnings, date format, task template, and workspace options; validate the board.
Destructive operations: delete an entire board directory (
kanbn_delete_board) or wipe all board data (kanbn_remove_all, requiresconfirm: true).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kanbn-mcp show me all tasks in the In Progress column"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kanbn-mcp
A Model Context Protocol (MCP) server for working with Kanbn boards from AI assistants and other MCP clients.
This project wraps the Kanbn task and board APIs so tools like an LLM agent can inspect board state, initialize boards, create, delete, and archive tasks, and move tasks between columns without requiring direct shell access.
Why this exists
Kanbn is a powerful markdown-based project board system. This project exposes a small, tool-based interface around that functionality so it can be used from MCP-compatible clients and automation.
Related MCP server: kanban-tui
Dependencies
This project depends on the Kanbn library from:
In this repo, that dependency is installed via npm as:
@basementuniverse/kanbn
This project also works well alongside the optional VS Code extension from:
That extension is not required for the MCP server to function, but it is useful if you want a first-party editor experience for the same Kanbn workflow in Visual Studio Code.
Features
The MCP server currently exposes tools for:
checking board status
initializing a board
ensuring a board exists
creating tasks with Kanbn metadata
editing existing tasks
moving tasks between columns
deleting tasks
archiving tasks
unarchiving tasks
retrieving individual task details
deleting entire boards
Project structure
src/server.ts— the MCP server implementation and tool handlerssrc/setup/— thekanbn-mcp setupandkanbn-mcp installcommands: questions, canonical guidance renderer, per-client envelopes, MCP client registration, uninstallskills/kanbn/SKILL.md— the generic agent-facing skill shipped with the packagekanbn.d.ts— type declarations for the Kanbn dependencytests/kanbn-mcp.test.ts,tests/setup.test.ts— unit tests covering commands, task field handling, and setup/install emission/registration
Installation
From npm
npm install -g @kduling/kanbn-mcpThis installs a kanbn-mcp binary on your PATH. Run kanbn-mcp --help to print usage and ready-to-paste configuration snippets.
Two-step setup (recommended):
kanbn-mcp install # register MCP server + install global skills (no board questions)
kanbn-mcp setup # guided board configuration (writes guidance files)Or combined (legacy):
kanbn-mcp setup --mcp # does both (deprecated; will be removed)The binary runs as the MCP server by default; hosts that pass a subcommand-style argument can call kanbn-mcp mcp instead.
From source
git clone git@github.com:kjduling/kanbn-mcp.git
cd kanbn-mcp
npm install
npm run buildFrom a source checkout, run the server with node dist/server.js and use the same configuration snippets below with "command": "node" and "args": ["/path/to/kanbn-mcp/dist/server.js"].
MCP client configuration
Point your MCP client at the kanbn-mcp command from the global install. The important parts are:
command:kanbn-mcp(afternpm install -g @kduling/kanbn-mcp)args: usually empty;kanbn-mcpaccepts a literalmcpargument for hosts that expect a subcommand-style arg (e.g."args": ["mcp"]); some hosts (e.g. Cline) expect a placeholder such as[""]
opencode
// ~/.config/opencode/opencode.json
{
"mcp": {
"kanbn": {
"type": "local",
"command": ["kanbn-mcp"],
"enabled": true
}
}
}Claude Desktop / other "mcpServers" hosts
{
"mcpServers": {
"kanbn": {
"command": "kanbn-mcp",
"args": []
}
}
}Cline
Current Cline (extension, CLI, and SDK) reads one unified config at ~/.cline/data/settings/cline_mcp_settings.json; the legacy VS Code extension path (Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json) is migrated to it automatically and kept as a fallback.
Guidance-wise Cline reads project rules from .clinerules/ at the workspace root, and skills from .cline/skills/, .clinerules/skills/, .claude/skills/, or .agents/skills/. A default setup writes the universal AGENTS.md block; if you want Cline's native project files as well, opt in with setup --host=cline (writes .clinerules/kanbn.md + .cline/skills/kanbn/SKILL.md), and kanbn-mcp install puts the board-neutral global skill at ~/.cline/skills/kanbn/SKILL.md for detected hosts. Rules only apply to the folder you have open as the Cline workspace root — for guidance on other folders run setup in each project or rely on the global skill.
{
"mcpServers": {
"kanbn": {
"transport": {
"type": "stdio",
"command": "kanbn-mcp",
"args": [""]
}
}
}
}Use the same pattern in any other MCP-compatible host such as a local editor or agent runtime.
GitHub Copilot (VS Code)
VS Code's Copilot Chat integration reads one unified MCP config per user at ~/Library/Application Support/Code/User/mcp.json (Linux: ~/.config/Code/User/mcp.json; Windows: %APPDATA%\Code\User\mcp.json). install --mcp registers into it:
{
"servers": {
"kanbn-mcp": {
"command": "kanbn-mcp",
"type": "stdio"
}
},
"inputs": []
}VS Code launches the server with the open workspace root as its working directory, so the board resolves per-project exactly as with the other clients — open/or set up the project containing .kanbn and Copilot manages that board. After registering, open Copilot Chat → model picker → MCP servers and enable kanbn-mcp. The project-scoped alternative is .vscode/mcp.json in the repo (same servers shape).
Copilot reads the board guidance the same way it reads everything else in a project:
AGENTS.mdat the workspace root — always-on, read automatically (the universal envelope, emitted by default)..github/skills/kanbn/SKILL.md— Copilot's workspace skill (--host=copilotemits it alongsideAGENTS.md).~/.copilot/skills/kanbn/SKILL.md— Copilot's personal skill, installed bykanbn-mcp installfor detected hosts, alongside the same run's~/.cline/skills//~/.config/opencode/skills/global skills for the other clients.
Which board does the server use?
With no extra configuration the server reads the board from its working directory — the directory the MCP host launches the server in. Open the host in your project root (the directory containing the .kanbn folder) and it manages that board. When the host launches the server from your home directory (common for a globally installed command), the server looks there instead.
Kanbn boards are markdown files; nothing stops a freshly launched agent from re-inventing the board's vocabulary (columns, tags, WIP limits). kanbn-mcp setup closes that loop: one short Q&A about how the board works, and the answers are written as AI-agnostic guidance into the files each client reads. Any agent that can see the repo — opencode, Claude, Windsurf, Cline, Devin, or a future one — knows the conventions before it touches a ticket.
Separation of concerns:
kanbn-mcp install— wires the MCP server into AI client configs and installs global skills. No board questions.kanbn-mcp setup— board configuration Q&A + per-project guidance envelopes. No MCP registration or global skills.
# Step 1: install (one-time per machine/project)
kanbn-mcp install # all detected hosts
kanbn-mcp install --host=opencode # one host only
kanbn-mcp install --mcp # also register MCP server in client configs
# Step 2: setup (per project)
kanbn-mcp setupThe questions (all with defaults — Enter accepts, and re-runs amend rather than re-ask from scratch):
board columns and what each means
type tags:
bug/feature/documentation/spike(each with a description)priority tags:
critical/high/medium/lowtag style:
typ:bug/pri:criticalprefixes, or plainbug/criticalenforce type/priority tags on every ticket, or guide-only (default)
WIP limits per column (default: none)
custom fields (
name:type[:required], default: none)mirror directed relations on both tasks (depends-on ⇄ blocks, duplicate-of ⇄ duplicated-by; default on)
The answers render into one canonical guidance body, written to the project's AGENTS.md (guarded block) — the one universal file every agent reads. A default setup writes nothing else into the project: no dot-directories for agents that may not be in use. Per-host project files are opt-in via --host=<slug>:
File | Readers | Opt-in via |
| universal — every agent | default, always |
| opencode project skill |
|
| Claude Code |
|
| Cline rules + project skill |
|
| Windsurf |
|
| GitHub Copilot workspace skill |
|
| Cursor |
|
| Continue |
|
| Roo Code |
|
| Aider |
|
| Gemini CLI |
|
| Codex |
|
The per-user side lives in $HOME and is install's job: board-neutral global skills for detected hosts only (~/.config/opencode/skills/kanbn/SKILL.md, ~/.claude/skills/kanbn/SKILL.md, ~/.cline/skills/kanbn/SKILL.md, ~/.copilot/skills/kanbn/SKILL.md). Nothing is ever written for an agent that isn't installed.
Answers persist to $HOME/.kanbn/kanbn-mcp-config.json as configuration only — no install log, and no config file inside the project itself (a board holds only board files). The file carries the global default answers plus per-project overrides keyed by the project root; resolution is per-field (defaults ← global answers ← project overrides). Re-runs amend instead of duplicating, and kanbn-mcp uninstall recomputes everything it should remove from that config plus host detection (nothing to go stale) while deliberately leaving the config itself behind.
Flags for kanbn-mcp setup
Flag | Effect |
| non-interactive: accept defaults (or amend persisted answers) |
| import answers from a JSON file (non-interactive) |
| amend this project's overrides in the global config, seeded from the global defaults; the global answers and the project section never write each other |
| additionally emit that host's own project file (comma-separated: |
| write repo files only (the default) |
| list detected clients and target files; change nothing |
| show what would be written; change nothing |
| print the canonical guidance + manual install instructions for any client; change nothing |
| report the recomputed guidance targets from the config (read-only; no state file) |
The canonical body is client-neutral — it names only kanbn-mcp MCP tools, never a specific AI. kanbn-mcp setup --print gives copy-paste install instructions for any client, including ones setup does not know about (e.g. a future host): point its MCP config at the kanbn-mcp command and drop the printed prose into wherever that client reads rules.
Flags for kanbn-mcp install
Flag | Effect |
| register the kanbn MCP server in detected client configs — |
| install global skill + MCP registration for |
| list detected clients and target files; change nothing |
| show what would be written; change nothing |
| report current install state |
Flags for kanbn-mcp uninstall
Flag | Effect |
| uninstall only the specified hosts (comma-separated); if omitted, uninstalls all hosts |
| report current install state (alias for |
Non-interactive runs (CI)
--yes writes guidance with the defaults; --json imports a partial answers file — anything omitted falls back to defaults:
{
"tagStyle": "plain",
"wipLimits": { "In Progress": 3 },
"customFields": [{ "name": "severity", "type": "string", "required": true }]
}Installing the shipped skill by hand
The npm package ships a generic skill at skills/kanbn/SKILL.md. To install it globally without --host, copy it into place:
opencode:
~/.config/opencode/skills/kanbn/SKILL.mdClaude:
~/.claude/skills/kanbn/SKILL.mdany other skill-reading client: its own skills directory
Removing
kanbn-mcp uninstall removes every guidance block and registration kanbn-mcp install or kanbn-mcp setup wrote. It recomputes its target set from the resolved board config plus host detection — there is no stored manifest to go stale — and still guards every write: it leaves user-authored content alone and will not remove a client config entry it did not create.
Test
npm testAvailable tools
Tool | Description |
| Check the current status of the Kanbn board |
| Initialize a new Kanbn board |
| Alias for |
| Ensure a Kanbn board exists, initializing if absent |
| Create a new task with metadata |
| Delete a task from the board (supports |
| Archive a task on the board |
| Retrieve details of a specific task |
| Edit an existing task on the board |
| Move a task between columns |
| Rename a task (returns the new task id) |
| Delete an entire board directory |
| Unarchive a task on the board |
| Alias for |
| Find simple tasks by title (or all on the board) |
| Resolve exactly one simple task by title |
| Move a simple task to another column |
| Move a simple task onto another board |
| Remove a simple task from the board |
| Convert a simple task into a real task file |
| Create a new secondary board |
| Delete a secondary board file, returning orphaned task IDs |
| Rename a secondary board (slug and/or name) |
| List all boards in the workspace |
| Summary of each board with task statistics |
| Check whether a board exists |
| List reserved board slugs |
| Validate a board slug (throws on invalid/reserved) |
| Find tasks only referenced by one board |
| Find tasks appearing on more than one board |
| Map each task to other boards referencing it |
| Sort a board column (name/created/modified/due/assigned/progress) |
| Add a comment to a task |
| Get the Kanbn config, or null if none exists |
| Save the Kanbn config to a config file |
| Get the resolved action rules for the board |
| Get potential issues with the action rules |
| Get the board's date format string |
| Get the board's task template string |
| Get workspace-scoped Kanbn options |
| Validate the board (true or list of parsing errors) |
| Search tasks with filters (tag, assigned, due, etc.) across all columns |
| Get the workspace's normalised contributors |
| Match a value to a contributor (name, display name, aliases) |
| Resolve the current user (KANBN_USER, then git identity) |
| Collect every assigned/author value in use |
| Contributor usage stats with spelling variants |
| Unknown contributor warnings |
| Burndown chart data (sprints, dates, assigned, columns, normalise) |
| Start a new sprint (optional name, description, start date) |
| List archived task ids |
| Load a task from the archive |
| Add an untracked task file to a column in the index |
| List tracked task IDs (optionally filtered by column) |
| List task files that aren't in the index |
| Find indexed tasks whose file is missing |
| Add an existing task file to this board |
| Find which boards and columns reference a task |
| Check whether a task file exists |
| Check that a task file exists and is indexed |
| Find the column a task is in |
| Delete the whole board (requires confirm: true) |
Example task metadata supported
The MCP wrapper supports common Kanbn task fields including:
namecolumndescriptionassignedduestartedcompletedprogressplannedStartplannedFinishcreatedupdatedtagssubTaskscommentsrelations(see known issues — not yet a declared schema property)custom metadata via
metadata
Tips for AI agents
This server is used heavily by LLM-driven agents, so a few behaviours matter more than they look:
Sub-tasks go in subTasks, not description
A task's break-down lives in the subTasks field — pass it to kanbn_create_task / kanbn_edit_task as an array of strings (or {text, completed} objects). A bulleted "Sub-tasks:" list inside description is invisible to the board: it won't render as checkboxes, be tracked, or be counted by kanbn_search.
The same shape applies at creation time. Create tickets with subTasks and relations filled in from the start rather than bolting them on later — kanbn_edit_task replaces (does not merge) whole collections.
Verify after every create/edit
Task files are plain markdown and kanbn_edit_task writes each array wholesale, so a stale or abbreviated argument list can silently drop data. Rule of thumb: after kanbn_create_task or kanbn_edit_task, follow up with kanbn_get_task (or kanbn_status) and confirm the fields you intended, especially subTasks/relations arrays.
Known issues
kanbn_edit_taskreplaces whole collections rather than merging.relations,subTasksandcommentsare written as the exact array you supply. Passing one new relation to a task that has three silently drops the other two. Workaround today:kanbn_get_taskfirst, re-supply the full arrays, then re-verify.relationsis not yet a declared tool parameter. The Kanbn model stores relations ({task, type}[], e.g.depends-on/blocks) and this server will persist them, but until first-class relation tooling lands treat them as best-effort/undocumented.
Relationship to the Kanbn ecosystem
This repo is intentionally a thin layer over the Kanbn runtime:
Kanbn provides the underlying board/task model and file storage
kanbn-mcp provides an MCP-compatible interface for agents and tools
the VS Code extension provides a GUI/editor experience for the same ecosystem
Together, they provide a consistent Kanbn workflow across terminal, editor, and AI tooling.
License
MIT
Repository links
VS Code extension: https://github.com/basementuniverse/vscode-kanbn
Available Tools
65 toolskanbn_add_relationA
Add a relation edge (e.g. {task, type: 'depends-on'}) to a task. Merges: existing relations are preserved and only the new edge is appended.
Inputs: task (required), type (required), taskId (required), path.
kanbn_add_task_to_boardC
Add an existing task file to this board.
Inputs: taskId (required), columnName (required), path.
kanbn_add_untracked_taskB
Add an untracked task file to a column in the index.
Inputs: taskId (required), columnName (required), path.
kanbn_archive_taskC
Archive a task on the Kanbn board.
Inputs: taskId (required), path.
kanbn_board_existsC
Check whether a board exists.
Inputs: slug (required), path.
kanbn_boards_summaryB
Get a summary with per-board task statistics.
Inputs: path.
kanbn_burndownB
Get burndown chart data as an object.
Inputs: path, dates, columns, sprints, +2 more.
kanbn_collect_contributor_valuesB
Collect every distinct assigned/author value in use across task files.
Inputs: path.
kanbn_commentB
Add a comment to a task.
Inputs: text (required), taskId (required), path, author.
kanbn_contributor_usageB
Report how the workspace's contributors are used, including spelling variants and unknown values.
Inputs: path.
kanbn_contributor_warningsB
Find tasks whose assigned user or comment author isn't a known contributor.
Inputs: path.
kanbn_create_boardC
Create a new secondary board.
Inputs: slug (required), name, path, columns, +2 more.
kanbn_create_taskB
Create a new task on the Kanbn board. The 'name' field is required; all other fields are optional.
Inputs: name (required), path, column, assigned, +5 more.
kanbn_cross_board_tasksA
Find tasks that appear on more than one board.
Inputs: path, allTasks.
kanbn_current_userA
Resolve the current user (KANBN_USER, then git email/name when contributors are declared).
Inputs: path.
kanbn_delete_boardA
Delete an entire Kanbn board directory.
Inputs: path (required).
kanbn_delete_board_fileB
Delete a secondary board file, returning orphaned task IDs.
Inputs: slug (required), path.
kanbn_delete_simple_taskC
Remove a simple task from the board.
Inputs: input (required), path.
kanbn_delete_taskC
Delete a task from the Kanbn board.
Inputs: taskId (required), path, force.
kanbn_edit_taskB
Edit an existing task on the Kanbn board.
Inputs: taskId (required), due, name, path, +11 more.
kanbn_ensure_boardA
Ensure a Kanbn board exists, initializing one if absent (board detection checks the methods: initialised, initialized, isInitialized, isInitialised).
Inputs: name, path, columns.
kanbn_find_action_warningsC
Get potential issues with the board's action rules.
Inputs: path.
kanbn_find_contributorB
Find the contributor a value refers to, matching name, display name or aliases.
Inputs: value (required), path.
kanbn_find_missing_task_filesA
Find indexed tasks whose file is missing, as {task, column} entries.
Inputs: path.
kanbn_find_orphaned_tasksA
Find tasks only referenced by one board (would orphan on its deletion).
Inputs: slug (required), path.
kanbn_find_simple_tasksA
Find simple tasks (non-file column lines) by title, or all on the board.
Inputs: path, input.
kanbn_find_task_boardsB
Find which boards and columns reference a task.
Inputs: taskId (required), path.
kanbn_find_task_columnA
Find the column a task is in, or throw if the task doesn't exist or isn't indexed.
Inputs: taskId (required), path.
kanbn_find_tracked_tasksC
List tracked task IDs, optionally filtered by column.
Inputs: path, columnName.
kanbn_find_untracked_tasksB
List task files that aren't in the index.
Inputs: path.
kanbn_get_action_rulesC
Get the resolved action rules for the board.
Inputs: path.
kanbn_get_configA
Get the Kanbn config, or null if no separate config file exists.
Inputs: path.
kanbn_get_contributorsB
Get the workspace's contributors, normalised to the object form.
Inputs: path.
kanbn_get_date_formatB
Get the board's date format string.
Inputs: path.
kanbn_get_simple_taskA
Resolve exactly one simple task by title, or throw.
Inputs: input (required), path.
kanbn_get_taskC
Retrieve details of a specific task from the Kanbn board.
Inputs: taskId (required), path.
kanbn_get_task_templateB
Get the board's task template string.
Inputs: path.
kanbn_get_workspace_optionsC
Get workspace-scoped Kanbn options.
Inputs: path.
kanbn_init_boardC
Initialize a new Kanbn board in the target directory.
Inputs: name, path, columns.
kanbn_initialize_boardD
Alias for kanbn_init_board.
Inputs: name, path, columns.
kanbn_list_archived_tasksB
List the ids of tasks that have been archived.
Inputs: path.
kanbn_list_boardsA
List all boards in the workspace.
Inputs: path.
kanbn_load_archived_taskB
Load a task from the archive.
Inputs: taskId (required), path.
kanbn_move_simple_taskB
Move a simple task to another column.
Inputs: input (required), column (required), path, position.
kanbn_move_simple_task_to_boardC
Move a simple task onto another board.
Inputs: input (required), targetSlug (required), path, column, +1 more.
kanbn_move_taskB
Move an existing task to a different column.
Inputs: taskId (required), targetColumn (required), path.
kanbn_promote_simple_taskB
Convert a simple task into a real task file.
Inputs: input (required), path, column.
kanbn_remove_allA
Delete the whole board and all its data. Requires confirm: true.
Inputs: confirm (required), path.
kanbn_remove_relationA
Remove relation edge(s) from a task. A type filters the removal; omitting it removes every relation to the given task.
Inputs: task (required), taskId (required), path, type.
kanbn_rename_boardC
Rename a secondary board (slug and/or display name).
Inputs: slug (required), newSlug (required), path, newName.
kanbn_rename_taskC
Rename an existing task on the Kanbn board.
Inputs: taskId (required), newName (required), path, column, +1 more.
kanbn_reserved_board_slugsB
List the board slugs reserved by Kanbn.
Inputs: path.
kanbn_restore_taskB
Alias for kanbn_unarchive_task.
Inputs: taskId (required), path.
kanbn_save_configB
Save the Kanbn config to a config file.
Inputs: config (required), path.
kanbn_searchB
Search tasks on the board with filters (works across all columns).
Inputs: path, quiet, filters.
kanbn_set_relationsA
Authoritatively replace a task's entire relations collection with the supplied array. An empty array clears all relations. This is replace-all: supply every desired edge.
Inputs: taskId (required), relations (required), path.
kanbn_sort_columnB
Sort a board column by the given sorters.
Inputs: sorters (required), columnName (required), path, save.
kanbn_start_sprintA
Start a new sprint on the Kanbn board. Accepts an optional name, description, and start date; a blank name generates 'Sprint N' and a blank start date defaults to now. Sprint names must be unique.
Inputs: name, path, start, description.
kanbn_statusA
Check the current status of the Kanbn board, optionally scoped by the quiet, untracked, due, sprint and dates parameters (board detection checks the methods: initialised, initialized, isInitialized, isInitialised). The response is capped at 100KB by default (configurable via the KANBN_MAX_RESPONSE_SIZE environment variable, in bytes): oversized output automatically falls back to compact JSON, then is truncated with a truncation marker.
Inputs: due, path, dates, quiet, +2 more.
kanbn_task_existsB
Check that a task file exists and is indexed; throws otherwise.
Inputs: taskId (required), path.
kanbn_task_file_existsA
Check whether a task file exists, regardless of whether any board references it.
Inputs: taskId (required), path.
kanbn_tasks_on_other_boardsB
Map every task to all other boards that reference it.
Inputs: path.
kanbn_unarchive_taskC
Unarchive a task on the Kanbn board.
Inputs: taskId (required), path.
kanbn_validate_boardC
Validate the board and return true or a list of parsing errors.
Inputs: path, save.
kanbn_validate_board_slugA
Validate a proposed board slug, throwing on invalid or reserved values.
Inputs: slug (required), path.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 65 tools
Many tools have distinct purposes, but there are aliases (kanbn_init_board/kanbn_initialize_board, kanbn_unarchive_task/kanbn_restore_task) and overlapping concepts like kanbn_delete_board vs kanbn_remove_all vs kanbn_delete_board_file, or kanbn_task_exists vs kanbn_task_file_exists. While descriptions help, the high number of similar-sounding tools creates selection risk.
All tools share the 'kanbn_' prefix and most follow a verb_noun pattern (e.g., create_task, delete_board). Minor deviations like kanbn_boards_summary (noun_noun) and kanbn_status (single noun) exist, but the overall style is consistent and predictable.
65 tools is far beyond typical scope for a board-management server, falling into the extreme range. Many tools cover niche internals (contributor usage, orphaned task detection, reserved slugs) that could be consolidated, making the surface unnecessarily heavy and hard to navigate.
The tool set provides comprehensive coverage of board and task lifecycle: create/read/update/delete, archiving, relations, comments, sprints, search, burndown, board management, and even task-file utilities. No obvious dead ends or missing core operations for the domain.
Maintenance
Related MCP Connectors
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Create and drive KanbanThing kanban boards. No account, no API key, board link required.
Kanban tasks and project notes for AI clients, with OAuth and per-project read or write grants.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for AI agents to manage a lightweight kanban board stored as markdown files, enabling task creation, updates, and column movements.10MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for kanban-tui, a terminal-based task manager, that exposes task, board, and column management commands for AI agents to interact with.65 PyPI287MIT
- AlicenseBqualityDmaintenanceEnables AI agents to manage kanban boards with tasks, including creating boards, items, moving between columns, and searching.81MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage tasks in a kanban board organized as markdown files, with operations to create, update, delete, move tasks, manage lanes, and get statistics.1MIT