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
- Go to Todoist App Console
- Create a new OAuth application
- Configure your redirect URI
- 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