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

Metadata

Release files for todoist-blade-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for todoist-blade-mcp 0.2.0
File Size Uploaded
todoist_blade_mcp-0.2.0.tar.gz 109.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for todoist-blade-mcp 0.2.0
File Interpreter ABI Platform
todoist_blade_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 132.5 kB

Release files / todoist_blade_mcp-0.2.0.tar.gz

Download URL todoist_blade_mcp-0.2.0.tar.gz
Size 109.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ef8472a327632b19066121d39a12926244c2e67722ad7dc97c2246f442c046dd
BLAKE2b-256 checksum
How to use checksums
f747e5977ad8de6c49e8a5f5f09b167e5c617567ce78d518bec399c9545165c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.

Transparency log

Release files / todoist_blade_mcp-0.2.0-py3-none-any.whl

Download URL todoist_blade_mcp-0.2.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7846600051ef8f48b2f2620a6cd759166befddeb5e4ff3e7bc41ce34f9a80e36
BLAKE2b-256 checksum
How to use checksums
c744dd7fa513e639954897ec170fb514c33b8ea98d74e463318abb7d03c12fa7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page