Todoist MCP Server

Todoist MCP Server

Enables AI assistants to manage Todoist tasks, projects, and labels through natural language. It provides a comprehensive suite of tools for task organization, productivity tracking, and structured workflows like daily planning.

Category
Visit Server

README

Todoist MCP Server

An MCP (Model Context Protocol) server that provides comprehensive task management through Todoist. This enables AI assistants like Claude to create, manage, and organize tasks using natural language.

Features

Tools (21 total)

Tool Description
list_tasks List tasks with filtering (by project, priority, due date, etc.)
get_task Get detailed task info including comments and subtasks
create_task Create tasks with natural language due dates
update_task Update task content, due date, priority, labels
complete_task Mark tasks complete (handles recurring)
uncomplete_task Reopen completed tasks
delete_task Permanently delete tasks
move_task Move tasks between projects/sections
list_projects List all projects
create_project Create new projects
update_project Update project name, color, view style
delete_project Permanently delete projects
list_sections List sections within projects
create_section Create sections
update_section Rename or collapse/expand sections
move_section Move sections between projects
delete_section Permanently delete sections
list_labels List all labels
create_label Create new labels
update_label Update label name, color, order
delete_label Permanently delete labels
add_comment Add comments to tasks
get_productivity_stats Get completion statistics
quick_add Natural language task entry

Resources

Resource Description
todoist://today Today's tasks including overdue
todoist://upcoming Tasks due in the next 7 days
todoist://overdue All overdue tasks
todoist://projects Project overview with task counts
todoist://labels Labels and usage counts

Prompts

Prompt Description
daily_planning Morning planning workflow
weekly_review GTD-style weekly review
quick_capture Rapid multi-task capture
task_breakdown Break large tasks into subtasks

Setup

1. Get Your Todoist API Token

  1. Go to https://todoist.com/app/settings/integrations/developer
  2. Scroll to "API token"
  3. Copy your token

2. Install Dependencies

cd todoist-mcp
npm install

3. Build

npm run build

4. Add to Claude Code

claude mcp add --transport stdio todoist \
  --env TODOIST_API_TOKEN=your_token_here \
  -- node /path/to/todoist-mcp/dist/index.js

Or add manually to your Claude Code configuration:

{
  "mcpServers": {
    "todoist": {
      "command": "node",
      "args": ["/path/to/todoist-mcp/dist/index.js"],
      "env": {
        "TODOIST_API_TOKEN": "your_token_here"
      }
    }
  }
}

5. Verify Connection

In Claude Code, type /mcp to check the server is connected.

Usage Examples

Create a Task

"Add a task to review the budget report by Friday"

The AI will use create_task with natural language due date parsing.

View Today's Tasks

"What do I need to do today?"

Uses the todoist://today resource or list_tasks with dueToday: true.

Daily Planning

"Let's do my daily planning"

Invokes the daily_planning prompt for a guided planning session.

Quick Capture

"Add these tasks: call dentist tomorrow, review PR by EOD, update docs"

Uses quick_add or create_task for natural language entry.

Initialize GTD Structure (One-Time Setup)

Run the setup script to create a GTD-inspired structure:

TODOIST_API_TOKEN=your_token npx tsx scripts/setup-gtd-structure.ts

This creates:

  • Projects: Work, Personal (with sub-projects), Recurring, Someday/Maybe, Reference
  • Labels: Context (@computer, @phone), Energy (@high-energy), Time (@5min, @deep-work), Status (@waiting-for)

Natural Language Due Dates

Todoist supports flexible date parsing:

Input Result
today Today
tomorrow Tomorrow
tomorrow at 2pm Tomorrow at 2:00 PM
next monday Next Monday
in 3 days 3 days from now
jan 15 January 15
every day Daily recurring
every monday at 9am Weekly on Monday at 9 AM
every weekday Monday through Friday

Priority Mapping

API Value Display Color
4 P1 (highest) Red
3 P2 Orange
2 P3 Yellow
1 P4 (default) None

Rate Limiting

The server implements rate limiting to stay within Todoist's API limits:

  • Limit: 450 requests per 15 minutes
  • Caching: Projects and labels are cached for 5 minutes

Development

Run in Development Mode

npm run dev

This runs TypeScript in watch mode.

Test with MCP Inspector

npm run inspect

Opens the MCP Inspector for testing tools and resources.

Project Structure

todoist-mcp/
├── src/
│   ├── index.ts           # Entry point
│   ├── types/             # TypeScript type definitions
│   ├── services/          # Todoist client, caching, rate limiting
│   ├── tools/             # MCP tool implementations
│   ├── resources/         # MCP resource implementations
│   └── prompts/           # MCP prompt implementations
├── dist/                  # Compiled output
├── package.json
└── tsconfig.json

Troubleshooting

"TODOIST_API_TOKEN environment variable is required"

Make sure you've set the token in your MCP configuration:

claude mcp add --env TODOIST_API_TOKEN=your_token ...

Rate Limit Errors

The server automatically handles rate limiting, but if you hit limits:

  • Wait 15 minutes for the window to reset
  • Check get_productivity_stats to see current rate limit usage

Tasks Not Appearing

  • Verify your API token is correct
  • Check that tasks aren't filtered out (completed, different project, etc.)
  • Use list_tasks without filters to see all tasks

Quick Add Project Assignment

The quick_add tool uses Todoist's natural language parser, which may not always parse project names with spaces correctly. For example, "Task #My Project" might not assign to the "My Project" project.

Workaround: Use create_task with explicit projectId for reliable project assignment, or use project names without spaces.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured