Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_get_task

Retrieve a specific Todoist task using its unique ID to access details and manage task information within the Enhanced Todoist MCP Server Extended.

Instructions

Get a specific task by its ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to retrieve

Implementation Reference

  • Handler for todoist_get_task: validates input with isTaskIdArgs, calls todoistClient.getTask(taskId), formats response using formatTask, and returns formatted task details.
    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,
      };
    }
  • Tool schema defining the input schema for todoist_get_task, requiring a taskId string.
    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-1122 (registration)
    Registration of the tool in the ListToolsRequestSchema handler by including GET_TASK_TOOL in the tools array returned to clients.
    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,
      ],
    }));
  • Type guard helper function isTaskIdArgs used to validate arguments for todoist_get_task and similar task ID-based tools.
    function isTaskIdArgs(args: unknown): args is {
      taskId: string;
    } {
      return (
        typeof args === "object" &&
        args !== null &&
        "taskId" in args &&
        typeof (args as { taskId: string }).taskId === "string"
      );
    }
  • Helper function formatTask used to format the task object into a readable string for output in todoist_get_task response.
    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;
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kydycode/todoist-mcp-server-ext'

If you have feedback or need assistance with the MCP directory API, please join our Discord server