Todoist MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TODOIST_API_TOKEN | Yes | Your Todoist API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_todoist_projectsA | List all Todoist projects. Returns every project in the user's account with its ID and name. Use this to discover valid project names for other tools. Example: list_todoist_projects() Returns: [{"id": "12345", "name": "Inbox"}, {"id": "67890", "name": "Work Tasks"}, ...] |
| get_project_tasksA | Get all tasks from a Todoist project. Returns tasks with: id, content, description, labels, due, priority, project_id. |
| list_todoist_labelsA | List all personal Todoist labels. Returns every label with its ID, name, and color. Labels are referenced by name in task operations. Example: list_todoist_labels() Returns: [{"id": "111", "name": "Home", "color": "blue"}, ...] |
| get_completed_tasksA | Get completed tasks from Todoist within a date range. Returns tasks completed between Example: get_completed_tasks(since="2026-03-12", until="2026-03-19") Returns: [{"id": "123", "content": "Buy milk", "project_id": "456", ...}, ...] |
| create_taskA | Create a new task in Todoist. Creates a task with the given content in the specified project. Optionally attach labels, a due date, and a description. |
| update_taskA | Update fields on an existing Todoist task. Only specified fields are changed; others remain untouched. Note: setting labels replaces all existing labels on the task. |
| move_taskB | Move a task to a different Todoist project. |
| complete_taskA | Mark a Todoist task as complete. The task will be moved to completed status. For recurring tasks, this advances to the next occurrence. |
| delete_taskA | Permanently delete a Todoist task. This action is irreversible. Consider complete_task() instead if you want to keep a record of the task. |
| batch_update_tasksA | Batch update multiple Todoist tasks in a single API call. Uses the Todoist Sync API for efficiency — processes all operations in one request. Each operation can update fields and/or move a task to a different project. This is ideal for triage workflows where you need to process many tasks at once. |
| get_task_commentsA | Get all comments on a Todoist task. Returns all comments attached to the specified task, ordered by creation time. |
| add_task_commentA | Add a comment to a Todoist task. Creates a new comment on the specified task. Supports Markdown formatting. |
| create_todoist_labelB | Create a new personal label in Todoist. |
| rename_todoist_labelB | Rename an existing Todoist label. |
| delete_todoist_labelA | Permanently delete a Todoist label. This removes the label from all tasks that have it. This action is irreversible. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool has a distinct purpose: task CRUD, comment operations, label management, and project listing. There is no overlap that would confuse an agent; even similar tools like update_task and batch_update_tasks are clearly differentiated by scope.
All tools use snake_case verb_noun patterns, which is consistent. However, there is a minor inconsistency: some tools include 'todoist' (e.g., create_todoist_label) while others do not (e.g., create_task). This is a small deviation from a pure pattern.
15 tools cover the main Todoist entities (tasks, comments, labels, projects) without being overwhelming. The count is well-scoped for the server's purpose.
The tool set is missing several key operations: no create/delete/rename projects, no get single task by ID, no delete or update comments. These gaps would force agents to work around missing functionality, causing potential failures.