Todoist MCP Server
MCP server for Todoist API integration. Published to PyPI
Status
✅ Full Functionality - Now using Todoist unified API v1 with proper pagination support
v0.4.0 - Major expansion: Sections support, Labels management, and Batch operations
Important API Notes
Todoist has numerous API versions with incompatible ID systems:
- v1 Unified API (Todoist official ): Uses alphanumeric IDs (e.g.,
69mF7QcCj9JmXxp8) - v2 REST API: Uses numeric IDs (e.g.,
7246645180)
This incompatibility means certain features like server-side search are not available in this MCP implementation, as search only exists in v2 but returns IDs incompatible with v1 operations.
Features
- Full cursor-based pagination for all endpoints
- Configurable limit parameter for all list endpoints
- Multi-auth support (environment, config file, runtime)
- Complete task and project management capabilities
- Sections support (v0.4.0): CRUD operations for project sections
- Labels management (v0.4.0): CRUD operations for labels
- Batch operations (v0.4.0): Move, update, complete multiple tasks at once
- Comment CRUD operations for tasks and projects
- Move tasks between projects, sections, and parents
- Error handling with detailed error messages
Limitations
- No server-side search (due to v1/v2 API incompatibility)
- Client-side filtering only for task queries
Installation
pip install todoist-mcp
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp"],
"env": {
"TODOIST_API_TOKEN": "your_token_here"
}
}
}
}
AmazonQ Developer CLI Configuration
Add to your .amazonq/mcp.json:
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp"],
"env": {
"TODOIST_API_TOKEN": "your_token_here"
}
}
}
}
Alternative: Using mcp-gen
For complex MCP configuration management such as in providing configurations for different contexts ot teams, use mcp-gen with YAML:
See https://github.com/OAuthBringer/mcp-gen/examples for more full examples
# mcp-config.yaml
servers:
todoist:
command: uvx
args: [todoist-mcp]
env:
TODOIST_API_TOKEN: {{ secrets.TODOIST_API_TOKEN }}
```
Then generate your configuration:
```bash
`mcp-gen generate -c mcp-config.yaml -s secrets-file.yaml`
Configuration
Authentication options (in order of precedence):
- Runtime: Pass token when creating client
- Config file:
~/.config/todoist/config.jsonwith{"api_token": "your_token"} - Environment: Set
TODOIST_API_TOKEN
Available Tools
Projects
get_projects- List projects with pagination (limit, cursor)get_project- Get single project by IDadd_project- Create new project
Tasks
get_tasks- List tasks with pagination and filtersget_task- Get single task by IDadd_task- Create new task with all propertiesupdate_task- Update existing taskmove_task- Move task to different project, section, or parent
Sections (v0.4.0)
get_sections- List sections for a project with paginationget_section- Get single section by IDadd_section- Create new section in projectupdate_section- Update section namedelete_section- Delete a section
Labels (v0.4.0)
get_labels- List all labels with paginationget_label- Get single label by IDadd_label- Create new labelupdate_label- Update label propertiesdelete_label- Delete a label
Batch Operations (v0.4.0)
batch_move_tasks- Move multiple tasks to project/sectionbatch_update_labels- Add/remove labels from multiple tasksbatch_update_tasks- Update multiple tasks with same propertiesbatch_complete_tasks- Complete multiple tasks at once
Comments
get_comments- List comments for task/project with paginationget_comment- Get single comment by IDadd_comment- Add comment to task or projectupdate_comment- Update existing commentdelete_comment- Delete a comment
Technical Details
- Built with FastMCP v2.3.3+
- Python 3.11+
- Direct API v1 integration using httpx
- No dependency on todoist-api-python SDK
Development
# Clone repository
git clone https://github.com/OAuthBringer/todoist-mcp
cd todoist-mcp
# Create virtual environment
uv venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install dependencies
uv pip install -e .
uv pip install -e ".[dev]"
# Run tests
pytest
Metadata
Release files for todoist-mcp 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| todoist_mcp-0.4.0.tar.gz | 30.3 kB | Without provenance | Details for todoist_mcp-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| todoist_mcp-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for todoist_mcp-0.4.0-py3-none-any.whl |
Total release size: 40.2 kB
Release files / todoist_mcp-0.4.0.tar.gz
| Download URL | todoist_mcp-0.4.0.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
953e6b8ac26d4ae45e5c205f1656b4d18cb6c5af1e96a21d8f13e9c68a4c1b48
|
|
BLAKE2b-256 checksum How to use checksums |
6c5c01b4cb29c65a27044e7a829fd318fd73d89f7c45f66fa12a3351b5684b44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Release files / todoist_mcp-0.4.0-py3-none-any.whl
| Download URL | todoist_mcp-0.4.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
51e5e3af23afa30506a5b688aa2cb28033ee7410b7d96c9784cd4fbf21ccea1d
|
|
BLAKE2b-256 checksum How to use checksums |
903c89d04658608b6194a7f7e12b56d0692580d962a506a3b4176bece0805728
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Security for todoist-mcp 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.