Kanboard: kanboard_* MCP split into standalone kanboard-mcp (:3103); update tool namespace + add tag/link tools
36
Kanboard.md
36
Kanboard.md
@@ -1,7 +1,8 @@
|
|||||||
# Kanboard
|
# Kanboard
|
||||||
|
|
||||||
Kanban task boards. Tasks can be assigned to **Claude**, which fetches, works,
|
Kanban task boards. Tasks can be assigned to **Claude**, which fetches, works,
|
||||||
comments and moves cards like a regular team member via the `agap-mcp` server.
|
comments and moves cards like a regular team member via the dedicated
|
||||||
|
**`kanboard-mcp`** server.
|
||||||
|
|
||||||
## Service
|
## Service
|
||||||
|
|
||||||
@@ -34,27 +35,40 @@ curl -s -u "jsonrpc:$KANBOARD_TOKEN" http://localhost:4800/jsonrpc.php \
|
|||||||
- Assign a card to `claude` (in the UI or `kanboard_assign_task`) and it shows up
|
- Assign a card to `claude` (in the UI or `kanboard_assign_task`) and it shows up
|
||||||
in `kanboard_my_tasks`.
|
in `kanboard_my_tasks`.
|
||||||
|
|
||||||
## agap-mcp integration
|
## kanboard-mcp integration
|
||||||
|
|
||||||
Implemented in `agap-mcp` (`src/kanboard.js`, registered in `src/server.js`).
|
The `kanboard_*` tools run in a **dedicated standalone MCP server** (split out of
|
||||||
Authenticates with the app-wide `KANBOARD_TOKEN`; writes (comments, tasks,
|
the shared `agap-mcp` on 2026-07-06, which had grown overloaded). Lives in the
|
||||||
subtasks) are authored as `claude` via `user_id`. Env: `KANBOARD_URL`,
|
`alvis/kanboard` repo at `mcp/`; container `kanboard-mcp` on **port 3103**,
|
||||||
`KANBOARD_BOT_USER=claude`.
|
registered in `~/.claude.json` as server **`kanboard`** (tools appear as
|
||||||
|
`mcp__kanboard__kanboard_*`). Authenticates with the app-wide `KANBOARD_TOKEN`
|
||||||
|
(read straight from `mcp/.env`); writes are authored as `claude` via `user_id`.
|
||||||
|
Env: `PORT`, `KANBOARD_URL`, `KANBOARD_TOKEN`, `KANBOARD_BOT_USER=claude`.
|
||||||
|
|
||||||
Tools (`mcp__agap__kanboard_*`):
|
```bash
|
||||||
|
cd /home/alvis/kanboard/mcp && docker compose up -d --build # (with proxy vars unset)
|
||||||
|
curl -s http://localhost:3103/health # {"status":"ok","tools":23}
|
||||||
|
```
|
||||||
|
|
||||||
|
Tools (`mcp__kanboard__kanboard_*`):
|
||||||
|
|
||||||
| Tool | Purpose |
|
| Tool | Purpose |
|
||||||
|------|---------|
|
|------|---------|
|
||||||
| `list_projects` / `get_project` | projects; columns + swimlanes |
|
| `list_projects` / `get_project` | projects; columns + swimlanes |
|
||||||
| `list_tasks` / `my_tasks` | tasks in a project / assigned to claude (all projects) |
|
| `list_tasks` / `my_tasks` | tasks in a project / assigned to claude (all projects) |
|
||||||
| `get_task` | task + subtasks + comments |
|
| `get_task` | task + subtasks + comments + tags |
|
||||||
| `search_tasks` | Kanboard query syntax (`assignee:`, `status:`, `due:`) |
|
| `search_tasks` | Kanboard query syntax (`assignee:`, `status:`, `due:`) |
|
||||||
| `list_users` / `project_activity` | monitor users / activity stream |
|
| `list_users` / `project_activity` | monitor users / activity stream |
|
||||||
| `create_task` / `update_task` | create / edit |
|
| `create_task` / `update_task` | create / edit (incl. `score` complexity) |
|
||||||
| `move_task` / `change_task_status` | move column / open-close |
|
| `move_task` / `change_task_status` | move column / open-close |
|
||||||
| `assign_task` | (re)assign to a user |
|
| `assign_task` | (re)assign to a user |
|
||||||
| `add_comment` | comment as claude |
|
| `add_comment` / `remove_comment` | comment as claude / delete |
|
||||||
| `create_subtask` / `update_subtask` | track execution steps (0 todo/1 wip/2 done) |
|
| `create_subtask` / `update_subtask` | track execution steps (0 todo/1 wip/2 done) |
|
||||||
| `remove_task` / `remove_comment` | delete (irreversible) |
|
| `get_task_tags` / `set_task_tags` | read/add/remove tags (e.g. `blocked`) |
|
||||||
|
| `add_task_link` / `get_task_links` / `remove_task_link` | task dependencies ("is blocked by" / "blocks") |
|
||||||
|
| `remove_task` | delete a task (irreversible) |
|
||||||
|
|
||||||
Deleting whole projects is intentionally not exposed.
|
Deleting whole projects is intentionally not exposed.
|
||||||
|
|
||||||
|
> The orchestration ruleset (how Claude dispatches board tasks to sub-agents) and
|
||||||
|
> the full service/provenance notes live in `alvis/kanboard` → `CLAUDE.md`.
|
||||||
|
|||||||
Reference in New Issue
Block a user