- Home
- MCP servers
- Todoist
Todoist
- python
1
GitHub Stars
python
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"johnxjp-todoist-mcp-python": {
"command": "uvx",
"args": [
"--from",
"https://github.com/Johnxjp/todoist-mcp-python.git",
"mcp-server-todoist"
],
"env": {
"TODOIST_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}You can run a Todoist MCP Server that acts as a bridge between your clients and the Todoist API. It handles authentication, data transformation, and task-management commands so you can manage Todoist tasks through natural language interactions or automated workflows.
How to use
Start the MCP server using one of the provided runtime configurations, then connect your MCP client (such as Claude) with the corresponding server profile. You can create tasks, fetch tasks with filters, update task attributes, delete tasks, and mark tasks as complete through clearly named tools. Make sure you supply your Todoist API token via the configured environment variable to enable API access.
How to install
Prerequisites you need before starting the server are Python 3.12 and the UV tooling used to run MCP servers. You also need a Todoist account and a Todoist API token.
Choose one of the following installation/run paths.
Option A — Run via UVX without cloning
Follow these commands to run directly from the source repository using UVX.
uvx --from https://github.com/Johnxjp/todoist-mcp-python.git mcp-server-todoist
Additional configurations and setup
Configure the MCP connection in your client to point to one of the server configurations shown below. You will provide your Todoist API token in the environment variables for secure access.
Option A configuration (UVX-based run) shows how to reference the remote source and pass the token through an environment variable.
{
"mcpServers": {
"todoist-server": {
"command": "uvx",
"args": [
"--from",
"https://github.com/Johnxjp/todoist-mcp-python.git",
"mcp-server-todoist"
],
"env": {
"TODOIST_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
Additional configurations and setup
Option B configuration (cloned repository) shows how to run from a local copy using uv and the Python MCP runtime.
git clone git@github.com:Johnxjp/todoist-mcp-python.git
{
"mcpServers": {
"todoist-server": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"todoist_api_python",
"mcp",
"run",
"/full/path/to/todoist_server.py"
],
"env": {
"TODOIST_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
Available tools and how to use them
The server exposes the following task-management tools you can invoke through your MCP client.
Tools
- create_task: Create a new Todoist task with a required content field and optional description, due date, priority, project, section, and labels.
- get_tasks: Retrieve a list of Todoist tasks with optional filters like project_id, project_name, task_name, priority, labels, is_overdue, and limit.
- update_task: Update an existing task identified by task_id with optional changes to content, description, labels, priority, due_date (YYYY-MM-DD), and deadline_date (YYYY-MM-DD).
- delete_task: Delete a task by task_id
- complete_task: Mark a task as complete by task_id
Security considerations
Your Todoist API token is handled securely via environment variables. Do not share your environment file or expose this token publicly. The MCP server runs locally and communicates only with the Todoist API.
Notes and examples
Practical example interactions you can perform with Claude through the Todoist MCP Server include creating tasks, listing urgent tasks, querying due dates, updating priorities, and marking tasks as complete.
Available tools
create_task
Create a new Todoist task with a required content field and optional description, due date, priority, project, section, and labels.
get_tasks
Retrieve a list of Todoist tasks with optional filters like project_id, project_name, task_name, priority, labels, is_overdue, and limit.
update_task
Update an existing task identified by task_id with optional changes to content, description, labels, priority, due_date (YYYY-MM-DD), and deadline_date (YYYY-MM-DD).
delete_task
Delete a task by task_id
complete_task
Mark a task as complete by task_id