filter-tasks
Filter tasks in Todo.txt files by priority, context, or project to organize and focus on specific work items.
Instructions
Filter tasks by specific criteria (priority, context, project).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| criteria | Yes |
Implementation Reference
- src/tools.ts:201-218 (handler)The handler function for the 'filter-tasks' tool. It loads all tasks, applies sequential filters based on provided criteria (priority, context, or project), and returns the filtered tasks as a newline-separated string.async ({ criteria }) => { const tasks = await loadTasks(); let filteredTasks = tasks; if (criteria.priority) { filteredTasks = filteredTasks.filter(task => task.priority() === criteria.priority); } if (criteria.context) { filteredTasks = filteredTasks.filter(task => criteria.context && task.contexts().includes(criteria.context)); } if (criteria.project) { filteredTasks = filteredTasks.filter(task => criteria.project && task.projects().includes(criteria.project)); } return { content: [ { type: "text", text: filteredTasks.map(task => task.toString()).join("\n") }, ], }; }
- src/tools.ts:194-200 (schema)Zod input schema for the 'filter-tasks' tool, defining an object with optional string fields for priority, context, and project filters.{ criteria: z.object({ priority: z.string().optional(), context: z.string().optional(), project: z.string().optional(), }), },
- src/tools.ts:191-219 (registration)Registration of the 'filter-tasks' tool using server.tool(), which includes the name, description, input schema, and inline handler function. This occurs within the exported registerTools function.server.tool( "filter-tasks", "Filter tasks by specific criteria (priority, context, project).", { criteria: z.object({ priority: z.string().optional(), context: z.string().optional(), project: z.string().optional(), }), }, async ({ criteria }) => { const tasks = await loadTasks(); let filteredTasks = tasks; if (criteria.priority) { filteredTasks = filteredTasks.filter(task => task.priority() === criteria.priority); } if (criteria.context) { filteredTasks = filteredTasks.filter(task => criteria.context && task.contexts().includes(criteria.context)); } if (criteria.project) { filteredTasks = filteredTasks.filter(task => criteria.project && task.projects().includes(criteria.project)); } return { content: [ { type: "text", text: filteredTasks.map(task => task.toString()).join("\n") }, ], }; } );
- index.ts:48-48 (registration)Top-level call to registerTools on the MCP server instance, which in turn registers the 'filter-tasks' tool among others.registerTools(server, loadTasks, TODO_FILE_PATH);