Skip to main content
Glama
kydycode

Enhanced Todoist MCP Server Extended

todoist_update_comment

Modify existing Todoist comments by providing a comment ID and new content to update task or project annotations.

Instructions

Update an existing comment by its ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
commentIdYesThe ID of the comment to update
contentYesNew content/text for the comment

Implementation Reference

  • The main handler logic for the 'todoist_update_comment' tool within the CallToolRequestSchema handler. Validates arguments using isUpdateCommentArgs, calls todoistClient.updateComment(commentId, updateArgs), formats the response using formatComment, and handles errors.
    if (name === "todoist_update_comment") { if (!isUpdateCommentArgs(args)) { return { content: [{ type: "text", text: "Invalid arguments for update_comment" }], isError: true }; } try { const { commentId, ...updateArgs } = args; const updatedComment = await todoistClient.updateComment(commentId, updateArgs); return { content: [{ type: "text", text: `Comment updated:\n${formatComment(updatedComment)}` }], isError: false }; } catch (error: any) { return { content: [{ type: "text", text: `Error updating comment: ${error.message}` }], isError: true }; } }
  • The Tool object definition including name, description, and inputSchema (JSON Schema) for validating arguments: requires commentId and content.
    const UPDATE_COMMENT_TOOL: Tool = { name: "todoist_update_comment", description: "Update an existing comment by its ID", inputSchema: { type: "object", properties: { commentId: { type: "string", description: "The ID of the comment to update" }, content: { type: "string", description: "New content/text for the comment" } }, required: ["commentId", "content"] } };
  • src/index.ts:1083-1121 (registration)
    Registration of the tool in the ListToolsRequestSchema handler. UPDATE_COMMENT_TOOL is included in the array of available tools returned by the server.
    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 function used by the handler to validate input arguments match the expected shape: {commentId: string, content: string}.
    function isUpdateCommentArgs(args: unknown): args is { commentId: string; content: string; } { return ( typeof args === "object" && args !== null && "commentId" in args && "content" in args && typeof (args as { commentId: string; content: string }).commentId === "string" && typeof (args as { commentId: string; content: string }).content === "string" ); }
  • Helper function to format the comment object into a human-readable string for the tool response.
    function formatComment(comment: any): string { let commentDetails = `- ID: ${comment.id}\n Content: ${comment.content}`; if (comment.postedAt) commentDetails += `\n Posted At: ${comment.postedAt}`; if (comment.taskId) commentDetails += `\n Task ID: ${comment.taskId}`; if (comment.projectId) commentDetails += `\n Project ID: ${comment.projectId}`; if (comment.attachment) { commentDetails += `\n Attachment: ${comment.attachment.fileName || 'File'} (${comment.attachment.fileType})`; if (comment.attachment.fileUrl) commentDetails += `\n File URL: ${comment.attachment.fileUrl}`; } return commentDetails; }

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