Todoist MCP Server
This server acts as an AI-agent-friendly Model Context Protocol (MCP) interface for Todoist, providing comprehensive task management with fine-grained permission control and optimized data payloads.
Task Management
List, retrieve, create, update, complete, reopen, delete, move, and search tasks
Supports due dates, priorities (P1–P4), labels, descriptions, durations, subtasks, and natural language quick-add
Batch create multiple tasks at once; search tasks scoped to a project, section, or label
Project Management
List, get, create, update, and delete projects
Configure name, color, parent, view style (list/board), and favorite status
Section Management
List, get, create, update, and delete sections within projects
Comment Management
List, get, create, update, and delete comments on tasks or projects
Supports optional prefix tags (e.g.,
[Research],[Context],[Note]) and file attachment metadataShortcut helpers for adding research notes and context information to tasks
Label Management
List, create, update, and delete personal labels with name, color, order, and favorite status
Completed Tasks & Statistics
List completed tasks with filters (date range, project, section, pagination)
Retrieve productivity statistics related to completed tasks
Advanced Todoist Surfaces
Read access to reminders, saved filters, activity logs, backups, and user/plan information
Tool Control & Performance
Server-side permission model (
read,write,destructivetiers) controls which tools are registeredConfigurable via mode (
full,standard,read-only) or explicit allow/deny listsDefaults to slim, token-efficient JSON payloads; raw payloads available on request
Audit the live tool surface via
todoist_get_capabilities
Provides integration with the Todoist REST API v2, allowing for the management of tasks, projects, sections, comments, and labels, as well as performing batch operations and accessing completed task history.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Todoist MCP Server Add 'Review the budget proposal' to my Work project for tomorrow morning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Todoist MCP Server (v2)
A Model Context Protocol (MCP) server for the unified Todoist API v1, built for AI-agent consumption: a declarative tool registry with a server-side permission model, slim token-efficient payloads, and coverage of the Pro surfaces (reminders, saved filters, activity log, backups, productivity stats, natural-language quick-add).
v2 highlights (2026-07-05 rebuild)
Permission model at the registration layer. Every tool carries a tier (
read/write/destructive); tools outside the configured mode are never registered, which holds even on harness channels that skip client-side permission prompts.todoist_get_capabilitiesaudits the live surface (registered + filtered + why).Slim payloads by default. Todoist objects carry 25+ fields; slim mode returns only decision-relevant ones and uses compact JSON. Example: 4 projects = ~770B vs ~6KB raw pretty-printed.
TODOIST_SLIM=0restores raw passthrough.Reliable comment counts. The v1 list-payload
note_countis unreliable (reports 0 on tasks with comments); slim list payloads drop it, andtodoist_get_taskreturns an authoritativecomment_countfetched from/comments.Fixed v1.x defects.
todoist_search_tasksnow honorsproject_id/section_id/label(previously accepted-and-ignored);todoist_get_completed_statspages up to 1000 completions (previously silently capped at 200).New v1 surfaces. Reminders, saved filters (Sync-API lane — filters have no REST resource, verified live), activity log (
/activities), backups, user/plan info, productivity stats (/tasks/completed/stats),todoist_quick_add(natural language), anddeadline_dateon task create/update (the do-date vs drop-dead-date distinction).
Related MCP server: Todoist MCP Server
Configuration
{
"mcpServers": {
"todoist": {
"command": "node",
"args": ["/path/to/todoist-mcp/dist/index.js"],
"env": { "TODOIST_API_TOKEN": "${TODOIST_API_TOKEN}" }
}
}
}Environment knobs (all optional):
Var | Values | Default | Effect |
|
|
|
|
| comma list of tool names | — | Force specific tools OFF (wins over everything). |
| comma list of tool names | — | Force specific tools ON regardless of mode (deny still wins). |
|
|
| Slim vs raw payloads. |
Never commit your API token.
Tool surface
51 tools registered in standard mode; 9 more (delete_*, reopen_*) in full.
Ask the server itself: call todoist_get_capabilities for the live list with tiers.
Groups: tasks (list/get/search/hierarchy/duplicates · create/update/quick-add/complete/move/
follow-up/with-context · 4 batch ops · deletes+reopens destructive-tier), projects, sections,
comments (incl. [Research]/[Context] helpers), labels, completed+stats, workspace overview,
reminders, saved filters, activity log, backups, user.
Priority convention: API values are inverted from the UI (P1 urgent = 4 … P4 untriaged = 1).
Response format
Every tool returns { success, data } or { success: false, error: { code, message, details? } }
as a single compact-JSON text block.
Development & testing
npm run build # tsc
npm run typecheck
node smoke-test.mjs # protocol-level live smoke: spawns dist/index.js over stdio,
# verifies mode filtering + live reads (needs TODOIST_API_TOKEN)License
ISC
Available Tools
33 toolstodoist_add_context_commentB
Add context information to a task (prefixed with [Context])
Inputs: task_id (required), context (required).
todoist_add_research_commentB
Add a research note to a task (prefixed with [Research])
Inputs: task_id (required), research (required).
todoist_complete_taskC
Mark a task as completed
Inputs: task_id (required).
todoist_create_commentC
Create a comment on a task or project with optional prefix tags
Inputs: content (required), task_id, project_id, prefix, +1 more.
todoist_create_labelC
Create a new label
Inputs: name (required), color, order, is_favorite.
todoist_create_projectC
Create a new project
Inputs: name (required), parent_id, color, is_favorite, +1 more.
todoist_create_sectionC
Create a new section in a project
Inputs: name (required), project_id (required), order.
todoist_create_taskB
Create a new task with optional due date, priority, labels, and project/section assignment
Inputs: content (required), description, project_id, section_id, +11 more.
todoist_create_tasks_batchC
Create multiple tasks at once (uses parallel API calls)
Inputs: tasks (required).
todoist_delete_commentC
Delete a comment
Inputs: comment_id (required).
todoist_delete_labelC
Delete a label
Inputs: label_id (required).
todoist_delete_projectC
Delete a project permanently
Inputs: project_id (required).
todoist_delete_sectionB
Delete a section
Inputs: section_id (required).
todoist_delete_taskC
Delete a task permanently
Inputs: task_id (required).
todoist_get_commentC
Get a comment by ID
Inputs: comment_id (required).
todoist_get_completed_statsC
Get statistics about completed tasks
Inputs: project_id.
todoist_get_projectC
Get a project by ID
Inputs: project_id (required).
todoist_get_sectionC
Get a section by ID
Inputs: section_id (required).
todoist_get_taskB
Get a single task by ID
Inputs: task_id (required).
todoist_list_commentsC
List comments for a task or project
Inputs: task_id, project_id.
todoist_list_completed_tasksC
List completed tasks (uses Sync API) with optional filters
Inputs: project_id, section_id, limit, offset, +3 more.
todoist_list_labelsB
List all personal labels
Inputs: no named parameters.
todoist_list_projectsB
List all projects
Inputs: no named parameters.
todoist_list_sectionsB
List all sections (optionally filtered by project)
Inputs: project_id.
todoist_list_tasksC
List active tasks with optional filters (project, section, label, or Todoist filter query)
Inputs: project_id, section_id, label, filter, +2 more.
todoist_move_taskC
Move a task to a different project, section, or parent
Inputs: task_id (required), project_id, section_id, parent_id.
todoist_reopen_taskC
Reopen a completed task
Inputs: task_id (required).
todoist_search_tasksB
Search for tasks by content using Todoist search filter
Inputs: query (required), project_id, section_id, label.
todoist_update_commentC
Update a comment
Inputs: comment_id (required), content (required), prefix.
todoist_update_labelC
Update a label
Inputs: label_id (required), name, color, order, +1 more.
todoist_update_projectC
Update a project
Inputs: project_id (required), name, color, is_favorite, +1 more.
todoist_update_sectionC
Update a section name
Inputs: section_id (required), name (required).
todoist_update_taskC
Update an existing task
Inputs: task_id (required), content, description, labels, +8 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Every tool has a clearly distinct purpose targeting specific resources (tasks, projects, sections, labels, comments) and actions (create, get, list, update, delete, complete, reopen, move, search). No ambiguity exists—for example, todoist_create_task, todoist_update_task, and todoist_complete_task are well-differentiated, and comment tools are specialized by prefix or general use.
All tools follow a consistent snake_case pattern with a 'todoist_' prefix and verb_noun structure (e.g., todoist_create_task, todoist_list_projects). Minor variations like 'todoist_add_context_comment' vs. 'todoist_create_comment' are semantically justified and maintain readability without breaking the pattern.
33 tools is excessive for a Todoist server, making the set feel heavy and potentially overwhelming. While it covers many operations, the count could be streamlined—for instance, batch operations or specialized comment tools might be consolidated without losing functionality, aligning better with typical MCP scopes of 3-15 tools.
The tool set provides complete CRUD/lifecycle coverage for all core Todoist entities (tasks, projects, sections, labels, comments), including advanced operations like moving tasks, reopening completed ones, searching, and batch creation. No obvious gaps exist; agents can perform any expected workflow without dead ends.
Maintenance
Related MCP Connectors
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server that provides full integration between Claude and Todoist, enabling task, project, section, and label management through 24 different tools with the complete Todoist API.3040 npm6MIT
- AlicenseAqualityDmaintenanceAn unofficial MCP server that enables AI agents to create and list tasks in Todoist using natural language. It supports task details such as due dates, priorities, and labels, while allowing for project-based filtering.3MIT
- AlicenseAqualityDmaintenanceA Python MCP server that enables AI assistants to manage Todoist tasks and projects through the Model Context Protocol. It supports full CRUD operations for tasks and projects, including support for nested projects and Todoist's advanced filter syntax.11MIT
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides AI assistants with full access to Todoist tasks, projects, labels, and filters. It enables comprehensive task management, project organization, and productivity tracking through a wide range of specialized tools.229 npmMIT