Skip to main content
Glama

MCP TODO Checklist Server

by hevener10
commands.ts3.14 kB
import { z } from 'zod'; import { ChecklistService } from './service/ChecklistService.js'; type CommandHandler = (service: ChecklistService, args: unknown[]) => Promise<any>; interface Command { description: string; handler: CommandHandler; } const validateArgs = <T>(args: unknown[], schema: z.ZodType<T>): T => { return schema.parse(args); }; export const commands: Record<string, Command> = { create: { description: 'Cria uma nova lista de tarefas', handler: async (service: ChecklistService, args: unknown[]) => { const [title, description] = validateArgs(args, z.tuple([ z.string(), z.string().optional() ])); return await service.createChecklist({ title, description, owner: 'current-user', items: [] }); } }, add: { description: 'Adiciona uma nova tarefa à lista', handler: async (service: ChecklistService, args: unknown[]) => { const [listTitle, taskTitle, options = {}] = validateArgs(args, z.tuple([ z.string(), z.string(), z.object({ priority: z.enum(['low', 'medium', 'high']).optional(), due: z.string().optional(), tags: z.array(z.string()).optional() }).optional() ])); const lists = await service.getUserChecklists('current-user'); const list = lists.find(l => l.title === listTitle); if (!list) { throw new Error(`Lista não encontrada: ${listTitle}`); } return await service.addItem(list.id, { title: taskTitle, priority: options.priority || 'medium', dueDate: options.due ? new Date(options.due) : undefined, tags: options.tags || [], completed: false }); } }, list: { description: 'Lista todas as listas de tarefas', handler: async (service: ChecklistService) => { return await service.getUserChecklists('current-user'); } }, show: { description: 'Mostra os detalhes de uma lista específica', handler: async (service: ChecklistService, args: unknown[]) => { const [listTitle] = validateArgs(args, z.tuple([z.string()])); const lists = await service.getUserChecklists('current-user'); const list = lists.find(l => l.title === listTitle); if (!list) { throw new Error(`Lista não encontrada: ${listTitle}`); } return list; } }, complete: { description: 'Marca uma tarefa como concluída', handler: async (service: ChecklistService, args: unknown[]) => { const [listTitle, taskTitle] = validateArgs(args, z.tuple([ z.string(), z.string() ])); const lists = await service.getUserChecklists('current-user'); const list = lists.find(l => l.title === listTitle); if (!list) { throw new Error(`Lista não encontrada: ${listTitle}`); } const task = list.items.find(t => t.title === taskTitle); if (!task) { throw new Error(`Tarefa não encontrada: ${taskTitle}`); } return await service.toggleItemComplete(list.id, task.id); } } };

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/hevener10/mcp-todo-checklist'

If you have feedback or need assistance with the MCP directory API, please join our Discord server