Skip to main content
Glama

taskSearch

Search tasks in the GonMCPtool MCP server by filtering criteria such as status, tags, priority, due dates, or keyword. Simplify task management and retrieval with precise queries.

Instructions

根據條件搜索任務

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filterYes

Implementation Reference

  • Core handler function that implements the task search logic. Loads tasks from JSON file and applies multiple filters: status, tags (all must match), priority, due date range, creation date range, planned start date range, and full-text search in title, description, and step descriptions.
    public static async searchTasks(filter: TaskFilter): Promise<Task[]> { const tasks = await this.readTasks(); return tasks.filter(task => { // 根據任務狀態過濾 if (filter.status && task.status !== filter.status) { return false; } // 根據標籤過濾 if (filter.tags && filter.tags.length > 0) { const hasAllTags = filter.tags.every(tag => task.tags.includes(tag)); if (!hasAllTags) { return false; } } // 根據優先級過濾 if (filter.priority && task.priority !== filter.priority) { return false; } // 根據期限過濾 if (filter.dueDateFrom && task.dueDate) { const dueDateFrom = new Date(filter.dueDateFrom); const taskDueDate = new Date(task.dueDate); if (taskDueDate < dueDateFrom) { return false; } } if (filter.dueDateTo && task.dueDate) { const dueDateTo = new Date(filter.dueDateTo); const taskDueDate = new Date(task.dueDate); // 根據預計開始時間過濾 if (filter.plannedStartDateFrom && task.plannedStartDate) { const plannedStartDateFrom = new Date(filter.plannedStartDateFrom); const taskPlannedStartDate = new Date(task.plannedStartDate); if (taskPlannedStartDate < plannedStartDateFrom) { return false; } } if (filter.plannedStartDateTo && task.plannedStartDate) { const plannedStartDateTo = new Date(filter.plannedStartDateTo); const taskPlannedStartDate = new Date(task.plannedStartDate); if (taskPlannedStartDate > plannedStartDateTo) { return false; } } if (taskDueDate > dueDateTo) { return false; } } // 根據建立時間過濾 if (filter.createdFrom) { const createdFrom = new Date(filter.createdFrom); const taskCreatedDate = new Date(task.createdAt); if (taskCreatedDate < createdFrom) { return false; } } if (filter.createdTo) { const createdTo = new Date(filter.createdTo); const taskCreatedDate = new Date(task.createdAt); if (taskCreatedDate > createdTo) { return false; } } // 根據文本搜索 if (filter.searchText) { const searchText = filter.searchText.toLowerCase(); const matchesTitle = task.title.toLowerCase().includes(searchText); const matchesDescription = task.description.toLowerCase().includes(searchText); const matchesSteps = task.steps.some(step => step.description.toLowerCase().includes(searchText) ); if (!matchesTitle && !matchesDescription && !matchesSteps) { return false; } } return true; }); }
  • Zod input schema for the taskSearch tool, validating the filter object parameters.
    filter: z.object({ status: z.enum([ TaskStatus.PENDING, TaskStatus.IN_PROGRESS, TaskStatus.COMPLETED, TaskStatus.CANCELLED ]).optional(), tags: z.array(z.string()).optional(), priority: z.number().optional(), dueDateFrom: z.string().optional(), dueDateTo: z.string().optional(), searchText: z.string().optional() }) },
  • TypeScript interface defining the complete TaskFilter type used in searchTasks, including additional optional fields like createdFrom/To not present in the Zod schema.
    export interface TaskFilter { status?: TaskStatus; plannedStartDateFrom?: string; plannedStartDateTo?: string; tags?: string[]; priority?: number; dueDateFrom?: string; dueDateTo?: string; createdFrom?: string; createdTo?: string; searchText?: string; }
  • main.ts:804-834 (registration)
    MCP server tool registration for 'taskSearch', providing description, Zod schema, and thin wrapper handler that delegates to TaskManagerTool.searchTasks and formats response.
    server.tool("taskSearch", "根據條件搜索任務", { filter: z.object({ status: z.enum([ TaskStatus.PENDING, TaskStatus.IN_PROGRESS, TaskStatus.COMPLETED, TaskStatus.CANCELLED ]).optional(), tags: z.array(z.string()).optional(), priority: z.number().optional(), dueDateFrom: z.string().optional(), dueDateTo: z.string().optional(), searchText: z.string().optional() }) }, async ({ filter }) => { try { const tasks = await TaskManagerTool.searchTasks(filter); return { content: [{ type: "text", text: `搜索到 ${tasks.length} 個任務:\n${JSON.stringify(tasks, null, 2)}` }] }; } catch (error) { return { content: [{ type: "text", text: `搜索任務失敗: ${error instanceof Error ? error.message : "未知錯誤"}` }] }; } } );

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/GonTwVn/GonMCPtool'

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