Donetick MCP Server
# Donetick MCP
An MCP server that turns your Donetick instance into tools. Create, list, update, complete, and skip chores, manage things, and check circle members and completion history.
Authenticated with a Donetick API token (no username or password). Built with FastMCP.
## Run with Docker
You need a Donetick instance and an access token (settings > Advanced > API).
```bash
docker build -t donetick-mcp .
docker run -e DONETICK_BASE_URL=https://donetick.example.com \
-e DONETICK_API_TOKEN=your-token \
donetick-mcp
```
## Settings
| name | default | notes |
| ---- | ------- | ----- |
| `DONETICK_BASE_URL` | - | required, https only |
| `DONETICK_API_TOKEN` | - | required, from Donetick settings |
| `LOG_LEVEL` | INFO | |
| `RATE_LIMIT_PER_SECOND` | 10 | |
| `RATE_LIMIT_BURST` | 10 | |
Values can come from a `.env` file in the working directory.
## Serve over HTTP
By default the server talks stdio (one process per client). To expose it as an
HTTP MCP endpoint behind a gateway (e.g. LiteLLM), set the FastMCP transport
env vars - no code change required:
| env | default |
| --- | ------- |
| `FASTMCP_TRANSPORT` | `stdio` |
| `FASTMCP_HOST` | `127.0.0.1` |
| `FASTMCP_PORT` | `8000` |
| `FASTMCP_STREAMABLE_HTTP_PATH` | `/mcp` |
Example - serve streamable-http on all interfaces:
```bash
FASTMCP_TRANSPORT=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=8000 \
donetick-mcp
```
## Tools
Chores: `list_chores`, `get_chore`, `create_chore`, `complete_chore`, `update_chore`, `delete_chore`, `update_chore_priority`, `update_chore_assignee`, `skip_chore`, `update_subtask_completion`, `archive_chore`, `unarchive_chore`, `undo_chore`, `approve_chore`, `reject_chore`, `start_chore`, `pause_chore`
Things: `list_things`, `get_thing`, `get_thing_state`, `change_thing_state`, `create_thing`, `update_thing`, `delete_thing`, `get_thing_history`
Circle: `get_circle_members`, `list_circles`, `get_join_requests`, `accept_join_request`, `join_circle`, `leave_circle`, `change_member_role`, `delete_circle_member`, `redeem_points`
Projects: `list_projects`, `create_project`, `update_project`, `delete_project`
History: `get_chore_history`, `get_all_chores_history`, `get_chore_details`
## License
MIT
TDQS
Scored across 41 tools
Most tools have distinct purposes, but a few overlap: get_chore and get_chore_details both retrieve a single chore (the latter with stats), and get_chore_history vs get_all_chores_history could be confused. However, descriptions generally clarify scope, so agents can usually pick correctly.
The majority follow a consistent verb_noun snake_case pattern (e.g., list_chores, create_chore, update_chore, delete_chore). Minor deviations include change_thing_state and redeem_points, but they are readable and do not break the overall pattern.
With 41 tools, the server far exceeds the typical well-scoped range. While the domain spans chores, circles, things, projects, and history, the sheer number makes the surface heavy and harder to navigate, and many tools could potentially be consolidated.
The tool set covers CRUD for chores, things, and projects, plus circle management, history, timers, approval flows, and rewards. A few potential gaps exist (e.g., no create_circle or delete_circle), but the core workflows appear well-supported without obvious dead ends.