mcp-todoist
This MCP server enables programmatic Todoist task and project management through a comprehensive tool set using the Todoist REST API v1, integrating seamlessly with MCP-compatible clients like Claude Desktop, Claude Code CLI, and Cursor IDE.
Complete Task Management: Create, read, update, delete, complete, uncomplete, and batch process tasks with support for natural language dates, priorities, labels, recurring tasks, and deadlines (distinct from due dates)
Project Organization: Full CRUD operations for projects including archiving/unarchiving, hierarchical structures, and custom view styles
Section Management: Organize tasks within projects using sections with creation, updating, deletion, and reordering capabilities
Comment System: Add, retrieve, update, and delete comments on tasks and projects with file attachment support and 15,000 character limits
Advanced Filtering: Create, retrieve, update, delete, and query custom filters using Todoist query syntax for sophisticated task searches
Flexible Reminders: Set relative (minutes before due), absolute (specific datetime), and location-based (geofenced) reminders with natural language date support
Label Management: Handle personal and shared labels with full CRUD operations, renaming, and performance-optimized caching
Batch Operations: Execute up to 100 operations per request using the Sync API for efficient bulk updates
Smart Rate Limiting: Built-in intelligent rate limiting with automatic retry using token bucket algorithms to adhere to API constraints
Completed Task Querying: Retrieve completed tasks within time-bounded windows with cursor-based pagination
Provides comprehensive task and project management capabilities through the Todoist REST API, including CRUD operations for tasks, projects, sections, comments, filters, reminders, and labels with support for natural language dates, batch operations, and file attachments.
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., "@mcp-todoist add a task to buy groceries tomorrow"
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
MCP server enabling programmatic Todoist task and project management through an optimized tool set using Todoist REST API v1. Integrates seamlessly with Claude Desktop and other MCP-compatible clients.
Table of Contents
Related MCP server: Todoist MCP Server
Features
8 Core Tools: Comprehensive task and project management
Tasks (CRUD + complete/uncomplete)
Bulk Tasks (batch operations on up to 50 tasks)
Projects (CRUD + archive/unarchive)
Sections (organize tasks within projects)
Comments (with file attachment support)
Filters (custom task queries)
Reminders (relative, absolute, location-based)
Labels (personal and shared label management)
Natural Language Dates: "tomorrow", "every Monday", "next Friday at 3pm"
Deadline Support: Set completion deadlines distinct from due dates
Batch Operations: Execute up to 100 operations per request via Sync API
Smart Rate Limiting: Token bucket algorithm with automatic retry
Type Safety: Full TypeScript implementation with Zod validation
Comprehensive Testing: Contract and integration test coverage
Prerequisites
Node.js 18 or higher
Todoist account (Sign up free)
Todoist API token (Get yours here)
Any of the popular MCP clients, such as:
Any other MCP-compatible client
Installation
This MCP server is deployed as a remote HTTP service. No local installation required - just configure your MCP client to connect to the HTTP endpoint.
For Deployment
If you want to deploy your own instance:
Fork this repository
Deploy to Vercel (button below)
Configure
TODOIST_API_TOKENin Vercel environment variables
Configuration
MCP Clients
Configure your MCP client with the HTTP transport:
Claude Desktop / Claude Code
Add to your MCP settings file:
macOS: ~/.claude/settings.json
Windows: %APPDATA%\.claude\settings.json
Linux: ~/.config/claude/settings.json
{
"mcpServers": {
"todoist": {
"transport": {
"type": "http",
"url": "https://todoist.uberfolks.ca/mcp"
}
}
}
}For local development:
{
"mcpServers": {
"todoist": {
"transport": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
}Available Tools
todoist_tasks
Complete task management with create, get, update, delete, list, complete, uncomplete, and list_completed actions. Supports natural language dates, deadlines, priorities, labels, recurring tasks, and querying completed tasks within time-bounded windows.
Key parameters: action, task_id, content, due_date, due_string, deadline, priority, labels, project_id, completed_query_type, since, until
Completed tasks querying:
list_completedaction retrieves completed tasksQuery by completion date (3-month window) or due date (6-week window)
Supports filtering by project, section, workspace, labels, and more
Cursor-based pagination for large result sets
Example: Query all tasks completed in September with Work label
{ "action": "list_completed", "completed_query_type": "by_completion_date", "since": "2025-09-01T00:00:00Z", "until": "2025-09-30T23:59:59Z", "filter_query": "@Work", "limit": 50 }
todoist_projects
Project management with create, get, update, delete, list, archive, and unarchive actions. Organize work with hierarchical projects and custom views.
Key parameters: action, project_id, name, color, is_favorite, view_style
todoist_sections
Section management within projects for better task organization. Create, get, update, delete, list, and reorder sections.
Key parameters: action, section_id, project_id, name, order
todoist_comments
Add and manage comments on tasks and projects with file attachment support (up to 15,000 characters).
Key parameters: action, comment_id, task_id, project_id, content, attachment
todoist_filters
Create and manage custom filters for advanced task queries. List, create, update, delete, and query filters.
Key parameters: action, filter_id, name, query, color, is_favorite
todoist_reminders
Set reminders for tasks with three types: relative (X minutes before due), absolute (specific datetime), and location-based (geofenced).
Key parameters: action, reminder_id, item_id, type, minute_offset, due, loc_lat, loc_long
todoist_labels
Manage personal and shared labels with create, get, update, delete, list, rename, and remove actions. Includes caching for optimal performance.
Key parameters: action, label_id, name, color, is_favorite, order
todoist_bulk_tasks
Perform bulk operations on up to 50 tasks simultaneously. Supports update, complete, uncomplete, and move operations with automatic deduplication and partial execution mode.
Key parameters: action, task_ids (1-50 items), project_id, section_id, labels, priority, due_string, deadline_date
Supported Actions:
update- Modify task fields (due date, priority, labels, etc.)complete- Mark multiple tasks as doneuncomplete- Reopen completed tasksmove- Change project/section/parent for multiple tasks
Usage Examples:
// Bulk update due dates for 5 tasks
{
"action": "update",
"task_ids": ["7654321", "7654322", "7654323", "7654324", "7654325"],
"due_string": "tomorrow"
}
// Bulk complete 10 tasks
{
"action": "complete",
"task_ids": ["7654321", "7654322", "7654323", "7654324", "7654325",
"7654326", "7654327", "7654328", "7654329", "7654330"]
}
// Bulk move 7 tasks to different project
{
"action": "move",
"task_ids": ["7654321", "7654322", "7654323", "7654324", "7654325",
"7654326", "7654327"],
"project_id": "2203306141"
}
// Bulk update multiple fields for 8 tasks
{
"action": "update",
"task_ids": ["7654321", "7654322", "7654323", "7654324",
"7654325", "7654326", "7654327", "7654328"],
"priority": 2,
"labels": ["urgent", "work"],
"deadline_date": "2025-12-31"
}Limitations:
Maximum 50 unique tasks per operation (after deduplication)
Cannot modify
content(task title),description, orcommentsin bulkAll tasks receive the same field updates
Performance: <2 seconds for 50-task operations
Response Structure:
Individual results for each task (success/failure)
Summary counts (total, successful, failed)
Automatic deduplication metadata
Execution time tracking
Rate Limiting
The server implements intelligent rate limiting to respect Todoist API constraints:
REST API: 300 requests/minute (token bucket: 300 capacity, 5 tokens/sec refill)
Sync API: 50 requests/minute (token bucket: 50 capacity, ~0.83 tokens/sec refill)
Automatic Retry: Exponential backoff on 429 responses
Batch Operations: Use for bulk updates to minimize API calls
Development
Prerequisites
Node.js 18+
Vercel CLI:
npm install -g vercelTodoist API token
Local Setup
Clone the repository:
git clone https://github.com/shayonpal/mcp-todoist.git cd mcp-todoistInstall dependencies:
npm installCreate
.env.local:echo "TODOIST_API_TOKEN=your_token_here" > .env.localStart development server:
vercel devServer runs at
http://localhost:3000/mcpTest endpoint:
curl -X POST http://localhost:3000/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Building
npm run buildTesting
npm testContributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
GNU General Public License v3.0 - see LICENSE for details.
Copyright (C) 2025 Shayon Pal
Available Tools
7 toolstodoist_commentsB
Comment management for Todoist tasks and projects - create, read, update, delete comments with 15,000 character limit and file attachment support
Inputs: action (required), attachment, comment_id, content, +2 more.
todoist_filtersC
Filter management and task querying for Todoist - query existing filters, retrieve tasks within filters, and manage saved filter criteria
Inputs: action (required), color, filter_id, is_favorite, +4 more.
todoist_labelsC
label management for Todoist - create, read, update, delete labels with full CRUD operations
Inputs: action (required), color, cursor, is_favorite, +5 more.
todoist_projectsC
Complete project management for Todoist - create, read, update, archive, and query projects with metadata support
Inputs: action (required), color, include_archived, is_favorite, +4 more.
todoist_remindersA
Manage reminders for Todoist tasks. Supports three reminder types: relative (minutes before task due date), absolute (specific date and time), and location (geofenced area). Natural language due dates supported (e.g., "tomorrow at 10:00", "every day", "every 4th").
Inputs: action (required), due, item_id, loc_lat, +8 more.
todoist_sectionsC
Section management within Todoist projects - create, read, update, delete, and reorder sections for better task organization
Inputs: action (required), name, order, project_id, +2 more.
todoist_tasksC
Comprehensive task management for Todoist - create, read, update, delete, and query tasks with full CRUD operations and batch support
Inputs: action (required), assignee_id, batch_commands, content, +16 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool is clearly scoped to a distinct Todoist resource (comments, filters, labels, projects, reminders, sections, tasks) with no overlap in purpose. The descriptions specify unique operations for each resource, making it easy for an agent to select the right tool without confusion.
All tool names follow a consistent 'todoist_' prefix followed by the resource name in plural form (e.g., todoist_comments, todoist_tasks). This uniform pattern enhances predictability and readability across the entire tool set.
With 7 tools, the server covers all major Todoist entities (tasks, projects, labels, etc.) without being overwhelming. This count is well-suited for the domain, providing comprehensive coverage while maintaining manageability.
The tool set offers complete CRUD/lifecycle coverage for Todoist's core resources, including tasks, projects, labels, sections, comments, filters, and reminders. There are no obvious gaps, ensuring agents can handle typical workflows without dead ends.
Maintenance
Related MCP Connectors
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Create, list, and complete todo items through MCP.
Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.
Related MCP Servers
- AlicenseBqualityDmaintenanceComplete Todoist REST API v2 integration with support for tasks, projects, sections, comments, and labels management35349 npm63MIT
- AlicenseBqualityDmaintenanceAn MCP server that integrates with the Todoist REST API v2 to enable AI assistants to manage tasks, projects, sections, comments, and labels. It supports comprehensive operations including batch task creation, history tracking for completed tasks, and organized project management.33349 npm1MIT
- 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
- AlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server for the Todoist API. Provides full access to tasks, projects, labels, sections, and comments with support for all task properties including priorities, due dates, labels, subtasks, and more.94 npmMIT