todo-mcp 0.1.1

A Collaborative Todo List application and MCP server using CRDTs and Multicast
todo-mcp-0.1.1 is not a library.

Todo MCP

A collaborative todo list app built with Rust and Dioxus that synchronizes state across devices using Automerge CRDTs and UDP multicast. It also exposes an MCP server interface, making your todo lists accessible to AI tools like Claude Code.

Dioxus GUI

Ratatui TUI

Features

  • Multi-list management -- Create, rename, and delete multiple todo lists, each with a unique color
  • Real-time sync -- Instances on the same LAN discover each other via UDP multicast and stay in sync using Automerge CRDTs, so concurrent edits merge without conflicts
  • MCP server -- Exposes todo operations (get_todos, add_todo, toggle_todo, etc.) over stdio so AI assistants can read and manage your lists
  • Claude Code hook -- Bridges Claude Code's TaskCreate/TaskUpdate events into your todo lists, letting you track AI-generated tasks in the same UI
  • Persistent storage -- State is saved to disk as an Automerge document and restored on restart
  • TUI mode -- A full terminal UI built with ratatui for managing todos without leaving the terminal, with vim-style keybindings and real-time sync
  • Cross-platform -- Builds for desktop (default), web, and mobile via Dioxus feature flags

Installing

You can install it from this git repo or using cargo:

cargo install todo-mcp

Building and Running

Requires Rust and the Dioxus CLI:

cargo install dioxus-cli

Desktop app (default)

dx serve --platform desktop

Web app

dx serve --platform web

TUI (terminal UI)

Run an interactive terminal interface for managing your todo lists:

todo-mcp tui

Navigate with arrow keys or j/k, toggle items with Space, and press q to quit. The TUI syncs with other instances in real time just like the desktop and web apps.

To build a minimal binary without the Dioxus GUI dependencies:

cargo build --no-default-features --features tui

MCP server

Run as a stdio-based MCP server for use with Claude Code or other MCP clients:

todo-mcp mcp

Claude Code hook

Process a Claude Code tool event from stdin and sync it into your todo lists:

todo-mcp hook

MCP Tools

When running in MCP server mode, the following tools are available:

Tool Description
get_todos Retrieve all lists, or a specific list by index
add_list Create a new todo list
remove_list Delete a list by index
rename_list Rename an existing list
add_todo Add an item to a list
remove_todo Remove an item from a list
toggle_todo Toggle an item's completion status
clear_completed Remove all completed items from a list
name_session Name a Claude Code session for hook integration

Claude Code Integration

To use todo-mcp as a Claude Code hook, add the following to your Claude Code settings (.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "TaskCreate|TaskUpdate",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/todo-mcp hook"
          }
        ]
      }
    ]
  }
}

This routes task lifecycle events into todo-mcp so Claude Code's task lists appear in your todo app in real time.

Sync Details

Instances sync over UDP multicast on 239.1.1.1:1111. Messages larger than 1400 bytes are automatically fragmented and reassembled. Peers are considered connected if they've sent a message within the last 5 seconds.

State is persisted to ~/.local/share/todo_mcp/automerge.save by default (override with the MPAD_AUTOSAVE_PATH environment variable).

Configuration

Variable Default Description
RUST_LOG todo_mcp=DEBUG Tracing log filter
TODOMCP_AUTOSAVE_PATH ~/.local/share/todo_mcp/automerge.save Automerge save file location

Logs are written to both stdout and /tmp/todo-mcp.log.

License

See Cargo.toml for authorship details.