home / mcp / todoist mcp server
Bridges Todoist data with AI assistants to manage projects, sections, tasks, labels, and comments via natural language interactions.
Configuration
View docs{
"mcpServers": {
"koki-develop-todoist-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TODOIST_API_TOKEN=<your_api_token_here>",
"ghcr.io/koki-develop/todoist-mcp-server:latest"
],
"env": {
"TODOIST_API_TOKEN": "<your_api_token_here>"
}
}
}
}You can connect Todoist with AI assistants to manage your entire productivity workflow through natural language conversations. This MCP server bridges Todoist data with conversational tooling, enabling you to work with projects, sections, tasks, labels, and comments directly from AI interactions.
You interact with Todoist through an MCP client by adding Todoist as an MCP server. Once connected, your AI assistant can fetch project lists, create sections, add tasks, assign labels, and post comments based on natural language commands. You can perform bulk actions like moving multiple tasks between projects or sections, closing or reopening tasks, and organizing your workspace with labels and comments integrated into conversations.
Prerequisites: ensure Docker is installed on your machine. You also need a Todoist API token to authorize access to your Todoist data.
1. Obtain your Todoist API token from your Todoist developer settings.
2. Run the MCP server using Docker with your API token included in the environment. Use the following command as a starting point.
{
"mcpServers": {
"todoist": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TODOIST_API_TOKEN=<your_api_token_here>",
"ghcr.io/koki-develop/todoist-mcp-server:latest"
]
}
}
}Configure your MCP client by adding the server configuration shown above. Replace <your_api_token_here> with your actual Todoist API token. The server will expose endpoints that allow your AI assistant to query and manipulate Todoist data according to the tools described in the server capabilities.
Keep your Todoist API token secret. Treat it like a password and do not share it in logs or insecure channels. Use secure storage for the token and restrict access to the MCP client configuration.
If you encounter connection issues, verify that Docker is running, the API token is correct, and the MCP client is configured to reach the Todoist MCP server. Check the container logs for authentication errors or missing permissions.
Fetches all Todoist projects accessible to you, including metadata like name, color, and hierarchy.
Fetches detailed information for a single project by its ID, including configuration and structure.
Creates a new Todoist project with customizable settings.
Updates properties of an existing project.
Permanently removes a project and all associated data.
Retrieves all sections within a specific project with metadata such as name and order.
Fetches details for a specific section by its ID.
Creates a new section within a project.
Updates the name of an existing section.
Removes a section and moves its tasks to the project root.
Retrieves tasks with flexible filtering and returns metadata like due dates and labels.
Retrieves tasks using advanced Todoist filter syntax with automatic pagination.
Fetches detailed information for a specific task by its ID.
Creates a new Todoist task with comprehensive options.
Updates properties of an existing task.
Permanently deletes a task and associated data.
Marks a task as completed, preserving data.
Reopens a completed task, restoring its active state.
Moves multiple tasks to another project.
Moves multiple tasks to a different section.
Converts multiple tasks to subtasks under a specified parent.
Creates a new personal label with configurable properties.
Updates properties of an existing label.
Fetches details for a specific label by ID.
Fetches all labels available to the user.
Deletes a label and removes it from all tasks.
Adds a comment to a task with optional attachments.
Adds a comment to a project with optional attachments.
Updates a comment's content while preserving metadata.
Fetches all comments for a specific task.
Fetches all comments for a specific project.
Deletes a specific comment by ID.