sort-tasks
Organize tasks in Todo.txt files by priority, creation date, or completion date to enhance task management efficiency and clarity.
Instructions
Sort tasks by priority, creation date, or completion date.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes |
Implementation Reference
- src/tools.ts:169-188 (handler)Handler function loads tasks, sorts them based on the 'by' parameter (priority, creationDate, or completionDate), and returns the sorted list as a text response.async ({ by }) => { const tasks = await loadTasks(); let sortedTasks = tasks.slice(); switch (by) { case "priority": sortedTasks = sortedTasks.sort((a, b) => (a.priority() || "").localeCompare(b.priority() || "")); break; case "creationDate": sortedTasks = sortedTasks.sort((a, b) => new Date(a.created()?.toISOString() || 0).getTime() - new Date(b.created()?.toISOString() || 0).getTime()); break; case "completionDate": sortedTasks = sortedTasks.sort((a, b) => new Date(a.completed()?.toISOString() || 0).getTime() - new Date(b.completed()?.toISOString() || 0).getTime()); break; } return { content: [ { type: "text", text: sortedTasks.map(task => task.toString()).join("\n") }, ], }; }
- src/tools.ts:168-168 (schema)Input schema defines the 'by' parameter as an enum: ["priority", "creationDate", "completionDate"].{ by: z.enum(["priority", "creationDate", "completionDate"]) },
- src/tools.ts:165-189 (registration)Registers the 'sort-tasks' tool with MCP server, providing description, input schema, and handler function.server.tool( "sort-tasks", "Sort tasks by priority, creation date, or completion date.", { by: z.enum(["priority", "creationDate", "completionDate"]) }, async ({ by }) => { const tasks = await loadTasks(); let sortedTasks = tasks.slice(); switch (by) { case "priority": sortedTasks = sortedTasks.sort((a, b) => (a.priority() || "").localeCompare(b.priority() || "")); break; case "creationDate": sortedTasks = sortedTasks.sort((a, b) => new Date(a.created()?.toISOString() || 0).getTime() - new Date(b.created()?.toISOString() || 0).getTime()); break; case "completionDate": sortedTasks = sortedTasks.sort((a, b) => new Date(a.completed()?.toISOString() || 0).getTime() - new Date(b.completed()?.toISOString() || 0).getTime()); break; } return { content: [ { type: "text", text: sortedTasks.map(task => task.toString()).join("\n") }, ], }; } );