Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_get_project

Retrieve a specific Todoist project by its ID to access project details and manage tasks within that project.

Instructions

Get a specific project by its ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID of the project to retrieve

Implementation Reference

  • Handler implementation that validates arguments using isProjectIdArgs, calls todoistClient.getProject(projectId), formats the project using formatProject, and returns the details.
    if (name === "todoist_get_project") {
      if (!isProjectIdArgs(args)) {
        throw new Error("Invalid arguments for todoist_get_project");
      }
    
      const project = await todoistClient.getProject(args.projectId);
      return {
        content: [{ 
          type: "text", 
          text: `Project details:\nID: ${project.id}\n${formatProject(project)}` 
        }],
        isError: false,
      };
    }
    
    if (name === "todoist_create_project") {
  • Tool schema defining the name, description, and input schema requiring projectId.
    const GET_PROJECT_TOOL: Tool = {
      name: "todoist_get_project",
      description: "Get a specific project by its ID",
      inputSchema: {
        type: "object",
        properties: {
          projectId: {
            type: "string",
            description: "The ID of the project to retrieve"
          }
        },
        required: ["projectId"]
      }
    };
  • src/index.ts:1083-1121 (registration)
    Registration of all tools including todoist_get_project (as GET_PROJECT_TOOL) in 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,
      ],
    }));
  • Helper function formatProject used to format the project details in the tool response.
    function formatProject(project: any): string {
      return `- ${project.name}${project.color ? `\n  Color: ${project.color}` : ''}${project.isFavorite ? `\n  Favorite: Yes` : ''}${project.viewStyle ? `\n  View: ${project.viewStyle}` : ''}${project.parentId ? `\n  Parent: ${project.parentId}` : ''}${project.id ? ` (ID: ${project.id})` : ''}`;
    }
  • Type guard function isProjectIdArgs used in the handler to validate input arguments.
    function isProjectIdArgs(args: unknown): args is {
      projectId: string;
    } {
      return (
        typeof args === "object" &&
        args !== null &&
        "projectId" in args &&
        typeof (args as { projectId: string }).projectId === "string"
      );
    }

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