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 (found in Todoist Settings → Integrations → Developer) |
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
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| todoist_get_projectsB | Get all projects from the user's Todoist account |
| todoist_get_projectC | Get a single project from Todoist Args: project_id: ID of the project to retrieve |
| todoist_add_projectB | Create a new project in Todoist Args: name: Name of the project color: Color of the project (optional) parent_id: ID of the parent project for creating sub-projects (optional) is_favorite: Whether the project should be marked as favorite (optional) view_style: View style of the project, either 'list' or 'board' (optional) |
| todoist_update_projectB | Update an existing project in Todoist Args: project_id: ID of the project to update name: New name for the project (optional) color: New color for the project (optional) is_favorite: Whether the project should be marked as favorite (optional) view_style: View style of the project, either 'list' or 'board' (optional) |
| todoist_delete_projectC | Deletes a project from the user's Todoist account Args: project_id: ID of the project to delete |
| todoist_get_sectionsC | Get all sections from the user's Todoist account Args: project_id: Filter sections by project ID (optional) |
| todoist_get_sectionC | Get a single section from Todoist Args: section_id: ID of the section to retrieve |
| todoist_add_sectionB | Create a new section in Todoist Args: name: Section name project_id: Project ID this section should belong to order: Order among other sections in a project (optional) |
| todoist_update_sectionB | Updates a section in Todoist Args: section_id: ID of the section to update name: New name for the section |
| todoist_delete_sectionC | Deletes a section from Todoist Args: section_id: ID of the section to delete |
| todoist_get_tasksB | Get a list of tasks from Todoist with various filters Args: project_id: Filter tasks by project ID (optional) filter: Natural language filter like 'today', 'tomorrow', 'next week', 'priority 1', 'overdue' (optional) priority: Filter by priority level (1-4) (optional) limit: Maximum number of tasks to return (optional) |
| todoist_get_taskC | Get an active task from Todoist Args: task_id: ID of the task to retrieve |
| todoist_create_taskB | Create a new task in Todoist with optional description, due date, and priority Args: content: The content/title of the task description: Detailed description of the task (optional) project_id: Task project ID. If not set, task is put to user's Inbox (optional) section_id: ID of section to put task into (optional) parent_id: Parent task ID (optional) order: Non-zero integer value used to sort tasks under the same parent (optional) labels: The task's labels (a list of names that may represent either personal or shared labels) (optional) priority: Task priority from 1 (normal) to 4 (urgent) (optional) due_string: Natural language due date like 'tomorrow', 'next Monday', 'Jan 23' (optional) due_date: Specific date in YYYY-MM-DD format relative to user's timezone (optional) due_datetime: Specific date and time in RFC3339 format in UTC (optional) due_lang: 2-letter code specifying language in case due_string is not written in English (optional) assignee_id: The responsible user ID (only applies to shared tasks) (optional) duration: A positive integer for the amount of duration_unit the task will take (optional) duration_unit: The unit of time that the duration field represents (minute or day) (optional) deadline_date: Specific date in YYYY-MM-DD format relative to user's timezone (optional) deadline_lang: 2-letter code specifying language of deadline (optional) |
| todoist_update_taskB | Update an existing task in Todoist Args: task_id: ID of the task to update content: New content/title for the task (optional) description: New description for the task (optional) labels: New labels for the task (optional) priority: New priority level from 1 (normal) to 4 (urgent) (optional) due_string: New due date in natural language like 'tomorrow', 'next Monday' (optional) due_date: New specific date in YYYY-MM-DD format (optional) due_datetime: New specific date and time in RFC3339 format in UTC (optional) due_lang: 2-letter code specifying language in case due_string is not written in English (optional) assignee_id: The responsible user ID or null to unset (for shared tasks) (optional) duration: A positive integer for the amount of duration_unit the task will take (optional) duration_unit: The unit of time that the duration field represents (minute or day) (optional) deadline_date: Specific date in YYYY-MM-DD format relative to user's timezone (optional) deadline_lang: 2-letter code specifying language of deadline (optional) |
| todoist_close_taskC | Close a task in Todoist (i.e., mark the task as complete) Args: task_id: ID of the task to close |
| todoist_reopen_taskA | Reopen a task in Todoist (i.e., mark the task as incomplete) Args: task_id: ID of the task to reopen |
| todoist_delete_taskC | Delete a task from Todoist Args: task_id: ID of the task to delete |
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 17 tools
Every tool has a clearly distinct purpose targeting specific resources (projects, sections, tasks) and actions (add, get, update, delete, close, reopen). There is no overlap or ambiguity; for example, todoist_close_task and todoist_reopen_task are clearly differentiated, and each CRUD operation is uniquely named for its resource.
All tool names follow a consistent verb_noun pattern with the prefix 'todoist_' and snake_case throughout (e.g., todoist_add_project, todoist_get_tasks, todoist_update_task). This predictable naming scheme makes it easy for agents to understand and select the correct tool.
With 17 tools, the count is slightly high but reasonable for a comprehensive Todoist integration covering projects, sections, and tasks with full CRUD operations and additional actions like close/reopen. It's well-scoped for the domain, though it could be streamlined by combining some get operations.
The tool set provides complete CRUD coverage for projects, sections, and tasks, including lifecycle actions (close, reopen) and filtering capabilities. There are no obvious gaps; agents can manage the entire Todoist workflow from creation to deletion with all necessary operations available.