mirror of
https://github.com/kuhyx/todo-app.git
synced 2026-11-11 14:49:43 +01:00
Some checks are pending
Also bumps Flutter 3.47.3, flutter_secure_storage 11.1.0, idb_shim 2.9.9, sqflite_common_ffi 2.4.3, very_good_analysis 11 and mcp 2.2.0 so the freshness gate lets this through; v11 adds async_return_with_no_await, so the 18 flagged return sites now await explicitly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AwtowrowDXx6ccmWVPkCaF
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
# todo backlog MCP server
|
|
|
|
A small, standalone, **read-only** [MCP](https://modelcontextprotocol.io)
|
|
server that lets Claude Code (and its subagents) query the todo app's backlog.
|
|
|
|
The todo app is Dart/Flutter and stores notes in a `sqlite_crdt` database that
|
|
must never be touched from outside the app (CRDT writes corrupt cross-device
|
|
merge). Instead, this server reads the app's exported `BACKLOG.md` — the
|
|
canonical NotesMarkdown snapshot written by **Settings → "Export notes"**.
|
|
|
|
## Staleness note
|
|
|
|
`BACKLOG.md` is a *manual* export, so it can be out of date. Every tool result
|
|
includes the file's modification time (`mtime`) so you can judge freshness. If
|
|
the file is missing, tools return `backlog_found: false` with a message telling
|
|
you to export it from the app — they never crash.
|
|
|
|
## Tools (all read-only)
|
|
|
|
- `list_backlog(priority: str | None = None, status: str | None = None, limit: int = 100)`
|
|
— notes, optionally filtered by `priority` (`low`/`medium`/`high`) and/or
|
|
`status` (`todo`/`inProgress`/`done`/`abandoned`), plus `total`, `returned`,
|
|
and `mtime`.
|
|
- `get_note(note_id: str)` — one note by id, or `found: false`.
|
|
- `backlog_stats()` — counts `by_status` and `by_priority`, `total`, and `mtime`.
|
|
|
|
Nothing here writes to the database or to `BACKLOG.md`.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
mcp/scripts/setup_mcp.sh
|
|
```
|
|
|
|
This creates `~/.venvs/todo-mcp`, installs this package (which pulls in the
|
|
`mcp` SDK), and verifies the imports. The server is registered via the
|
|
repo-root `.mcp.json`; restart Claude Code in this repo and approve the project
|
|
MCP server prompt. Override the backlog location with `TODO_BACKLOG_PATH`
|
|
(defaults to `~/src/todo/BACKLOG.md`).
|
|
|
|
## Development
|
|
|
|
```bash
|
|
~/.venvs/todo-mcp/bin/pip install -e mcp pytest pytest-cov ruff mypy
|
|
~/.venvs/todo-mcp/bin/python -m pytest mcp/todo_mcp/tests \
|
|
--cov=todo_mcp --cov-branch --cov-report=term-missing --cov-fail-under=100
|
|
```
|