get_upcoming_milestones
Track and manage GitHub project deadlines by retrieving upcoming milestones within a specified time frame, with options to include related issues and set results limit.
Instructions
Get a list of upcoming milestones within a time frame
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| daysAhead | Yes | ||
| includeIssues | Yes | ||
| limit | Yes |
Implementation Reference
- Core implementation of getUpcomingMilestones tool. Fetches all milestones, filters upcoming ones within daysAhead that are open, sorts by due date, limits results, and computes metrics including issues if requested.async getUpcomingMilestones(daysAhead: number = 30, limit: number = 10, includeIssues: boolean = false): Promise<MilestoneMetrics[]> { try { const milestones = await this.milestoneRepo.findAll(); const now = new Date(); const futureDate = new Date(now); futureDate.setDate(now.getDate() + daysAhead); const upcomingMilestones = milestones.filter(milestone => { if (!milestone.dueDate) return false; const dueDate = new Date(milestone.dueDate); return dueDate > now && dueDate <= futureDate && milestone.status !== ResourceStatus.COMPLETED && milestone.status !== ResourceStatus.CLOSED; }); upcomingMilestones.sort((a, b) => { if (!a.dueDate || !b.dueDate) return 0; return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime(); }); const limitedMilestones = upcomingMilestones.slice(0, limit); const milestoneMetrics = await Promise.all( limitedMilestones.map(milestone => this.getMilestoneMetrics(milestone.id, includeIssues) ) ); return milestoneMetrics; } catch (error) { throw this.mapErrorToMCPError(error); } }
- Tool definition including input schema (daysAhead, limit, includeIssues), description, and usage examples for get_upcoming_milestones.export const getUpcomingMilestonesTool: ToolDefinition<GetUpcomingMilestonesArgs> = { name: "get_upcoming_milestones", description: "Get a list of upcoming milestones within a time frame", schema: getUpcomingMilestonesSchema as unknown as ToolSchema<GetUpcomingMilestonesArgs>, examples: [ { name: "List upcoming milestones", description: "Get milestones due in the next 14 days", args: { daysAhead: 14, limit: 10, includeIssues: true, }, }, ], };
- src/infrastructure/tools/ToolRegistry.ts:190-190 (registration)Registers the getUpcomingMilestonesTool in the central ToolRegistry singleton.this.registerTool(getUpcomingMilestonesTool);
- src/index.ts:255-256 (handler)MCP server dispatcher routes 'get_upcoming_milestones' tool calls to ProjectManagementService.getUpcomingMilestones after validation.case "get_upcoming_milestones": return await this.service.getUpcomingMilestones(args.daysAhead, args.limit, args.includeIssues);
- Zod input validation schema for get_upcoming_milestones parameters.export const getUpcomingMilestonesSchema = z.object({ daysAhead: z.number().int().positive(), limit: z.number().int().positive(), includeIssues: z.boolean(), }); export type GetUpcomingMilestonesArgs = z.infer<typeof getUpcomingMilestonesSchema>;