todoist_get_task
Retrieve a specific Todoist task by its ID to manage or update task details efficiently using the Enhanced Todoist MCP Server Extended.
Instructions
Get a specific task by its ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to retrieve |
Implementation Reference
- src/index.ts:1213-1226 (handler)The core handler logic for the 'todoist_get_task' tool. It validates the input arguments using isTaskIdArgs, fetches the task using todoistClient.getTask(taskId), formats it with formatTask, and returns a formatted text response.if (name === "todoist_get_task") { if (!isTaskIdArgs(args)) { throw new Error("Invalid arguments for todoist_get_task"); } const task = await todoistClient.getTask(args.taskId); return { content: [{ type: "text", text: `Task details:\nID: ${task.id}\n${formatTask(task)}` }], isError: false, }; }
- src/index.ts:131-144 (schema)The Tool object definition including name, description, and input schema (JSON Schema) for validating the taskId parameter.const GET_TASK_TOOL: Tool = { name: "todoist_get_task", description: "Get a specific task by its ID", inputSchema: { type: "object", properties: { taskId: { type: "string", description: "The ID of the task to retrieve" } }, required: ["taskId"] } };
- src/index.ts:1083-1121 (registration)Registration of the todoist_get_task tool (as GET_TASK_TOOL) in the list of available tools returned by the ListToolsRequestSchema handler.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ // Task tools CREATE_TASK_TOOL, QUICK_ADD_TASK_TOOL, GET_TASKS_TOOL, GET_TASK_TOOL, UPDATE_TASK_TOOL, DELETE_TASK_TOOL, COMPLETE_TASK_TOOL, REOPEN_TASK_TOOL, SEARCH_TASKS_TOOL, MOVE_TASK_TOOL, BULK_MOVE_TASKS_TOOL, // Project tools GET_PROJECTS_TOOL, GET_PROJECT_TOOL, CREATE_PROJECT_TOOL, UPDATE_PROJECT_TOOL, DELETE_PROJECT_TOOL, // Section tools GET_SECTIONS_TOOL, CREATE_SECTION_TOOL, UPDATE_SECTION_TOOL, DELETE_SECTION_TOOL, // Label tools CREATE_LABEL_TOOL, GET_LABEL_TOOL, GET_LABELS_TOOL, UPDATE_LABEL_TOOL, DELETE_LABEL_TOOL, // Comment tools CREATE_COMMENT_TOOL, GET_COMMENT_TOOL, GET_COMMENTS_TOOL, UPDATE_COMMENT_TOOL, DELETE_COMMENT_TOOL, ], }));
- src/index.ts:788-797 (helper)Type guard helper function used to validate input arguments for task ID-based tools, including todoist_get_task.function isTaskIdArgs(args: unknown): args is { taskId: string; } { return ( typeof args === "object" && args !== null && "taskId" in args && typeof (args as { taskId: string }).taskId === "string" ); }
- src/index.ts:705-719 (helper)Helper function to format task details into a readable string, used in the response of todoist_get_task.function formatTask(task: any): string { let taskDetails = `- ID: ${task.id}\n Content: ${task.content}`; if (task.description) taskDetails += `\n Description: ${task.description}`; if (task.due) taskDetails += `\n Due: ${task.due.string}`; if (task.priority && task.priority > 1) taskDetails += `\n Priority: ${task.priority}`; if (task.labels && task.labels.length > 0) taskDetails += `\n Labels: ${task.labels.join(', ')}`; if (task.projectId) taskDetails += `\n Project ID: ${task.projectId}`; if (task.sectionId) taskDetails += `\n Section ID: ${task.sectionId}`; if (task.parentId) taskDetails += `\n Parent ID: ${task.parentId}`; if (task.url) taskDetails += `\n URL: ${task.url}`; if (task.commentCount > 0) taskDetails += `\n Comments: ${task.commentCount}`; if (task.createdAt) taskDetails += `\n Created At: ${task.createdAt}`; if (task.creatorId) taskDetails += `\n Creator ID: ${task.creatorId}`; return taskDetails; }