Todoist MCP Helper
<p align="center">
<img src="icon.png" width="120" alt="Todoist MCP Helper Icon">
</p>
# Todoist MCP Helper β
**English** | [δΈζ](README_CN.md)
[](https://pypi.org/project/todoist-mcp-helper/)
[](https://opensource.org/licenses/MIT)
[](https://afdian.com/a/LittlePeter52012)
**Connect AI agents to your [Todoist](https://todoist.com) tasks** via the Model Context Protocol (MCP).
Create, search, complete, and manage your Todoist tasks β all from Claude, Gemini, Cursor, or any MCP-compatible AI agent.
---
## β¨ Features
| Category | Tools | Description |
| -------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| π Tasks | `get_tasks`, `get_task`, `create_task`, `update_task`, `close_task`, `delete_task`, `reopen_task` | Full task CRUD with priority, due dates, labels |
| π Move | `move_task`, `move_task_by_name` | **Move tasks across projects, sections, parents** |
| π Smart Search | `search_task_by_name`, `complete_task_by_name`, `delete_task_by_name`, `update_task_by_name` | Find and operate on tasks by name (fuzzy matching) |
| π Projects | `list_projects`, `create_project`, `update_project`, `delete_project`, `get_project_overview` | Manage projects + full structure overview |
| π Sections | `list_sections`, `create_section`, `update_section`, `delete_section` | Organize and rename sections |
| π·οΈ Labels | `list_labels`, `create_label` | Tag management |
| π¬ Comments | `get_comments`, `create_comment` | Task & project comments |
| βοΈ Config | `set_api_token`, `get_current_config` | Runtime token management |
**27 tools total** β the most comprehensive Todoist MCP server available.
---
## π Quick Start
### Option A: Quick Run with `uvx` (Recommended)
No installation needed β runs in a temporary isolated environment:
```bash
uvx todoist-mcp-helper
```
> Don't have `uv`? Install it: `curl -LsSf https://astral.sh/uv/install.sh | sh`
### Option B: Install with `pip`
```bash
pip install todoist-mcp-helper
```
### Get Your API Token
1. Go to [Todoist Settings β Integrations](https://app.todoist.com/app/settings/integrations)
2. Scroll to **Developer** β copy your **API Token**
---
## π Configuration
All credentials are passed via **environment variables** β no tokens in code.
| Variable | Description | Required |
| ------------------- | ---------------------- | -------- |
| `TODOIST_API_TOKEN` | Your Todoist API Token | β
|
---
## π§ Platform Configuration
### Claude Desktop
Add to `claude_desktop_config.json`:
<table><tr><th>uvx (recommended)</th><th>pip</th></tr><tr><td>
```json
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp-helper"],
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td><td>
```json
{
"mcpServers": {
"todoist": {
"command": "todoist-mcp-helper",
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td></tr></table>
### Gemini CLI
Add to `~/.gemini/settings.json`:
<table><tr><th>uvx (recommended)</th><th>pip</th></tr><tr><td>
```json
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp-helper"],
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td><td>
```json
{
"mcpServers": {
"todoist": {
"command": "todoist-mcp-helper",
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td></tr></table>
### Cursor
Add to `.cursor/mcp.json`:
<table><tr><th>uvx (recommended)</th><th>pip</th></tr><tr><td>
```json
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp-helper"],
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td><td>
```json
{
"mcpServers": {
"todoist": {
"command": "todoist-mcp-helper",
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
</td></tr></table>
### CherryStudio / Other MCP Clients
```json
{
"todoist": {
"command": "uvx",
"args": ["todoist-mcp-helper"],
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
```
### ModelScope (ιε‘)
Select **Stdio** mode in the MCP service configuration, then use:
```json
{
"mcpServers": {
"todoist": {
"command": "uvx",
"args": ["todoist-mcp-helper"],
"env": {
"TODOIST_API_TOKEN": "your_token"
}
}
}
}
```
Add `TODOIST_API_TOKEN` in the environment variables section with your API token value.
---
## π‘ Usage Examples
Once configured, ask your AI agent:
- *"Show me my tasks for today"*
- *"Create a task: Buy groceries, due tomorrow, priority 2"*
- *"Complete the task about groceries"*
- *"Move the grocery task to my Shopping project"*
- *"Search for tasks related to meeting"*
- *"List all my projects"*
- *"Show me the full project overview with sections"*
- *"Add a comment to my latest task"*
---
## π Runtime Configuration
Change tokens without restarting:
- **`set_api_token`** β Switch Todoist account at runtime
- **`get_current_config`** β Check current configuration
---
## π Support
If this project helps you, consider buying me a coffee!
Your support keeps this project alive and growing β¨
<table>
<tr>
<td align="center" width="50%">
### β η±εη΅ (Afdian)
<a href="https://afdian.com/a/LittlePeter52012">
<img src="https://img.shields.io/badge/η±εη΅-946CE6?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyMS4zNWwtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1eiIvPjwvc3ZnPg==&logoColor=white" alt="Support on Afdian">
</a>
<sub>Supports Alipay & WeChat Pay</sub>
</td>
<td align="center" width="50%">
### π Crypto (USDC / ERC-20)
<a href="https://littlepeter52012.github.io/todoist-mcp-helper/donate.html">
<img src="https://img.shields.io/badge/USDC%2FETH-Donate_Now-6c5ce7?style=for-the-badge&logo=ethereum&logoColor=white" alt="Donate Crypto">
</a>
<sub>Click to donate β supports MetaMask, SafePal & more</sub>
</td>
</tr>
</table>
> Every little bit helps β **thank you!** π
---
## π License
MIT License β see [LICENSE](LICENSE) for details.
TDQS
Scored across 28 tools
Tools are clearly separated by action (create, read, update, delete, close, reopen, move) and input method (ID vs. name-based variants like `complete_task_by_name` vs `close_task`). Some overlap exists between name-based and ID-based tools for the same action, which may cause confusion if the agent doesn't check arguments, but descriptions clarify the distinction.
All tools use a consistent `verb_noun` pattern in snake_case (e.g., `create_task`, `list_projects`, `get_comments`). The `by_name` suffix is uniformly applied to name-based variants. Naming is predictable and easy to navigate.
With 28 tools, the count is above average but appropriate for a full-featured Todoist integration. The inclusion of both ID- and name-based variants for key operations slightly inflates the count, but each tool serves a distinct use case for agents that may or may not have IDs.
The tool surface covers all major Todoist entities (projects, sections, tasks, labels, comments, configuration) and supports core CRUD plus close/reopen/move operations. Minor gaps exist: no delete or update for labels, no update or delete for comments, and no project sharing functionality.