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 registerUpdateTask(server: McpServer, api: TodoistApi) { server.tool( 'update-task', 'Update a task in Todoist', { taskId: z.string(), content: z.string().optional(), description: z.string().optional(), 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(), 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 ({ taskId, content, description, assigneeId, priority, labels, deadlineDate, deadlineLang, }) => { const task = await api.updateTask(taskId, { content, description, assigneeId, priority, labels, deadlineDate, deadlineLang, }) return { content: [{ type: 'text', text: JSON.stringify(task, null, 2) }], } }, ) }