Kaiten MCP Server
# kaiten-mcp-server
MCP server exposing four Kaiten (kaiten.ru) operations as tools:
- `list_tasks` — list/filter cards (board, column, space, text query, archived)
- `move_task` — move a card to a given board/column/lane
- `set_responsible` — set a card's responsible person (`owner_id`)
- `add_comment` — add a comment to a card
Built on the [Kaiten REST API](https://developers.kaiten.ru).
## Setup
```bash
uv sync
```
Set credentials as env vars:
```bash
export KAITEN_DOMAIN=mycompany # -> https://mycompany.kaiten.ru/api/latest
# or set the full URL directly:
# export KAITEN_BASE_URL=https://mycompany.kaiten.ru/api/latest
export KAITEN_API_TOKEN=ksh_xxx # from Kaiten user settings -> API tokens
```
## Run
```bash
uv run kaiten-mcp-server
```
Runs over stdio, ready to be wired into any MCP client.
## Wire into Claude Code / Claude Desktop
Add to your MCP config (e.g. `claude_desktop_config.json` or `.mcp.json`):
```json
{
"mcpServers": {
"kaiten": {
"command": "uv",
"args": ["--directory", "/home/corfmann/PycharmProjects/kaiten-mcp-server", "run", "kaiten-mcp-server"],
"env": {
"KAITEN_DOMAIN": "mycompany",
"KAITEN_API_TOKEN": "ksh_xxx"
}
}
}
}
```
## Notes
- `list_tasks` returns a trimmed summary of each card (id, title, board/column/lane, owner, archived, due_date) to keep responses compact; extend `_summarize_card` in `server.py` if you need more fields.
- Kaiten has no dedicated "responsible" field on the card-members endpoint — the responsible person is the card's `owner_id`, set via `PATCH /cards/{id}`, which is what `set_responsible` uses.
TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: list_columns, list_tasks, and list_boards are clearly separated read operations, while create_task, move_task, set_responsible, and add_comment cover distinct mutations. No two tools have overlapping purposes.
All tool names follow a consistent verb_noun pattern (list_*, create_, move_, set_, add_) using lowercase with underscores. The convention is uniform and predictable across the entire set.
With 7 tools, the server is well-scoped for a Kanban/board management domain. Each tool serves a clear core function without redundancy or bloat, fitting comfortably within the ideal 3-15 range.
The surface covers board/column/task listing, task creation, movement, commenting, and responsible-party assignment. However, there is no update tool for task title/description, no delete or archive operation (despite an archived filter existing), and no direct get-task-by-id, leaving notable lifecycle gaps.