Skip to main content

todoist-blade-mcp

A high-performance Model Context Protocol server for Todoist. Dual API strategy (REST v2 + Sync v9), token-efficient output, and a write-gated safety model.

Why this over the official Todoist MCP?

Capability Official todoist-blade-mcp
API coverage REST v2 only REST v2 + Sync v9
Batch commands One op per call Up to 100 ops in a single todoist_batch call via Sync API
Incremental sync Not supported Delta tokens — only fetch what changed since last sync
Output format JSON blobs Pipe-delimited, null-omitted — 40-60% fewer tokens
Write safety Open Write-gated: mutations require explicit TODOIST_WRITE=true
Filter queries Basic Full Todoist filter syntax (#Work & due before: tomorrow)
Productivity stats Not exposed Karma, streaks, daily/weekly goals
Completed tasks Not exposed Full completion history (Pro accounts)
Quick add Not exposed Natural language parsing (Buy milk tomorrow p1 #Shopping)
Tool count ~15 30

The key differentiator is the Sync v9 integration. No other Todoist MCP server uses it. This unlocks batch commands (bulk-create 50 tasks in one call), incremental sync (delta tokens eliminate redundant fetches), and access to endpoints REST v2 simply doesn't expose.

Features

  • 30 tools across 7 categories — projects, sections, tasks, comments, labels, sync, productivity
  • Dual API client — REST v2 for simple CRUD, Sync v9 for batch operations and incremental sync
  • Token-efficient formatters — pipe-delimited output with null omission, not verbose JSON
  • Write-gated safety — all mutations disabled by default; enable with TODOIST_WRITE=true
  • Destructive confirmation — delete operations require explicit confirm=true parameter
  • Filter query support — full Todoist filter syntax in tasks_list and tasks_search
  • Natural language quick-add — dates, priorities, labels, and projects parsed from plain text
  • HTTP transport with auth — Bearer token middleware for remote deployments

Quick Start

# Clone
git clone https://github.com/groupthink-dev/todoist-blade-mcp.git
cd todoist-blade-mcp

# Install
pip install -e .

# Run (read-only by default)
export TODOIST_API_TOKEN="your-api-token"
todoist-blade-mcp

To enable write operations:

export TODOIST_WRITE=true

Tools

Projects (6)

Tool Description Gated
projects_list List all projects with hierarchy
projects_read Get project details by ID
projects_create Create a new project write
projects_update Update project name, colour, etc. write
projects_delete Delete a project write + confirm
projects_collaborators List project collaborators

Sections (4)

Tool Description Gated
sections_list List sections in a project
sections_create Create a section write
sections_update Rename a section write
sections_delete Delete a section write + confirm

Tasks (9)

Tool Description Gated
tasks_list List tasks with filter query support
tasks_read Get task details by ID
tasks_search Search with advanced Todoist filter syntax
tasks_create Create a task with full metadata write
tasks_update Update task fields write
tasks_complete Mark a task complete write
tasks_reopen Reopen a completed task write
tasks_delete Delete a task write + confirm
tasks_quick_add Natural language task creation write

Comments (4)

Tool Description Gated
comments_list List comments on a task or project
comments_create Add a comment write
comments_update Edit a comment write
comments_delete Delete a comment write

Labels (3)

Tool Description Gated
labels_list List personal and shared labels
labels_create Create a label write
labels_delete Delete a label write

Sync (2)

Tool Description Gated
todoist_sync Incremental sync with delta tokens — only returns changes since last sync
todoist_batch Execute up to 100 commands in a single Sync API call write

Productivity (2)

Tool Description Gated
todoist_stats Karma score, streaks, daily/weekly goals
todoist_completed Completion history with date ranges (Pro)

Filter Query Examples

tasks_list and tasks_search accept Todoist filter syntax:

today                          # Due today
overdue | today                # Overdue or due today
#Work & due before: tomorrow   # Work project, due before tomorrow
p1 & no date                   # Priority 1 with no due date
@waiting & !subtask            # Label "waiting", exclude subtasks
assigned to: me & due: week    # Assigned to me, due this week
created before: -30 days       # Created in the last 30 days

Security Model

Layer Behaviour
Read-only default TODOIST_WRITE=false — all mutations return an error
Write gate Set TODOIST_WRITE=true to enable create/update/delete/complete tools
Delete confirmation projects_delete, sections_delete, tasks_delete require confirm=true
Token scoping Server uses only the permissions granted to your Todoist API token
HTTP auth Bearer token middleware for remote/HTTP transport deployments

Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "todoist": {
      "command": "todoist-blade-mcp",
      "env": {
        "TODOIST_API_TOKEN": "your-api-token",
        "TODOIST_WRITE": "true"
      }
    }
  }
}

Claude Code

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "todoist": {
      "command": "todoist-blade-mcp",
      "env": {
        "TODOIST_API_TOKEN": "your-api-token",
        "TODOIST_WRITE": "true"
      }
    }
  }
}

Environment Variables

Variable Required Default Description
TODOIST_API_TOKEN Yes Todoist API token (Settings > Integrations > Developer)
TODOIST_WRITE No false Enable write operations (create, update, delete, complete)
TODOIST_BATCH_LIMIT No 100 Max commands per todoist_batch call
TODOIST_TRANSPORT No stdio Transport mode: stdio or http
TODOIST_HTTP_PORT No 8080 Port for HTTP transport
TODOIST_HTTP_TOKEN No Bearer token for HTTP transport auth

Architecture

src/todoist_blade_mcp/
├── server.py       — FastMCP server, 30 @mcp.tool decorators
├── client.py       — Dual API client (REST v2 + Sync v9), delta tokens
├── formatters.py   — Token-efficient output (pipe-delimited, null omission)
├── models.py       — Config, write-gate, batch limits
└── auth.py         — Bearer token middleware for HTTP transport

REST v2 handles individual CRUD — get a task, create a project, post a comment. Straightforward request/response.

Sync v9 handles everything REST can't. Incremental sync uses a sync_token (delta token) so subsequent calls only return what changed. Batch mode packs up to 100 heterogeneous commands (create tasks, move sections, complete items) into a single API call and returns per-command results.

Formatters convert API responses to pipe-delimited text with null fields omitted. A task that would be 800 tokens as formatted JSON becomes ~300 tokens. Over a multi-turn conversation this compounds significantly.

Development

# Install in development mode
make install-dev

# Run tests
make test

# Lint
make lint

# Type check
make typecheck

# Format
make fmt

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

todoist_blade_mcp-0.2.0.tar.gz (109.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

todoist_blade_mcp-0.2.0-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file todoist_blade_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: todoist_blade_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 109.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for todoist_blade_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ef8472a327632b19066121d39a12926244c2e67722ad7dc97c2246f442c046dd
MD5 4d970d79d62a76d9f16a91470009d31e
BLAKE2b-256 f747e5977ad8de6c49e8a5f5f09b167e5c617567ce78d518bec399c9545165c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoist_blade_mcp-0.2.0.tar.gz:

Publisher: publish.yml on Groupthink-dev/todoist-blade-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file todoist_blade_mcp-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for todoist_blade_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7846600051ef8f48b2f2620a6cd759166befddeb5e4ff3e7bc41ce34f9a80e36
MD5 e29d13a5092067e12328fbdae842972d
BLAKE2b-256 c744dd7fa513e639954897ec170fb514c33b8ea98d74e463318abb7d03c12fa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoist_blade_mcp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Groupthink-dev/todoist-blade-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page