Donetick MCP Server

April 3, 2026 · View on GitHub

PyPI Python 3.11+ License: MIT

An MCP server for Donetick chores management. Gives Claude and other MCP-compatible AI assistants full control over your Donetick instance — 27 tools covering chores, subtasks, labels, timers, and more.

Quick Start

uvx donetick-mcp

Claude Desktop / Claude Code

Add to your MCP config (.mcp.json, claude_desktop_config.json, etc.):

{
  "mcpServers": {
    "donetick": {
      "command": "uvx",
      "args": ["donetick-mcp"],
      "env": {
        "DONETICK_BASE_URL": "https://your-instance.com",
        "DONETICK_USERNAME": "your_username",
        "DONETICK_PASSWORD": "your_password"
      }
    }
  }
}

Note: DONETICK_BASE_URL can be HTTP for local/private network instances.

Tools (27)

Chore Management

ToolDescription
list_choresList chores with optional filters (active, assigned user, brief/full detail)
get_choreGet full chore details including subtasks and labels
create_choreCreate a chore — supports usernames, day names, reminders, subtasks. Defaults to assigning to anyone in the circle (round-robin)
update_choreUpdate any fields: name, description, schedule, assignees (by username), labels (add/remove/set by name), priority, notifications
delete_choreDelete a chore (creator only)
list_archived_choresList archived/hidden chores

Chore Actions

ToolDescription
complete_choreMark a chore as done
skip_choreSkip without completing — schedules next occurrence for recurring chores
archive_choreSoft-delete / hide a chore
unarchive_choreRestore an archived chore
approve_choreApprove a completion that requires approval
reject_choreReject a completion that requires approval
update_due_dateQuick reschedule without a full update

Timer

ToolDescription
start_chore_timerStart time tracking
pause_chore_timerPause time tracking

Subtasks

ToolDescription
create_subtaskAdd a checklist item to a chore
delete_subtaskRemove a subtask
update_subtask_completionMark a subtask complete/incomplete
convert_chore_to_subtaskConvert a standalone chore into a subtask of another (deletes the original)

Labels

ToolDescription
list_labelsList all labels in the circle
create_labelCreate a new label (name + optional hex color)
update_labelRename or recolor a label
delete_labelDelete a label (removes from all chores)

Labels can also be managed directly on chores via update_chore using add_label_names, remove_label_names, or set_label_names.

Users & History

ToolDescription
list_circle_membersList all members with IDs, roles, and points
get_user_profileCurrent user's profile, points, and settings
get_chore_historyCompletion history — for one chore or all (with pagination)
get_chore_detailsChore stats: total completions, average duration, recent history

Configuration

VariableRequiredDefaultDescription
DONETICK_BASE_URLYesDonetick instance URL
DONETICK_USERNAMEYesDonetick username
DONETICK_PASSWORDYesDonetick password
LOG_LEVELNoINFODEBUG, INFO, WARNING, ERROR
RATE_LIMIT_PER_SECONDNo10.0API rate limit
RATE_LIMIT_BURSTNo10Burst capacity

Create Chore Examples

Simple one-time chore:

{"name": "Fix leaky faucet", "due_date": "2025-11-10", "priority": 3}

Recurring chore on specific days:

{"name": "Take out trash", "days_of_week": ["Mon", "Thu"], "time_of_day": "19:00", "usernames": ["Alice"]}

With subtasks and reminders:

{"name": "Weekly review", "frequency_type": "weekly", "subtask_names": ["Check email", "Update notes"], "remind_minutes_before": 15}

If no usernames provided, the chore is assigned to everyone in the circle with round-robin rotation.

Alternative Installation

Docker

git clone https://github.com/danielrosehill/donetick-mcp.git
cd donetick-mcp
cp .env.example .env  # edit with your credentials
docker-compose up -d

pip

pip install donetick-mcp
donetick-mcp  # requires env vars set

Development

git clone https://github.com/danielrosehill/donetick-mcp.git
cd donetick-mcp
python3 -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
pytest  # 200 tests, requires DONETICK_* env vars

License

MIT