io. github. theluckystrike/ kanban-todo-tasks-projects-board
by theluckystrike · remote · local (mcpb) · no sign-in to list tools · v0.22.6 · published by GitHub user theluckystrike
A local task board per project: columns, due dates, estimates, priorities, overdue, weekly review.
17 tools: 2 can delete or cancel things, 10 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things10Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http kanban-todo-tasks-projects-board https://mcp.zovo.one/mcp/kanban --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
- Warnboard
The server marks "board" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "show": a word for reading.
- Warnweekly_review
The server marks "weekly_review" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "compare": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Deletes or cancels 2Claude Code: deny
project_deleteDelete an empty board and give its free-tier slot back.No findings
Why it is in this group
- The name "project_delete" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete an empty board and give its free-tier slot back. A board still holding tasks, open or done, is refused with one named, because task_add creates boards as a side effect and the work would be lost.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
task_deleteDelete one task by id, permanently; the id is never reused.No findings
Why it is in this group
- The name "task_delete" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete one task by id, permanently; the id is never reused. The answer names any logged minutes lost. time-tracker entries are a separate store and are untouched. Use task_done to keep the record.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
Changes things 10Claude Code: ask
boardShow one board column by column: tasks, estimate, actual and overdue count in each, then the board totals and the estimate still open.1 finding
Why it is in this group
- The description's first verb is "show": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "board" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "show": a word for reading.
Description, as the server wrote it Show one board column by column: tasks, estimate, actual and overdue count in each, then the board totals and the estimate still open. Defaults to your busiest board. Use project_list for every board.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
columns_setReplace one board's columns, in order, with 2 to 12 unique names.No findings
Why it is in this group
- The name "columns_set" says "set": a word for a change.
Description, as the server wrote it Replace one board's columns, in order, with 2 to 12 unique names. Tasks in a removed column move to the FIRST column. Blanks are dropped first, so a list normalising below two names is refused. Pro.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
license_activateTurn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_addAdd one task to a board and return its id, board and column.No findings
Why it is in this group
- The name "task_add" says "add": a word for a change.
Description, as the server wrote it Add one task to a board and return its id, board and column. The board is created on first use, so pass an existing project or leave it out. An identical open task is refused. Free: 3 boards, 200 open.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_doneMark one task finished: it moves to the board's done column (named done, else the last) and is stamped, leaving task_list and the open counts.No findings
Why it is in this group
- The description's first verb is "mark": a word for a change.
Description, as the server wrote it Mark one task finished: it moves to the board's done column (named done, else the last) and is stamped, leaving task_list and the open counts. Returns estimate against actual when both are known.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_log_timeAdd real minutes worked to one task so estimate and actual can be compared.No findings
Why it is in this group
- The name "task_log_time" says "log": a word for reading.
- The description's first verb is "add": a word for a change.
Description, as the server wrote it Add real minutes worked to one task so estimate and actual can be compared. Minutes ADD; a negative corrects an over-count. Below zero or past 100,000 is refused. This counter is the board's own.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_moveMove one task to another column of its own board and report the old and new column.No findings
Why it is in this group
- The name "task_move" says "move": a word for a change.
Description, as the server wrote it Move one task to another column of its own board and report the old and new column. An unknown column is refused, listing the real ones. Entering the done column stamps completion; leaving it clears it.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_start_timerReturn the exact arguments to pass to the time-tracker's timer_start for one task, and record the link here.No findings
Why it is in this group
- The name "task_start_timer" says "start": a word for a change.
Description, as the server wrote it Return the exact arguments to pass to the time-tracker's timer_start for one task, and record the link here. It starts nothing itself, and warns when the tracker's own project names would misfile the time.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
task_updateChange a task by id: only the fields you pass are touched.No findings
Why it is in this group
- The name "task_update" says "update": a word for a change.
Description, as the server wrote it Change a task by id: only the fields you pass are touched. tags REPLACES the whole list, due 'none' clears it, and project moves the task to a board that already exists. Returns the task's new row.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
weekly_reviewCompare done against planned for one ISO week per project: how many were due, how many of those are finished, how many were completed, and estimate against actual minutes.1 finding
Why it is in this group
- The description's first verb is "compare": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "weekly_review" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "compare": a word for reading.
Description, as the server wrote it Compare done against planned for one ISO week per project: how many were due, how many of those are finished, how many were completed, and estimate against actual minutes. Any week but this one is Pro.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 5Claude Code: allow
license_statusReport this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL.No findings
Why it is in this group
- The name "license_status" says "status": a word for reading.
Description, as the server wrote it Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
overdueList every task whose due day is already past, across all boards, oldest first, in the task_list table.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it List every task whose due day is already past, across all boards, oldest first, in the task_list table. as_of measures against a day you name. A finished task, or one with no due date, never counts.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
project_listList every board with its task-id prefix, open and done counts, estimate still open and overdue count, plus free-tier use (3 boards, 200 open tasks).No findings
Why it is in this group
- The name "project_list" says "list": a word for reading.
Description, as the server wrote it List every board with its task-id prefix, open and done counts, estimate still open and overdue count, plus free-tier use (3 boards, 200 open tasks). Use board for one board broken down by column.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
task_listList tasks as a table of id, project, column, title, priority, due, estimate, actual and tags, sorted by due date, with the total estimate.No findings
Why it is in this group
- The name "task_list" says "list": a word for reading.
Description, as the server wrote it List tasks as a table of id, project, column, title, priority, due, estimate, actual and tags, sorted by due date, with the total estimate. Done tasks are left out unless include_done. 200 rows default.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
task_searchFind tasks whose id, title, notes or tags contain the query, across every board, finished ones included.No findings
Why it is in this group
- The name "task_search" says "search": a word for reading.
Description, as the server wrote it Find tasks whose id, title, notes or tags contain the query, across every board, finished ones included. Plain case-insensitive substring, never a regex. Use task_list for structured filters.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.22.6. Values in angle brackets are yours to fill in.
claude mcp add --transport http kanban-todo-tasks-projects-board https://mcp.zovo.one/mcp/kanban --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__kanban-todo-tasks-projects-board__license_status",
"mcp__kanban-todo-tasks-projects-board__task_list",
"mcp__kanban-todo-tasks-projects-board__task_search",
"mcp__kanban-todo-tasks-projects-board__project_list",
"mcp__kanban-todo-tasks-projects-board__overdue"
],
"ask": [
"mcp__kanban-todo-tasks-projects-board__license_activate",
"mcp__kanban-todo-tasks-projects-board__task_add",
"mcp__kanban-todo-tasks-projects-board__task_move",
"mcp__kanban-todo-tasks-projects-board__task_update",
"mcp__kanban-todo-tasks-projects-board__task_done",
"mcp__kanban-todo-tasks-projects-board__board",
"mcp__kanban-todo-tasks-projects-board__task_start_timer",
"mcp__kanban-todo-tasks-projects-board__task_log_time",
"mcp__kanban-todo-tasks-projects-board__weekly_review",
"mcp__kanban-todo-tasks-projects-board__columns_set"
],
"deny": [
"mcp__kanban-todo-tasks-projects-board__task_delete",
"mcp__kanban-todo-tasks-projects-board__project_delete"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as kanban-todo-tasks-projects-board. Review it before you use it.
