# Todoist

> Personal task management with due dates — capture, schedule, and complete from chat.

[Canonical HTML page](https://top-mcps.com/mcp/todoist) · [server.json](https://top-mcps.com/mcp/todoist.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "todoist-mcp-server"
      ],
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
# export TODOIST_API_TOKEN=YOUR_API_TOKEN
claude mcp add todoist -- npx -y todoist-mcp-server
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "todoist-mcp-server"
      ],
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "todoist-mcp-server"
      ],
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "todoist-mcp-server"
      ],
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "todoist-mcp-server"
      ],
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "todoist-mcp-server"
          ],
          "env": {
            "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
          }
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.todoist]
command = "npx"
args = [
  "-y",
  "todoist-mcp-server",
]
env = { TODOIST_API_TOKEN = "${TODOIST_API_TOKEN}" }
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "todoist": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "todoist-mcp-server"
        ]
      },
      "env": {
        "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}"
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

Todoist doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** Community
- **Transport:** stdio
- **Auth model:** API key
- **Required secrets:** TODOIST_API_TOKEN
- **Supported clients:** Claude, Cursor, Any MCP-compatible client
- **License:** MIT
- **Language:** TypeScript
- **Latest version:** latest
- **Last verified:** 2026-05-26
- **GitHub stars:** 393 (fetched 2026-05-26T10:50:23.346Z)
- **Score:** 56/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Source:** https://github.com/abhiz123/todoist-mcp-server

## Security & scope

- **Access scope:** read-write
- **Sandbox:** API token grants account-wide access including all projects.
- **Gotchas:**
  - No per-project token scoping — one token unlocks everything.
  - Deleted tasks are recoverable for ~30 days, then gone.

## Quick answer

**What it does.** Provides MCP tools for task CRUD, project and label management, filter queries, and reminder scheduling against a Todoist account.

**Best for:**
- Personal task capture
- Natural-language due dates
- Quick-add patterns
- Today and upcoming lists
- Voice-to-task on assistant clients

**Not for:**
- Team project management
- Complex roadmap planning
- Dependency-heavy workflows

## Description

The Todoist MCP wraps the Todoist REST API. The agent can capture new tasks, set due dates and reminders, organize by project and label, and surface today's or this-week's lists — turning the chat into a working capture surface.

## Why it matters

Capture friction is the death of personal task management. Saying "Todoist, remind me to call Acme tomorrow at 2" without opening the app keeps the system actually used.

## Key features

- Task CRUD
- Natural-language due dates
- Projects and labels
- Filter queries
- Reminders
- OAuth or API token

## FAQ

### How does natural-language scheduling work?

Todoist parses phrases like "tomorrow at 2pm" or "every Tuesday" server-side. Pass the raw string in `due_string` and Todoist handles the conversion.

### Does it work with shared projects?

Yes — any project the token has access to, including shared ones. The MCP does not currently expose project sharing/permission management.

### Free or premium?

Free plan covers most personal use; premium unlocks reminders, labels in bulk, and longer history. API works on both.

## Changelog

- **2026-05-26** — Refreshed install snippets and fact sheet; verified for 2026.
- **2025-01-10** — Initial directory listing.
