설치
npx -y @deepseek-ai/dsh plugin --profile web add github:chenyinrusi/dsh-kanban-mcp이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.
README
유지 관리자가 작성한 문서 스냅샷입니다.
dsh-kanban-mcp
Filesystem-driven four-lane kanban board (todo / doing / blocked / done) exposed as a read-only MCP server and a Python API. Works with DeepSeek Harness and any MCP client.
A kanban board is just a directory tree of markdown cards:
<base_dir>/YYYY/YYYY-MM/YYYY-MM-DD/{todo,doing,blocked,done}/YYYYMMDD-HHMMSS__agent__slug__status.md
That design is the whole point: the board survives restarts, is diffable in git, needs no database, and can be inspected by any file tool. This package manages those files and exposes the board to agents over MCP.
Install
pip install "dsh-kanban-mcp" # Python API
pip install "dsh-kanban-mcp[mcp]" # + MCP server (fastmcp)
Requires Python 3.10+.
Run the MCP server
python -m kanban_mcp # stdio transport
# or: kanban-mcp
Register it in DeepSeek Harness (MCP settings — the built-in MCP client) or any MCP client. The tools take an optional base_dir argument (default .agent/kanban) so one server can point at any board.
Tools (read-only)
| Tool | Description |
|---|---|
kanban_board | Full four-lane board with card details (agent, work_item, purpose, status, outcome, priority, timestamps) |
kanban_status | Per-lane card counts + total |
kanban_doing | Cards currently in progress |
kanban_blocked | Blocked cards |
kanban_done_today | Cards completed today |
All tools are read-only. Card creation / update / movement is available through the KanbanManager Python API (see below); write tools are planned but not yet exposed over MCP.
Python API
from kanban_mcp import KanbanManager, LaneStatus
kanban = KanbanManager(base_dir=".agent/kanban")
card = kanban.create_doing_card(
agent="coder",
work_item="build-api",
purpose="Build the REST API endpoint",
)
kanban.update_card(card, outcome="GET /users implemented")
kanban.move_to_done("coder", "build-api", "API endpoint complete")
board = kanban.get_board() # full board
stats = kanban.stats() # per-lane counts
blocked = kanban.get_blocked_cards()
Writes go through an atomic temp-file + os.replace, so a concurrent reader never sees a half-written card.
Why files instead of a database
- Git-diffable — card changes are reviewable like code.
- Survives restarts — no daemon, no lock, no migration.
- Inspectable — any file tool can read a card directly.
- Portable —
cp -rthe directory and you have a new board.
Development
pip install -e ".[dev]"
pytest
License
MIT © 2026 Chen (Jarry) Pan
프로젝트 파일 및 신호
표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.
저장소 정보
- 언어
- Python
- 라이선스
- MIT
- 마지막 업데이트
- 2026. 8. 16. 오전 9:20
신중하게 설치하기
소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.