Todoist MCP Helper
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TODOIST_API_TOKEN | Yes | Your Todoist API Token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsA | List all projects in the user's Todoist account. Returns project names, IDs, and colors. |
| create_projectB | Create a new project. Args: name: Name of the project. color: Optional color (e.g. 'berry_red', 'blue', 'charcoal'). parent_id: Optional parent project ID to create as a sub-project. |
| update_projectB | Update an existing project. Args: project_id: ID of the project to update. name: New name for the project. color: New color for the project. is_favorite: Whether to mark as favorite. |
| delete_projectA | Delete a project and all its tasks. Args: project_id: ID of the project to delete. |
| get_project_overviewA | Get a comprehensive overview of all projects with their sections and task counts. Useful for understanding the full project structure before organizing tasks. |
| get_tasksA | Get all active tasks. Can filter by project, label, or Todoist filter string. Args: project_id: Optional project ID to filter tasks by. label: Optional label name to filter tasks by. filter_str: Optional Todoist filter string (e.g. 'today', 'overdue', 'p1'). |
| get_taskC | Get detailed information about a single task. Args: task_id: ID of the task. |
| create_taskA | Create a new task in Todoist. Args: content: The task title/content (required). description: Optional description text. project_id: Optional project ID to add the task to. section_id: Optional section ID within a project. parent_id: Optional parent task ID (for sub-tasks). due_string: Optional due date in natural language (e.g. 'tomorrow', 'every monday', 'Jan 23'). due_date: Optional due date in YYYY-MM-DD format. priority: Priority from 1 (normal) to 4 (urgent). Default is 1. labels: Optional comma-separated label names (e.g. 'work,urgent'). |
| update_taskB | Update an existing task. Args: task_id: ID of the task to update (required). content: New task title/content. description: New description. due_string: New due date in natural language. due_date: New due date in YYYY-MM-DD format. due_datetime: New due date and time in RFC3339 format. priority: New priority (1-4). labels: New comma-separated label names (replaces existing labels). assignee_id: ID of user to assign the task to. duration: Task duration in minutes or days (requires duration_unit). duration_unit: Unit for duration: 'minute' or 'day'. deadline_date: Deadline date in YYYY-MM-DD format. |
| move_taskB | Move a task to a different project, section, or under a parent task. This enables cross-project task organization. Args: task_id: ID of the task to move (required). project_id: ID of the target project to move the task to. section_id: ID of the target section to move the task to. parent_id: ID of the parent task to move the task under. |
| close_taskC | Close (complete) a task. Args: task_id: ID of the task to close. |
| reopen_taskB | Reopen a previously completed task. Args: task_id: ID of the task to reopen. |
| delete_taskB | Permanently delete a task. Args: task_id: ID of the task to delete. |
| list_sectionsB | List sections, optionally filtered by project. Args: project_id: Optional project ID to filter sections by. |
| create_sectionC | Create a new section within a project. Args: name: Name of the section. project_id: ID of the project to create the section in. |
| update_sectionB | Rename an existing section. Args: section_id: ID of the section to update. name: New name for the section. |
| delete_sectionA | Delete a section and move its tasks to the parent project. Args: section_id: ID of the section to delete. |
| list_labelsA | List all personal labels in the user's Todoist account. |
| create_labelB | Create a new personal label. Args: name: Name of the label. color: Optional color (e.g. 'berry_red', 'blue', 'charcoal'). |
| get_commentsB | Get comments for a task or project. Must provide either task_id or project_id. Args: task_id: ID of the task to get comments for. project_id: ID of the project to get comments for. |
| create_commentA | Add a comment to a task or project. Must provide either task_id or project_id. Args: content: The comment text. task_id: ID of the task to comment on. project_id: ID of the project to comment on. |
| search_task_by_nameA | Search for tasks by name using partial/fuzzy matching. Returns all tasks whose title contains the search query. Args: query: Search keyword to match against task titles (case-insensitive). |
| complete_task_by_nameA | Complete a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and complete. |
| delete_task_by_nameA | Delete a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and delete. |
| update_task_by_nameA | Update a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and update. content: New task title. description: New description. due_string: New due date in natural language (e.g. 'tomorrow', 'next Monday'). priority: New priority (1-4). |
| move_task_by_nameA | Move a task to a different project/section by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and move. project_id: ID of the target project to move the task to. section_id: ID of the target section to move the task to. parent_id: ID of the parent task to move the task under. |
| set_api_tokenA | Set or update the Todoist API Token at runtime. This allows switching accounts without restarting the server. The token will persist for the current session only. Args: token: Your Todoist API Token (get from https://app.todoist.com/app/settings/integrations). |
| get_current_configA | Show the current configuration status (whether API token is set, API base URL, etc). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/LittlePeter52012/todoist-mcp-helper'
If you have feedback or need assistance with the MCP directory API, please join our Discord server