Skip to main content
Glama

get_upcoming_milestones

Retrieve upcoming GitHub milestones within a specified timeframe to track project deadlines and progress.

Instructions

Get a list of upcoming milestones within a time frame

Input Schema

NameRequiredDescriptionDefault
daysAheadYes
limitYes
includeIssuesYes

Input Schema (JSON Schema)

{ "properties": { "daysAhead": { "type": "number" }, "includeIssues": { "type": "boolean" }, "limit": { "type": "number" } }, "required": [ "daysAhead", "limit", "includeIssues" ], "type": "object" }

Implementation Reference

  • Core handler implementation: Fetches all milestones, filters those due within 'daysAhead' that are still open, sorts by due date ascending, limits to 'limit' results, and enriches each with metrics (including optional issues). Calls getMilestoneMetrics helper.
    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); } }
  • MCP tool dispatcher in server index: Routes 'get_upcoming_milestones' tool calls to ProjectManagementService.getUpcomingMilestones with validated args.
    case "get_upcoming_milestones": return await this.service.getUpcomingMilestones(args.daysAhead, args.limit, args.includeIssues);
  • Zod input schema validation for tool parameters: daysAhead (positive int), limit (positive int), includeIssues (boolean). Exports TypeScript type.
    // Schema for get_upcoming_milestones tool 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>;
  • Registers the getUpcomingMilestonesTool in the central ToolRegistry singleton during built-in tools initialization.
    this.registerTool(getUpcomingMilestonesTool);
  • ToolDefinition export including name, description, schema reference, and example usage for MCP tool listing.
    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, }, }, ], };

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/HarshKumarSharma/MCP'

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