Todoist MCP

import type { TodoistApi } from '@doist/todoist-api-typescript' import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' import { z } from 'zod' export function registerAddTask(server: McpServer, api: TodoistApi) { server.tool( 'add-task', 'Add a task to Todoist', { content: z.string(), description: z.string().optional(), projectId: z.string().optional().describe('The ID of a project to add the task to'), assigneeId: z .string() .optional() .describe('The ID of a project collaborator to assign the task to'), priority: z .number() .min(1) .max(4) .optional() .describe('Task priority from 1 (normal) to 4 (urgent)'), labels: z.array(z.string()).optional(), parentId: z.string().optional().describe('The ID of a parent task'), deadlineDate: z .string() .optional() .describe('Specific date in YYYY-MM-DD format relative to user’s timezone.'), deadlineLang: z .string() .optional() .describe('2-letter code specifying language of deadline.'), }, async ({ content, projectId, parentId, assigneeId, priority, labels, deadlineDate, deadlineLang, }) => { const task = await api.addTask({ content, projectId, parentId, assigneeId, priority, labels, deadlineDate, deadlineLang, }) return { content: [ { type: 'text', text: JSON.stringify(task, null, 2), }, ], } }, ) }