Skip to main content
Glama
kunwarVivek

mcp-github-project-manager

get_milestone_metrics

Retrieve progress metrics for GitHub project milestones to track completion status and issue details for project management.

Instructions

Get progress metrics for a specific milestone

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
milestoneIdYes
includeIssuesYes

Implementation Reference

  • Core implementation of getMilestoneMetrics: fetches milestone, filters associated issues, calculates metrics like completion percentage, open/closed counts, overdue status, and optionally includes issue details.
    // Milestone Management
    async getMilestoneMetrics(id: string, includeIssues: boolean = false): Promise<MilestoneMetrics> {
      try {
        const milestone = await this.milestoneRepo.findById(id);
        if (!milestone) {
          throw new ResourceNotFoundError(ResourceType.MILESTONE, id);
        }
    
        const allIssues = await this.issueRepo.findAll();
        const issues = allIssues.filter(issue => issue.milestoneId === milestone.id);
    
        const totalIssues = issues.length;
        const closedIssues = issues.filter(
          issue => issue.status === ResourceStatus.CLOSED || issue.status === ResourceStatus.COMPLETED
        ).length;
        const openIssues = totalIssues - closedIssues;
        const completionPercentage = totalIssues > 0 ? Math.round((closedIssues / totalIssues) * 100) : 0;
    
        const now = new Date();
        let isOverdue = false;
        let daysRemaining: number | undefined = undefined;
    
        if (milestone.dueDate) {
          const dueDate = new Date(milestone.dueDate);
          isOverdue = now > dueDate;
          daysRemaining = Math.ceil((dueDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
        }
    
        return {
          id: milestone.id,
          title: milestone.title,
          dueDate: milestone.dueDate,
          openIssues,
          closedIssues,
          totalIssues,
          completionPercentage,
          status: milestone.status,
          issues: includeIssues ? issues : undefined,
          isOverdue,
          daysRemaining: daysRemaining && daysRemaining > 0 ? daysRemaining : undefined
        };
      } catch (error) {
        throw this.mapErrorToMCPError(error);
      }
  • MCP tool dispatcher handler that routes 'get_milestone_metrics' calls to ProjectManagementService.getMilestoneMetrics
    case "get_milestone_metrics":
      return await this.service.getMilestoneMetrics(args.milestoneId, args.includeIssues);
  • ToolDefinition for get_milestone_metrics including Zod input schema, description, and usage examples
    export const getMilestoneMetricsTool: ToolDefinition<GetMilestoneMetricsArgs> = {
      name: "get_milestone_metrics",
      description: "Get progress metrics for a specific milestone",
      schema: getMilestoneMetricsSchema as unknown as ToolSchema<GetMilestoneMetricsArgs>,
      examples: [
        {
          name: "Get milestone progress",
          description: "Get progress metrics for milestone #2",
          args: {
            milestoneId: "2",
            includeIssues: true,
          },
        },
      ],
    };
  • Zod input validation schema for get_milestone_metrics tool parameters
    export const getMilestoneMetricsSchema = z.object({
      milestoneId: z.string().min(1, "Milestone ID is required"),
      includeIssues: z.boolean(),
    });
    
    export type GetMilestoneMetricsArgs = z.infer<typeof getMilestoneMetricsSchema>;
  • Registers the getMilestoneMetricsTool in the central ToolRegistry singleton
    this.registerTool(getMilestoneMetricsTool);
Install Server

Other Tools

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/kunwarVivek/mcp-github-project-manager'

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