Skip to main content
Glama
Todoist MCP Server

Todoist MCP Server

by greirson

Todoist MCP Server

An MCP (Model Context Protocol) server that connects Claude with Todoist for complete task and project management through natural language.

Installation

Claude Desktop (One-Click Install)

  1. Download todoist-mcp.mcpb from the latest release

  2. Double-click the file (or drag onto Claude Desktop)

  3. Enter your Todoist API token when prompted

  4. Start chatting: "Show me my Todoist projects"

Claude Code / Other MCP Clients

claude mcp add todoist -e TODOIST_API_TOKEN=your_token -- npx @greirson/mcp-todoist

Add to your MCP client config (claude_desktop_config.json, ~/.claude.json, etc.):

{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": ["@greirson/mcp-todoist"],
      "env": {
        "TODOIST_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

Config locations:

  • Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

  • Claude Code: ~/.claude.json

Related MCP server: Enhanced Todoist MCP Server Extended

Features

  • 19 MCP Tools for complete Todoist management

  • Task Management: Create, update, delete, complete, reopen tasks with priorities, due dates, labels

  • Bulk Operations: Process multiple tasks efficiently

  • Subtasks: Hierarchical task management with completion tracking

  • Projects & Sections: Full organization support

  • Labels, Filters, Reminders: Pro/Business features supported

  • Natural Language: Quick add with Todoist's natural language parsing

  • Dry-Run Mode: Test operations without making changes

Dry-Run Mode

Dry-run mode allows you to test operations and automations without making any real changes to your Todoist workspace. This is perfect for testing, debugging, learning the API, or validating automation scripts before running them for real.

How to Enable Dry-Run Mode

Add DRYRUN=true to your environment configuration:

{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": ["@greirson/mcp-todoist"],
      "env": {
        "TODOIST_API_TOKEN": "your_api_token_here",
        "DRYRUN": "true"
      }
    }
  }
}

What Dry-Run Mode Does

  • Validates Operations: Uses real API data to validate that operations would succeed

  • Simulates Mutations: Create, update, delete, and complete operations are simulated (not executed)

  • Real Data Queries: Read operations (get tasks, projects, labels) use the real API

  • Detailed Logging: Shows exactly what would happen with clear [DRY-RUN] prefixes

  • Error Detection: Catches the same errors that would occur in real execution

Use Cases

  • Testing Automations: Validate complex bulk operations before executing

  • Learning the API: Explore functionality without fear of making unwanted changes

  • Debugging Issues: Understand what operations would be performed

  • Safe Experimentation: Try new workflows without affecting your actual tasks

  • Training and Demos: Show how operations work without modifying real data

Example Usage

With dry-run mode enabled, operations show what would happen:

You: "Create a task called 'Test Task' in my Work project"

Response:
[DRY-RUN] Dry-run mode enabled - mutations will be simulated
[DRY-RUN] Would create task: "Test Task" in project 2203306141, section none

Task created successfully (simulated):
ID: 100001
Title: Test Task
Project: Work (2203306141)
Priority: 4 (Normal)

Supported Operations

All 19 MCP tools support dry-run mode:

  • Task creation, updates, completion, and deletion

  • Subtask operations and hierarchy changes

  • Bulk operations across multiple tasks

  • Project and section creation

  • Label management operations

  • Reminder CRUD operations

  • Comment creation

Disabling Dry-Run Mode

Remove the DRYRUN environment variable or set it to false, then restart Claude Desktop to return to normal operation mode.

Tools Overview

The server provides 19 MCP tools for complete Todoist management:

Tool

Actions

Description

todoist_task

create, get, update, delete, complete, reopen, quick_add

Complete task management

todoist_task_bulk

bulk_create, bulk_update, bulk_delete, bulk_complete

Efficient multi-task operations

todoist_subtask

create, bulk_create, convert, promote, hierarchy

Hierarchical task management

todoist_project

create, get, update, delete, archive, collaborators

Project CRUD and sharing

todoist_project_ops

reorder, move_to_parent, get_archived

Advanced project operations

todoist_section

create, get, update, delete, move, reorder, archive

Section management

todoist_label

create, get, update, delete, stats

Label management with analytics

todoist_comment

create, get, update, delete

Task/project comments

todoist_reminder

create, get, update, delete

Reminder management (Pro)

todoist_filter

create, get, update, delete

Custom filters (Pro)

todoist_collaboration

invitations, notifications, workspace operations

Team collaboration features

todoist_user

info, productivity_stats, karma_history

User profile and stats

todoist_utility

test_connection, test_features, test_performance, find/merge duplicates

Testing and utilities

todoist_activity

get_log, get_events, get_summary

Activity audit trail

todoist_task_ops

move, reorder, close

Advanced task operations

todoist_completed

get, get_all, get_stats

Completed task retrieval

todoist_backup

list, download

Automatic backup access

todoist_notes

create, get, update, delete

Project notes (collaborators)

todoist_shared_labels

create, get, rename, remove

Workspace labels (Business)

For detailed tool documentation with parameters and examples, see TOOLS_REFERENCE.md.

Troubleshooting

Common Issues

"No Todoist projects found" or connection errors:

  • Verify your API token is correct

  • Check that the token is properly set in your claude_desktop_config.json

  • Ensure there are no extra spaces or quotes around your token

MCP server not loading:

  • Confirm the package is installed globally: npm list -g @greirson/mcp-todoist

  • Restart Claude Desktop completely

  • Check the configuration file path is correct for your operating system

  • Try the full path to the mcp-todoist binary: /Users/USERNAME/.npm-global/bin/mcp-todoist

Permission errors:

  • On macOS/Linux, you may need to create the config directory: mkdir -p ~/.config

  • Ensure Claude Desktop has permission to read the config file

Usage Examples

Project & Section Setup

"Show me all my projects"
"Create a new project called 'Work Tasks'"
"Create a section called 'In Progress' in project 12345"
"Show me sections in the Work Tasks project"

Task Creation & Management

"Create task 'Team Meeting' in project 12345"
"Add task 'Review PR' due tomorrow with labels ['Code Review', 'Urgent']"
"Create high priority task with deadline 2024-12-25"
"Update meeting task to be in section 67890"
"Mark the PR review task as complete"

# Task duration for time blocking
"Create task 'Deep work session' with 90 minute duration"
"Update task 'Meeting' to have a 2 day duration"

# Task identification by ID (more reliable than name search)
"Get task with ID 1234567890"
"Update task ID 1234567890 to priority 4"
"Complete task with ID 1234567890"
"Reopen task with ID 1234567890"
"Delete task ID 1234567890"

Quick Add

The Quick Add tool parses natural language text like the Todoist app, supporting multiple features in a single command:

"Quick add: Buy groceries tomorrow #Shopping @errands p1"
"Quick add: Review PR next Monday #Work @code-review p2 //Check error handling"
"Quick add: Call mom {deadline in 3 days}"
"Quick add: Team meeting today at 2pm #Work @meetings with reminder 1 hour before"

Quick Add Syntax:

  • Due dates: Natural language dates like "tomorrow", "next Friday", "Jan 23", "in 3 days"

  • Projects: #ProjectName (no spaces in project names)

  • Labels: @label (e.g., "@urgent", "@work")

  • Assignees: +name (for shared projects)

  • Priority: p1 (urgent), p2, p3, p4 (lowest)

  • Deadlines: {in 3 days} or {March 15}

  • Descriptions: //your description here (must be at the end)

Subtask Management

"Create subtask 'Prepare agenda' under task 'Team Meeting'"
"Create multiple subtasks for 'Launch Project': 'Design UI', 'Write tests', 'Deploy'"
"Convert task 'Code Review' to a subtask of 'Release v2.0'"
"Promote subtask 'Bug Fix' to a main task"
"Show me the task hierarchy for 'Launch Project' with completion tracking"

Bulk Operations

"Create multiple tasks for project launch: 'Design mockups', 'Write documentation', 'Set up CI/CD'"
"Update all high priority tasks to be due next week"
"Complete all tasks containing 'review' in project 12345"
"Delete all tasks with priority 1 that are overdue"

Comment Management

"Add comment 'This needs urgent attention' to task 'Review PR'"
"Add comment with attachment to task 67890"
"Show all comments for task 'Team Meeting'"
"Get comments for project 12345"

Label Management

"Show me all my labels"
"Create a new label called 'Urgent' with red color"
"Update the 'Work' label to be blue and mark as favorite"
"Delete the unused 'Old Project' label"
"Get usage statistics for all my labels"

Reminder Management (Pro/Business)

"Show me all my reminders"
"Get reminders for task 'Team Meeting'"
"Create a reminder for task 'Review PR' 30 minutes before due"
"Create an absolute reminder for task 12345 at 2024-12-25T09:00:00Z"
"Update reminder 67890 to trigger at 10:00 instead"
"Delete reminder 67890"

Task Discovery

"Show all my tasks"
"List high priority tasks due this week"
"Get tasks in project 12345"

Testing & Validation

"Test my Todoist connection"
"Run basic tests on all Todoist features" // Default: read-only API tests
"Run enhanced tests on all Todoist features" // Full CRUD testing with cleanup
"Benchmark Todoist API performance with 10 iterations"
"Validate that all MCP tools are working correctly"

Dry-Run Testing

When dry-run mode is enabled (DRYRUN=true), use normal commands - they'll automatically be simulated:

"Create a test task with priority 1"
"Update all overdue tasks to be due tomorrow"
"Delete all completed tasks in project 12345"
"Create 5 subtasks under task 'Project Planning'"

All these operations will validate against your real data but won't make any changes.

Development

Building from source

# Clone the repository
git clone https://github.com/greirson/mcp-todoist.git

# Navigate to directory
cd mcp-todoist

# Install dependencies
npm install

# Build the project
npm run build

Development Commands

# Watch for changes and rebuild
npm run watch

# Run tests
npm run test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

# Format code
npm run format

# Check formatting
npm run format:check

Architecture

The codebase follows a clean, modular architecture designed for maintainability and scalability:

Core Structure

  • src/index.ts: Main server entry point with request routing

  • src/types.ts: TypeScript type definitions and interfaces

  • src/type-guards.ts: Runtime type validation functions

  • src/validation.ts: Input validation and sanitization

  • src/errors.ts: Custom error types with structured handling

  • src/cache.ts: In-memory caching for performance optimization

Modular Tool Organization

  • src/tools/: Domain-specific MCP tool definitions organized by functionality:

    • task-tools.ts - Task management (9 tools)

    • subtask-tools.ts - Subtask operations (5 tools)

    • project-tools.ts - Project/section management (4 tools)

    • comment-tools.ts - Comment operations (2 tools)

    • label-tools.ts - Label management (5 tools)

    • reminder-tools.ts - Reminder operations (4 tools)

    • test-tools.ts - Testing and validation (3 tools)

    • index.ts - Centralized exports

Business Logic Handlers

  • src/handlers/: Domain-separated business logic modules:

    • task-handlers.ts - Task CRUD and bulk operations

    • subtask-handlers.ts - Hierarchical task management

    • project-handlers.ts - Project and section operations

    • comment-handlers.ts - Comment creation and retrieval

    • label-handlers.ts - Label CRUD and statistics

    • reminder-handlers.ts - Reminder CRUD via Sync API

    • test-handlers.ts - API testing infrastructure

    • test-handlers-enhanced/ - Comprehensive CRUD testing framework

Utility Modules

  • src/utils/: Shared utility functions:

    • api-helpers.ts - API response handling utilities

    • error-handling.ts - Centralized error management

    • parameter-transformer.ts - MCP to Todoist SDK parameter format conversion

    • dry-run-wrapper.ts - Dry-run mode implementation

Changelog

See CHANGELOG.md for a detailed history of all changes.

For migration guides and breaking changes, see the full changelog.

Contributing

Contributions are welcome! This project is actively maintained and I appreciate the community's interest in improving it.

A Note on AI-Assisted Contributions

I use Claude Code as part of my own development workflow -- AI-assisted coding is a normal part of how this project is built. I encourage contributors to use whatever tools make them productive, including AI coding assistants.

That said, AI tools make it very easy to generate large volumes of code that looks correct but introduces subtle issues: incorrect API mappings, performance regressions, breaking type changes, or scope creep that bundles unrelated features together. I've seen PRs that swap a URL prefix without realizing the API paths themselves changed, or that add pagination by fetching every page every time without preserving the limit parameter.

Because of this, every PR receives thorough architectural review. This isn't about gatekeeping -- it's about maintaining a codebase that hundreds of people depend on through their MCP clients. PRs that appear to be unreviewed AI output will receive detailed feedback on what needs to change and why, so you can learn and resubmit.

PR Requirements

Before submitting a pull request, please ensure:

  1. One concern per PR. A bug fix is one PR. A new feature is another. A documentation update is another. If your diff touches 40+ files across unrelated features, it needs to be split. Mixed-scope PRs will be sent back for splitting.

  2. You understand what your code does. If an AI tool wrote it, read it critically before submitting. Can you explain why each change is necessary? Could you debug it if it broke? If not, it's not ready.

  3. Tests are included or updated. New features need tests. Bug fixes need a test that would have caught the bug. If you're changing API endpoints, verify they work against the live API -- don't just trust that a URL swap is sufficient.

  4. Manual verification is done. Run npm run build and npm test locally. If you're changing API integration code, test against your own Todoist account (dry-run mode is available with DRYRUN=true). Include evidence of verification in your PR description.

  5. CI must pass. PRs with failing CI checks will not be reviewed until they're green.

What Makes a Good PR

  • A clear, descriptive title and body explaining what and why

  • A focused diff that's easy to review (under 200 lines changed is ideal)

  • Tests that demonstrate the change works

  • Updated documentation if the change affects user-facing behavior

  • No unrelated formatting changes, refactors, or "while I'm here" improvements

Getting Started

  1. Fork the repository

  2. Create a feature branch from main

  3. Make your changes following the guidelines above

  4. Run npm run build && npm test && npm run lint to verify

  5. Submit your PR with a clear description

If you're unsure whether a change is wanted or how to approach it, open an issue first to discuss. This saves everyone time and helps align on the right approach before code is written.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Issues and Support

If you encounter any issues or need support, please file an issue on the GitHub repository.

Available Tools

86 tools
todoist_activity_by_date_rangeB

Get Todoist activity log within a specific date range. Returns all events that occurred between the specified dates. Useful for generating activity reports and reviewing changes over time periods.

Inputs: since (required), until (required), object_type, event_type, +3 more.

todoist_activity_by_projectA

Get Todoist activity log for a specific project. Returns all events (tasks added/completed/deleted, comments, etc.) related to the project. Useful for project auditing and tracking project-specific changes.

Inputs: project_id (required), event_type, object_type, since, +3 more.

todoist_activity_getC

Get Todoist activity log with optional filters. Returns events for items, notes, projects, sections, labels, filters, and reminders. Useful for auditing changes, tracking productivity, and understanding workspace history.

Inputs: object_type, object_id, event_type, parent_project_id, +6 more.

todoist_archived_projects_getB

Get a list of all archived projects. Useful for reviewing or restoring archived projects.

Inputs: limit, offset.

todoist_backup_downloadA

Get the download URL for a specific backup version. The URL is time-limited. Backups are ZIP files containing CSV exports of your Todoist data.

Inputs: version (required).

todoist_backups_getA

List all available automatic backups of your Todoist data. Todoist creates backups automatically. Returns version timestamps and download URLs.

Inputs: no named parameters.

todoist_collaborators_getA

Get a list of collaborators for a shared project. Returns user IDs, names, and emails that can be used for task assignment with assignee_id.

Inputs: project_id (required).

todoist_comment_createA

Add a comment to a task or project in Todoist. For task comments, provide task_id or task_name. For project comments, provide project_id.

Inputs: content (required), task_id, task_name, project_id, +1 more.

todoist_comment_deleteB

Delete a comment by its ID

Inputs: comment_id (required).

todoist_comment_getB

Get comments for a task or project in Todoist

Inputs: task_id, task_name, project_id.

todoist_comment_updateB

Update an existing comment's content by comment ID

Inputs: comment_id (required), content (required).

todoist_completed_tasks_getA

Retrieve completed tasks from Todoist. Uses the Sync API to fetch tasks that have been marked as complete. Supports filtering by project, date range, and pagination.

Inputs: project_id, since, until, limit, +2 more.

todoist_duplicates_findA

Find duplicate or similar tasks using content similarity analysis. Returns grouped tasks that have similar titles, sorted by similarity percentage.

Inputs: threshold, project_id, include_completed.

todoist_duplicates_mergeA

Merge duplicate tasks by keeping one task and completing or deleting the others. Use after todoist_duplicates_find to clean up duplicates.

Inputs: keep_task_id (required), duplicate_task_ids (required), action (required).

todoist_filter_createA

Create a new custom filter in Todoist. Filters use Todoist's query syntax (e.g., 'p1', 'today', '@label', '#project'). Note: Requires Todoist Pro or Business plan.

Inputs: name (required), query (required), color, item_order, +1 more.

todoist_filter_deleteA

Delete a filter from Todoist. This action cannot be undone. Note: Frozen filters (from cancelled subscriptions) cannot be deleted.

Inputs: filter_id, filter_name.

todoist_filter_getB

Get all custom filters in Todoist. Filters are saved searches that help you organize and view tasks based on specific criteria. Note: Requires Todoist Pro or Business plan.

Inputs: no named parameters.

todoist_filter_updateA

Update an existing filter in Todoist. Can update name, query, color, order, or favorite status. Note: Frozen filters (from cancelled subscriptions) cannot be modified.

Inputs: filter_id, filter_name, name, query, +3 more.

todoist_invitation_acceptA

Accept a project sharing invitation. Requires both the invitation ID and secret from the invitation email.

Inputs: invitation_id (required), invitation_secret (required).

todoist_invitation_deleteA

Delete/revoke a pending invitation that you sent. Use this to cancel an invitation before it is accepted.

Inputs: invitation_id (required).

todoist_invitation_rejectB

Reject a project sharing invitation. Requires both the invitation ID and secret.

Inputs: invitation_id (required), invitation_secret (required).

todoist_invitations_getA

Get all pending project sharing invitations received by the current user.

Inputs: no named parameters.

todoist_label_createB

Create a new label in Todoist

Inputs: name (required), color, is_favorite, order.

todoist_label_deleteB

Delete a label from Todoist

Inputs: label_id, label_name.

todoist_label_getA

Get all labels in Todoist

Inputs: no named parameters.

todoist_label_statsA

Get usage statistics for all labels in Todoist

Inputs: no named parameters.

todoist_label_updateB

Update an existing label in Todoist

Inputs: label_id, label_name, name, color, +2 more.

todoist_notification_mark_readB

Mark a specific notification as read.

Inputs: notification_id (required).

todoist_notifications_getB

Get live notifications including comments, assignments, sharing invitations, and other collaboration events.

Inputs: limit.

todoist_notifications_mark_all_readA

Mark all notifications as read.

Inputs: no named parameters.

todoist_productivity_stats_getA

Get detailed productivity statistics including karma, task completion history, daily/weekly streaks, and goals progress.

Inputs: no named parameters.

todoist_project_archiveA

Archive or unarchive a project in Todoist. Archived projects are hidden from the main view but can be restored.

Inputs: project_id, project_name, archive.

todoist_project_collaborators_getB

Get a list of collaborators for a shared project in Todoist. Returns collaborator names and emails.

Inputs: project_id, project_name.

todoist_project_createB

Create a new project in Todoist with optional sub-project hierarchy, description, and view style

Inputs: name (required), color, is_favorite, parent_id, +2 more.

todoist_project_deleteA

Delete a project from Todoist. This will also delete all tasks and sub-projects within the project.

Inputs: project_id, project_name.

todoist_project_getA

Get a list of all projects from Todoist with their IDs, names, descriptions, and hierarchy information

Inputs: no named parameters.

todoist_project_inviteB

Invite a user to collaborate on a project by email. The invitee will receive an email notification.

Inputs: project_id (required), email (required), message.

todoist_project_move_to_parentA

Move a project under another project (making it a sub-project) or to root level. Useful for organizing project hierarchies.

Inputs: project_id, project_name, parent_id.

todoist_project_note_createA

Create a new note for a project. Project notes are visible to all project collaborators.

Inputs: project_id (required), content (required).

todoist_project_note_deleteA

Delete a project note by ID.

Inputs: note_id (required).

todoist_project_notes_getA

Get all notes for a specific project. Project notes are shared with all project collaborators.

Inputs: project_id (required).

todoist_project_note_updateC

Update an existing project note's content.

Inputs: note_id (required), content (required).

todoist_projects_reorderA

Reorder projects by specifying their new positions. Controls project ordering in the sidebar.

Inputs: projects (required).

todoist_project_updateB

Update an existing project in Todoist. Can modify name, color, favorite status, description, or view style.

Inputs: project_id, project_name, name, color, +3 more.

todoist_reminder_createA

Create a new reminder for a task. Supports three reminder types: relative (minutes before due), absolute (specific date/time), and location-based. Requires Todoist Pro or Business plan.

Inputs: type (required), task_id, task_name, minute_offset, +7 more.

todoist_reminder_deleteA

Delete a reminder. Requires Todoist Pro or Business plan.

Inputs: reminder_id (required).

todoist_reminder_getA

Get all reminders, optionally filtered by task. Reminders require Todoist Pro or Business plan.

Inputs: task_id, task_name.

todoist_reminder_updateA

Update an existing reminder. Can change the type, timing, or location settings. Requires Todoist Pro or Business plan.

Inputs: reminder_id (required), type, minute_offset, due_date, +6 more.

todoist_section_archiveA

Archive a section. Archived sections are hidden but not deleted. Tasks in the section are also archived.

Inputs: section_id, section_name, project_id.

todoist_section_createB

Create a new section within a project in Todoist

Inputs: name (required), project_id (required), order.

todoist_section_deleteA

Delete a section and all its tasks from Todoist. Can delete by section ID or section name search.

Inputs: section_id, section_name, project_id.

todoist_section_getC

Get a list of sections within a project from Todoist with their IDs and names

Inputs: project_id.

todoist_section_moveB

Move a section to a different project. All tasks in the section will move with it.

Inputs: project_id (required), section_id, section_name.

todoist_sections_reorderA

Reorder sections within a project by specifying their new positions.

Inputs: project_id (required), sections (required).

todoist_section_unarchiveA

Unarchive a previously archived section. Restores the section and its tasks to active status.

Inputs: section_id, section_name, project_id.

todoist_section_updateB

Update an existing section in Todoist. Can update name by section ID or section name search.

Inputs: section_id, section_name, project_id, name.

todoist_shared_label_removeA

Remove a shared label from all items in the workspace. This removes the label from all tasks but does not delete the tasks. Requires Todoist Business account.

Inputs: name (required).

todoist_shared_label_renameA

Rename a shared label across all items in the workspace. Updates the label name for all team members. Requires Todoist Business account.

Inputs: name (required), new_name (required).

todoist_shared_labels_getA

Get all shared labels in the workspace. Shared labels are available in Todoist Business accounts for team collaboration.

Inputs: no named parameters.

todoist_subtask_createB

Create a new subtask under a parent task in Todoist

Inputs: content (required), parent_task_id, parent_task_name, description, +4 more.

todoist_subtask_promoteB

Promote a subtask to a main task (remove parent relationship)

Inputs: subtask_id, subtask_name, project_id, section_id.

todoist_subtasks_bulk_createA

Create multiple subtasks under a parent task in a single operation

Inputs: subtasks (required), parent_task_id, parent_task_name.

todoist_task_closeB

Close a task. For recurring tasks, this completes the current occurrence and schedules the next one. For non-recurring tasks, this is equivalent to completing the task.

Inputs: task_id, task_name.

todoist_task_completeB

Mark a task as complete found by ID or partial name search (case-insensitive)

Inputs: task_id, task_name.

todoist_task_convert_to_subtaskB

Convert an existing task to a subtask of another task

Inputs: task_id, task_name, parent_task_id, parent_task_name.

todoist_task_createC

Create a new task in Todoist with optional description, due date, priority, labels, deadline, project, section, and duration for time blocking

Inputs: content (required), description, due_string, priority, +9 more.

todoist_task_day_order_updateB

Update the day order of tasks in the Today view. Controls the order tasks appear when viewing today's tasks.

Inputs: items (required).

todoist_task_deleteB

Delete a task found by ID or partial name search (case-insensitive)

Inputs: task_id, task_name.

todoist_task_getB

Retrieve tasks from Todoist. Use 'filter' for Todoist filter syntax (e.g., 'today', 'p1') or 'task_name' for simple text search in task content

Inputs: task_id, project_id, label_id, priority, +6 more.

todoist_task_hierarchy_getB

Get a task with all its subtasks in a hierarchical structure

Inputs: task_id, task_name, include_completed.

todoist_task_moveB

Move a task to a different project, section, or under a parent task. Uses Todoist Sync API for reliable movement operations.

Inputs: task_id, task_name, project_id, section_id, +1 more.

todoist_task_quick_addA

Create a task using natural language parsing like the Todoist app. The text is parsed to extract due dates, projects (#), labels (@), assignees (+), priorities (p1-p4), deadlines ({in 3 days}), and descriptions (//). Example: "Buy groceries tomorrow #Shopping @errands p1 {deadline Friday} //Don't forget milk"

Inputs: text (required), note, reminder, auto_reminder.

todoist_task_reopenA

Reopen a previously completed task found by ID or partial name search (case-insensitive). Use this to restore a task that was marked as complete.

Inputs: task_id, task_name.

todoist_task_reorderA

Set the order of a task within its project/section. Lower numbers appear first.

Inputs: child_order (required), task_id, task_name.

todoist_tasks_bulk_completeA

Complete multiple tasks at once based on search criteria. Efficiently mark many tasks as done.

Inputs: project_id, priority, due_before, due_after, +1 more.

todoist_tasks_bulk_createB

Create multiple tasks at once for improved efficiency. Each task can have full attributes including duration for time blocking.

Inputs: tasks (required).

todoist_tasks_bulk_deleteA

Delete multiple tasks at once based on search criteria. Use with caution - this will permanently delete matching tasks.

Inputs: project_id, priority, due_before, due_after, +1 more.

todoist_tasks_bulk_updateB

Update multiple tasks at once based on search criteria. Supports updating content, priority, due dates, labels, project, section, and duration.

Inputs: search_criteria (required), updates (required).

todoist_tasks_reorder_bulkA

Reorder multiple tasks at once by specifying their new positions. Efficient for reorganizing task lists.

Inputs: items (required).

todoist_task_updateB

Update an existing task found by ID or partial name search. Supports updating content, description, due date, priority, labels, deadline, project, section, and duration

Inputs: task_id, task_name, content, description, +11 more.

todoist_test_all_featuresC

Run comprehensive tests on all Todoist MCP features to verify functionality

Inputs: mode.

todoist_test_connectionA

Test the connection to Todoist API and verify API token validity

Inputs: no named parameters.

todoist_test_performanceC

Measure performance and response times of Todoist API operations

Inputs: iterations.

todoist_user_getB

Get information about the current Todoist user including name, email, timezone, karma, and account settings.

Inputs: no named parameters.

todoist_user_settings_getA

Get user settings including reminder preferences, notification settings, sounds, and theme configuration.

Inputs: no named parameters.

todoist_workspaces_getA

Get all workspaces for the current user. Workspaces are available with Todoist Business accounts for team organization.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 86 tools

    Disambiguation3/5

    Many tools have overlapping purposes (e.g., todoist_activity_by_date_range, activity_by_project, activity_get; task_close vs task_complete). While many are distinct, some ambiguity exists, especially with activity and task completion tools.

    Naming Consistency4/5

    Most tools follow 'todoist_<resource>_<action>' pattern (e.g., task_create, project_get), but some use plural (completed_tasks_get, duplicates_find) and a few are inconsistent (task_close vs task_complete). Overall, the pattern is clear.

    Tool Count2/5

    With 86 tools, the server is overly large for a typical MCP server. While Todoist has many features, this many tools can be overwhelming and lead to inefficiency. A more curated set (e.g., 30-50) would be more appropriate.

    Completeness5/5

    The tool set covers nearly all Todoist features: CRUD for tasks, projects, sections, labels, filters, reminders, comments, notifications, backups, activity logs, user settings, and more. Very comprehensive with minor gaps.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers