View as Markdown

Todoist Integration

Manage Todoist tasks, projects, and labels

The Todoist integration provides access to manage Todoist tasks, projects, and labels through the Integrate MCP server.

Installation

The Todoist integration is included with the SDK:

import { todoistIntegration } from "integrate-sdk/server";

Setup

1. Create a Todoist OAuth App

  1. Go to Todoist App Console
  2. Create a new OAuth application
  3. Configure your redirect URI
  4. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Todoist integration to your server configuration. The integration automatically reads TODOIST_CLIENT_ID and TODOIST_CLIENT_SECRET from your environment variables:

import { createMCPServer, todoistIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    todoistIntegration({
    }),
  ],
});

You can override the environment variables by passing explicit values:

todoistIntegration({
  clientId: process.env.CUSTOM_TODOIST_ID,
  clientSecret: process.env.CUSTOM_TODOIST_SECRET,
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("todoist");
const result = await client.todoist.listProjects({});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, todoistIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [todoistIntegration()],
});

Configuration Options

export interface TodoistIntegrationConfig {
  /** Todoist OAuth client ID (defaults to TODOIST_CLIENT_ID env var) */
  clientId?: string;

Tools

todoist_list_projects

List all projects

No parameters.

todoist_get_project

Get details of a specific project

export interface TodoistGetProjectParams {
    /** Project ID */
    project_id: string;

todoist_create_project

Create a new project

export interface TodoistCreateProjectParams {
    /** Project name */
    name: string;

todoist_update_project

Update an existing project

export interface TodoistUpdateProjectParams {
    /** Project ID */
    project_id: string;

todoist_delete_project

Delete a project

export interface TodoistDeleteProjectParams {
    /** Project ID */
    project_id: string;

todoist_archive_project

Archive a project

export interface TodoistArchiveProjectParams {
    /** Project ID */
    project_id: string;

todoist_list_tasks

List active tasks with optional filters

export interface TodoistListTasksParams {
    /** Filter by project ID */
    project_id?: string;

todoist_get_task

Get details of a specific task

export interface TodoistGetTaskParams {
    /** Task ID */
    task_id: string;

todoist_create_task

Create a new task

export interface TodoistCreateTaskParams {
    /** Task title/content */
    content: string;

todoist_update_task

Update an existing task

export interface TodoistUpdateTaskParams {
    /** Task ID */
    task_id: string;

todoist_complete_task

Mark a task as complete

export interface TodoistCompleteTaskParams {
    /** Task ID */
    task_id: string;

todoist_delete_task

Delete a task permanently

export interface TodoistDeleteTaskParams {
    /** Task ID */
    task_id: string;

todoist_reopen_task

Reopen a completed task

export interface TodoistReopenTaskParams {
    /** Task ID */
    task_id: string;

todoist_move_task

Move a task to a different project, section, or parent

export interface TodoistMoveTaskParams {
    /** Task ID */
    task_id: string;

todoist_quick_add_task

Add a task using natural language

export interface TodoistQuickAddTaskParams {
    /** Full task string with natural language parsing */
    text: string;

todoist_get_completed_tasks

Get completed tasks

export interface TodoistGetCompletedTasksParams {
    /** Filter by project ID */
    project_id?: string;

todoist_filter_tasks

Get tasks matching a Todoist filter expression

export interface TodoistFilterTasksParams {
    /** Filter query (e.g., today, p1 & overdue, #Work & @waiting) */
    query: string;

todoist_list_sections

List sections, optionally filtered by project

export interface TodoistListSectionsParams {
    /** Filter by project ID */
    project_id?: string;

todoist_create_section

Create a new section in a project

export interface TodoistCreateSectionParams {
    /** Section name */
    name: string;

todoist_get_section

Get details of a specific section

export interface TodoistGetSectionParams {
    /** Section ID */
    section_id: string;

todoist_update_section

Rename a section

export interface TodoistUpdateSectionParams {
    /** Section ID */
    section_id: string;

todoist_delete_section

Delete a section (and all tasks in it)

export interface TodoistDeleteSectionParams {
    /** Section ID */
    section_id: string;

todoist_list_comments

List comments on a task or project

export interface TodoistListCommentsParams {
    /** Task ID (provide either task_id or project_id) */
    task_id?: string;

todoist_create_comment

Add a comment to a task or project

export interface TodoistCreateCommentParams {
    /** Comment text (supports Markdown) */
    content: string;

todoist_get_comment

Get details of a specific comment

export interface TodoistGetCommentParams {
    /** Comment ID */
    comment_id: string;

todoist_update_comment

Update a comment's text

export interface TodoistUpdateCommentParams {
    /** Comment ID */
    comment_id: string;

todoist_delete_comment

Delete a comment

export interface TodoistDeleteCommentParams {
    /** Comment ID */
    comment_id: string;

todoist_list_labels

List all personal labels

No parameters.

todoist_create_label

Create a new label

export interface TodoistCreateLabelParams {
    /** Label name */
    name: string;

todoist_update_label

Update a label

export interface TodoistUpdateLabelParams {
    /** Label ID */
    label_id: string;

todoist_delete_label

Delete a label

export interface TodoistDeleteLabelParams {
    /** Label ID */
    label_id: string;

todoist_list_reminders

List all reminders

No parameters.

todoist_create_reminder

Create a reminder for a task

export interface TodoistCreateReminderParams {
    /** Task ID */
    task_id: string;

Notes

  • Category: Productivity
  • Authentication mode: OAuth