Connect AI assistants to TodoMode (MCP)

TodoMode runs a hosted MCP server, so an AI assistant — Claude Code, Claude Desktop, Cursor, or any other client of the Model Context Protocol — can read your projects, see what is due, search, and add or update tasks for you. It acts as you, through a personal API token, with exactly the access that token has.

https://app.todomode.com/mcp

Before you start: a token #

In TodoMode, open Settings → API, name a token (say "Claude Code"), choose its access and an expiry, and press Create token. Choose read only if the assistant should only look things up; choose read and write if it should add, change or complete tasks. The token is shown once — and, right below it, the setup commands on this page with your token already filled in.

Claude Code #

One command (use --scope user to have TodoMode in every project, not just this one):

claude mcp add --transport http todomode https://app.todomode.com/mcp \
  --header "Authorization: Bearer tm_…"

Check it with claude mcp list, or /mcp inside Claude Code. To keep the token out of the command line and your shell history, put it in an environment variable and write the server into the project's .mcp.json (Claude Code expands ${…}):

{
  "mcpServers": {
    "todomode": {
      "type": "http",
      "url": "https://app.todomode.com/mcp",
      "headers": { "Authorization": "Bearer ${TODOMODE_TOKEN}" }
    }
  }
}

Then try: "What's on my plate today in TodoMode?", "Add 'review the PR due:fri #work' to my Work project", "Log what we just changed in a note on the 'Fix login' task".

Claude Desktop (and claude.ai) #

Claude Desktop connects to remote servers as connectors: Settings → Connectors → Add custom connector, with the URL https://app.todomode.com/mcp. If the dialog has a Request headers section, add a header named Authorization with the value Bearer tm_… (your token) and save.

If your Claude app does not offer request headers yet, use the TodoMode command line as a local bridge instead — it speaks MCP to Claude Desktop on your computer and forwards to TodoMode:

  1. Install it and log in (see the command line guide): todomode login
  2. Print a ready-made config: todomode mcp --print-config
  3. Paste the todomode entry into claude_desktop_config.json (Claude Desktop → Settings → Developer → Edit Config) and restart Claude Desktop.

The printed entry looks like this (the paths are yours):

{
  "mcpServers": {
    "todomode": {
      "command": "/usr/bin/python3",
      "args": ["/Users/you/.local/bin/todomode", "mcp"]
    }
  }
}

The bridge reads the token that todomode login saved, so it is not in the config file.

Cursor #

Add TodoMode to ~/.cursor/mcp.json (every workspace) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "todomode": {
      "url": "https://app.todomode.com/mcp",
      "headers": { "Authorization": "Bearer ${env:TODOMODE_TOKEN}" }
    }
  }
}

${env:TODOMODE_TOKEN} reads the token from your environment; you can also paste it in place.

Other clients #

Any MCP client that supports the Streamable HTTP transport works: give it the URL https://app.todomode.com/mcp and the header Authorization: Bearer tm_…. For a client that only starts local (stdio) servers, run todomode mcp from the command line tool as the server command — or any stdio-to-HTTP bridge that can send a header.

What the assistant can do #

ToolWhat it doesToken
list_projectsYour projects (and ones shared with you), with open-task counts.read
list_tasksA project's outline, or tasks across projects by due date, tag or priority.read
get_taskOne task in full: notes, dates, tags, repeat rule, reminders, subtasks, link.read
get_backlinksThe tasks that link to a task with [[...]], and whether from their title or note.read
search_tasksThe app's search: words, "phrases", -not, #tag, due:today, priority:high …read
agendaWhat is overdue, due today, tomorrow, this week, next week.read
list_trashRecently deleted tasks.read
add_taskAdd a task — due:fri at:9am #tag !high @weekly r:-1h all work. To your Inbox unless told otherwise.write
update_taskChange the title, notes, due date, priority, tags or repeat rule.write
append_to_noteAdd to the end of a task's notes.write
complete_taskTick a task off (or reopen it). Repeating tasks roll on as in the app.write
move_taskMove a task and its subtasks to another project.write
delete_taskMove a task to the trash (restorable for 30 days).write
restore_from_trashUndo a delete.write
import_outlineAdd a nested list of tasks in one go.write
create_projectMake a new project.write

Titles and notes can link to other tasks: [[task_…|Title]] (or just [[task_…]] when the title is not for everyone who can read the task). The assistant follows one by getting that task; it can write a link the same way, or as [[Exact title]], which TodoMode turns into the stored form when it saves (see Links between tasks).

With a read-only token the assistant is only offered the read tools. Your projects are also available as resources (in Claude Code, type @ to attach a project's outline to the conversation).

Safety #

Troubleshooting #