Todoist MCP Server
Provides comprehensive access to Todoist API for managing tasks, projects, labels, sections, and comments.
Click on "Install 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 Servershow my tasks for today"
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
A 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.
Features
Complete Task Management: Create, read, update, delete, complete, and reopen tasks
Full Task Properties Support: Content, description, due dates (natural language or specific), priority (1-4), labels, duration estimates, subtasks, assignees, and more
Project Management: Create and manage projects with colors, hierarchies, and view styles
Label Management: Create and organize labels for cross-project task categorization
Section Management: Organize tasks within projects using sections
Comment Management: Add and manage comments on tasks and projects
Rate Limiting: Built-in rate limit handling (450 requests per 15 minutes)
Error Handling: Comprehensive error handling with meaningful error messages
Related MCP server: MCP Todoist
Installation
Prerequisites
Node.js (v18 or higher)
npm
A Todoist account with API token
Get Your Todoist API Token
Log in to your Todoist account
Go to Settings → Integrations → Developer
Copy your API token
Set it as an environment variable:
TODOIST_API_TOKEN
Install the Server
# Clone or download this repository
cd todoist-mcp
# Install dependencies
npm install
# Build the project
npm run buildConfiguration
For Claude Desktop
Add this to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"todoist": {
"command": "node",
"args": [
"E:\\my drive\\programs and files\\dev\\todoist MCP\\build\\index.js"
],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}Replace the path with your actual installation path and add your Todoist API token.
For Other MCP Clients
Set the TODOIST_API_TOKEN environment variable and run:
node build/index.jsAvailable Tools
Task Management
list_tasks
Get all active tasks with optional filtering.
Parameters:
project_id(optional): Filter by projectsection_id(optional): Filter by sectionlabel(optional): Filter by label namefilter(optional): Custom filter string (e.g., 'today', 'p1', 'overdue')lang(optional): Language code for filter parsing
Example:
{
"filter": "today",
"project_id": "2203306141"
}get_task
Get a single task by ID with all properties.
Parameters:
task_id(required): Task ID
create_task
Create a new task with comprehensive properties.
Parameters:
content(required): Task titledescription(optional): Task descriptionproject_id(optional): Project IDsection_id(optional): Section IDparent_id(optional): Parent task ID for subtaskspriority(optional): 1-4, where 4 is urgentlabels(optional): Array of label namesdue_string(optional): Natural language due date (e.g., "tomorrow at 14:00")due_date(optional): YYYY-MM-DD formatdue_datetime(optional): RFC3339 formatdue_lang(optional): Language for parsing due_stringassignee_id(optional): User ID to assignduration(optional): Duration amountduration_unit(optional): "minute" or "day"
Example:
{
"content": "Buy groceries",
"description": "Milk, eggs, bread",
"priority": 3,
"labels": ["shopping", "urgent"],
"due_string": "tomorrow at 14:00"
}update_task
Update an existing task.
Parameters:
task_id(required): Task IDAll other parameters from
create_task(optional)
complete_task
Mark a task as complete. Recurring tasks move to next occurrence.
Parameters:
task_id(required): Task ID
reopen_task
Reopen a completed task.
Parameters:
task_id(required): Task ID
delete_task
Permanently delete a task.
Parameters:
task_id(required): Task ID
Project Management
list_projects
Get all projects.
get_project
Get a single project by ID.
Parameters:
project_id(required): Project ID
create_project
Create a new project.
Parameters:
name(required): Project nameparent_id(optional): Parent project ID for nested projectscolor(optional): Color name (e.g., "blue", "red")is_favorite(optional): Booleanview_style(optional): "list" or "board"
update_project
Update an existing project.
Parameters:
project_id(required): Project IDAll other parameters from
create_project(optional)
delete_project
Permanently delete a project and all its tasks.
Parameters:
project_id(required): Project ID
Label Management
list_labels
Get all labels.
get_label
Get a single label by ID.
Parameters:
label_id(required): Label ID
create_label
Create a new label.
Parameters:
name(required): Label namecolor(optional): Color nameorder(optional): Position in listis_favorite(optional): Boolean
update_label
Update an existing label.
Parameters:
label_id(required): Label IDAll other parameters from
create_label(optional)
delete_label
Permanently delete a label.
Parameters:
label_id(required): Label ID
Section Management
list_sections
Get all sections, optionally filtered by project.
Parameters:
project_id(optional): Project ID
get_section
Get a single section by ID.
Parameters:
section_id(required): Section ID
create_section
Create a new section.
Parameters:
name(required): Section nameproject_id(required): Project IDorder(optional): Position in project
update_section
Update an existing section.
Parameters:
section_id(required): Section IDname(required): New section name
delete_section
Delete a section (tasks are not deleted).
Parameters:
section_id(required): Section ID
Comment Management
list_comments
Get comments for a task or project.
Parameters:
task_id(optional): Task IDproject_id(optional): Project ID
get_comment
Get a single comment by ID.
Parameters:
comment_id(required): Comment ID
create_comment
Create a new comment.
Parameters:
content(required): Comment texttask_id(optional): Task IDproject_id(optional): Project IDattachment(optional): File attachment object
update_comment
Update an existing comment.
Parameters:
comment_id(required): Comment IDcontent(required): Updated comment text
delete_comment
Permanently delete a comment.
Parameters:
comment_id(required): Comment ID
Development
# Watch mode for development
npm run watch
# Build
npm run buildRate Limits
The Todoist API has the following rate limits:
450 requests per 15 minutes per user
The server automatically tracks requests and throws an error if the limit is exceeded.
Error Handling
All tools provide meaningful error messages when operations fail. Common errors include:
Missing or invalid API token
Rate limit exceeded
Invalid task/project/label IDs
Invalid parameter values
License
MIT
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
API Version
This server uses Todoist REST API v2.
Acknowledgments
Built using the Model Context Protocol SDK and the Todoist REST API.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/olsonale/todoist-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server