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
| 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);