Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
Todoist MCP Server logo

Todoist MCP Server

ecfaria/todoist-mcp
0 starsv1.0.1STDIORegistry activeMITUpdated 2026-01-04Community

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

claude mcp add todoist -- npx -y @ecfaria/todoist-mcp-server

Summary

Enables Claude to manage Todoist tasks and projects, including creating, listing, updating, completing tasks, and managing projects with natural language.

Connect from your MCP client

One-click install

Add this server to your editor with a single click. Fill in any required credentials afterward.

Claude Code

Run this once and Claude Code registers the server for you:

claude mcp add todoist -- npx -y @ecfaria/todoist-mcp-server

Claude Desktop

Add this to claude_desktop_config.json under Settings → Developer → Edit Config:

{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "@ecfaria/todoist-mcp-server"
      ],
      "env": {
        "YOUR_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "@ecfaria/todoist-mcp-server"
      ],
      "env": {
        "YOUR_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

Cline and other MCP clients

Most MCP clients accept the standard mcpServers JSON block:

{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": [
        "-y",
        "@ecfaria/todoist-mcp-server"
      ],
      "env": {
        "YOUR_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

Codex CLI

Register the server with OpenAI's Codex CLI — run this once, or add the equivalent block to ~/.codex/config.toml:

codex mcp add todoist --env YOUR_API_KEY=<YOUR_API_KEY> -- npx -y @ecfaria/todoist-mcp-server

# or add to ~/.codex/config.toml:
[mcp_servers.todoist]
command = "npx"
args = ["-y", "@ecfaria/todoist-mcp-server"]
[mcp_servers.todoist.env]
YOUR_API_KEY = "<YOUR_API_KEY>"

OpenClaw

OpenClaw reads MCP servers from the mcp.servers section of ~/.openclaw/openclaw.json (managed via `openclaw mcp add` or the mcporter skill):

{
  "mcp": {
    "servers": {
      "todoist": {
        "command": "npx",
        "args": [
          "-y",
          "@ecfaria/todoist-mcp-server"
        ],
        "env": {
          "YOUR_API_KEY": "<YOUR_API_KEY>"
        }
      }
    }
  }
}

Replace the <PLACEHOLDER> values with your own credentials — see the configuration table below.

Configuration

Todoist MCP Server reads the following environment variable:

VariableRequired
YOUR_API_KEYRequired

README.md

Todoist MCP Server

A Model Context Protocol (MCP) server for Todoist task management, enabling Claude to interact with your Todoist tasks and projects.

Features

  • ✅ Create, read, update, and complete tasks
  • 📋 List tasks with advanced filtering
  • 🔍 Search tasks by text content
  • 📁 Manage projects
  • 🏷️ Support for labels and priorities
  • 📅 Natural language date parsing
  • ⚡ Rate limiting to stay within API limits
  • 🛡️ Comprehensive error handling

Installation

Prerequisites

  • Node.js >= 18.0.0
  • npm or yarn
  • A Todoist account with an API token

From Source

# Clone the repository
git clone <your-repo-url>
cd todoist-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuration

1. Get Your Todoist API Token

  1. Go to Todoist Integrations Settings
  2. Scroll down to "API token" section
  3. Copy your personal API token

2. Set Up Environment Variables

Create a .env file in the project root:

cp .env.example .env

Edit .env and add your Todoist API token:

TODOIST_API_TOKEN=your_actual_token_here
LOG_LEVEL=error

3. Configure Claude Desktop

Add the server to your Claude Desktop configuration file:

Location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "todoist": {
      "command": "node",
      "args": ["/absolute/path/to/todoist-mcp/build/server.js"],
      "env": {
        "TODOIST_API_TOKEN": "your_actual_token_here"
      }
    }
  }
}

Important: Replace /absolute/path/to/todoist-mcp with the actual absolute path to your project directory.

4. Restart Claude Desktop

After updating the configuration, restart Claude Desktop for the changes to take effect.

Available Tools

todoist_create_task

Create a new task in Todoist with optional project, due date, priority, labels, and parent task for subtasks.

Parameters:

  • content (required): The task content/title
  • description (optional): Task description
  • project_id (optional): Project ID to add the task to
  • section_id (optional): Section ID within the project
  • due_date (optional): Due date in natural language or YYYY-MM-DD format
  • priority (optional): Priority level: 1 (normal), 2 (medium), 3 (high), 4 (urgent)
  • labels (optional): Array of label names
  • parent_id (optional): Parent task ID to create a subtask
  • parent_task_name (optional): Parent task name to search for (alternative to parent_id)

Examples:

Create a task "Write report" due tomorrow with high priority
Create a task "Buy groceries" in the Shopping project
Create a task "Team meeting" due "next Monday at 2pm"
Create a subtask "Buy milk" under parent task "Go to the supermarket"
Create a subtask "Review slides" under task 8237492837
Add subtask "Call John" to the task "Prepare presentation"

todoist_list_tasks

List active tasks with optional filters for project, section, label, or custom Todoist filter.

Parameters:

  • project_id (optional): Filter by project ID
  • section_id (optional): Filter by section ID
  • label (optional): Filter by label name
  • filter (optional): Todoist filter query (e.g., "today", "overdue", "p1")
  • limit (optional): Maximum number of tasks to return (default: 50, max: 200)

Examples:

List all my tasks
List tasks in project "Work"
List tasks due today
List all overdue tasks with limit 20

todoist_get_task

Get detailed information about a specific task including all metadata.

Parameters:

  • task_id (required): The task ID to retrieve

Examples:

Get details for task 123456789
Show me task 987654321

todoist_update_task

Update an existing task with new content, description, due date, priority, or labels.

Parameters:

  • task_id (required): The task ID to update
  • content (optional): New task content
  • description (optional): New task description
  • due_date (optional): New due date (natural language or YYYY-MM-DD)
  • priority (optional): New priority level (1-4)
  • labels (optional): New labels array

Examples:

Update task 123 to have priority 4
Change task 456 due date to "next Friday"
Update task 789 content to "Revised meeting agenda"

todoist_complete_task

Mark a task as completed.

Parameters:

  • task_id (required): The task ID to complete

Examples:

Complete task 123456
Mark task 789012 as done

todoist_list_projects

List all projects in Todoist, including inbox and shared projects.

Parameters: None

Examples:

List all my projects
Show me all my Todoist projects

todoist_search_tasks

Search for tasks by text in their content or description.

Parameters:

  • query (required): Text to search for in task content and description
  • limit (optional): Maximum number of tasks to return (default: 50, max: 200)

Examples:

Search for tasks containing "meeting"
Find all tasks with "budget" in them

Development

Build

npm run build

Development Mode (Watch)

npm run dev

Run Tests

npm test

Run Tests in Watch Mode

npm run test:watch

Rate Limits

The server respects Todoist's API rate limit of 450 requests per 15 minutes. When the limit is exceeded, the API returns a 429 error which is caught and reported with a helpful error message. You can retry your request after waiting.

Error Handling

All errors are returned with descriptive messages. Common errors include:

  • Invalid API token: Check your .env configuration or Claude Desktop config
  • Task not found: Verify the task ID exists and hasn't been deleted
  • Rate limit exceeded: Wait 15 minutes or reduce request frequency
  • Network error: Check your internet connection
  • Validation error: Review the parameters you're providing to the tool

Natural Language Date Support

The server supports Todoist's natural language date parsing. You can use phrases like:

  • "tomorrow"
  • "next Monday"
  • "every Friday"
  • "in 3 days"
  • "next week"
  • "Dec 25"

You can also use standard date formats:

  • "2024-12-31"
  • "2024-12-31T14:30:00"

Project Structure


todoist-mcp/
├── src/
│   ├── server.ts           # Main MCP server entry point
│   ├── types/              # TypeScript type definitions
│   ├── api/                # Todoist API client and errors
│   ├── tools/              # MCP tool implementations
│   └── utils/              # Utilities (logger, rate limiter)
├── tests/
│   └── unit/               # Unit tests
├── build/                  # Compiled JavaScript output
├── package.json
├── tsconfig.json
├── .env.example
└── README.md

Publishing & Registry

  • MCP name: io.github.ecfaria/todoist-mcp
  • NPM package: @ecfaria/todoist-mcp-server
  • server.json: see the root of this repo for the registry definition

Publishing flow

  1. Update version numbers as needed (npm version <patch|minor|major>).
  2. Build the distributable: npm run build.
  3. Publish to npm: npm publish --access public (scoped packages default to private).
  4. Validate registry metadata: mcp-publisher validate.
  5. Publish to the MCP registry: mcp-publisher publish.

Release notes (v1.0.0)

  • Added MCP registry metadata (mcpName) to package.json.
  • Documented the publishing process and registry identity.
  • Introduced the canonical server.json reference for registry publication.
  • Adopted the scoped npm package name @ecfaria/todoist-mcp-server to avoid collisions.

Troubleshooting

Server not showing in Claude

  1. Verify the path in claude_desktop_config.json is absolute and correct
  2. Check that you've built the project (npm run build)
  3. Ensure the API token is set in the config
  4. Restart Claude Desktop completely

API Token Invalid

  1. Go to Todoist Integrations Settings
  2. Generate a new API token
  3. Update your .env file or Claude Desktop config
  4. Restart the server/Claude Desktop

Tasks Not Showing Up

  1. Verify you're using the correct project ID or filter
  2. Check that tasks aren't already completed
  3. Try listing all tasks without filters to see what's available

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Support

Acknowledgments

Built with:

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Productivity servers.