Skip to main content
Glama
kunwarVivek

mcp-github-project-manager

get_sprint_metrics

Retrieve progress metrics for a specific GitHub sprint, including issue details when requested, to track development workflow performance.

Instructions

Get progress metrics for a specific sprint

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sprintIdYes
includeIssuesYes

Implementation Reference

  • Core implementation of getSprintMetrics: fetches sprint by ID, loads associated issues, calculates completion metrics (total/completed/remaining issues, percentage), determines days remaining and active status, optionally includes issue details.
    async getSprintMetrics(id: string, includeIssues: boolean = false): Promise<SprintMetrics> {
      try {
        const sprint = await this.sprintRepo.findById(id);
        if (!sprint) {
          throw new ResourceNotFoundError(ResourceType.SPRINT, id);
        }
    
        const issuePromises = sprint.issues.map((issueId: string) => this.issueRepo.findById(issueId));
        const issuesResult = await Promise.all(issuePromises);
        const issues = issuesResult.filter((issue: Issue | null) => issue !== null) as Issue[];
    
        const totalIssues = issues.length;
        const completedIssues = issues.filter(
          issue => issue.status === ResourceStatus.CLOSED || issue.status === ResourceStatus.COMPLETED
        ).length;
        const remainingIssues = totalIssues - completedIssues;
        const completionPercentage = totalIssues > 0 ? Math.round((completedIssues / totalIssues) * 100) : 0;
    
        const now = new Date();
        const endDate = new Date(sprint.endDate);
        const daysRemaining = Math.ceil((endDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
        const isActive = now >= new Date(sprint.startDate) && now <= endDate;
    
        return {
          id: sprint.id,
          title: sprint.title,
          startDate: sprint.startDate,
          endDate: sprint.endDate,
          totalIssues,
          completedIssues,
          remainingIssues,
          completionPercentage,
          status: sprint.status,
          issues: includeIssues ? issues : undefined,
          daysRemaining,
          isActive
        };
      } catch (error) {
        throw this.mapErrorToMCPError(error);
      }
    }
  • Defines the ToolDefinition for get_sprint_metrics including name, description, Zod input schema (sprintId: string, includeIssues: boolean), and usage example.
    export const getSprintMetricsTool: ToolDefinition<GetSprintMetricsArgs> = {
      name: "get_sprint_metrics",
      description: "Get progress metrics for a specific sprint",
      schema: getSprintMetricsSchema as unknown as ToolSchema<GetSprintMetricsArgs>,
      examples: [
        {
          name: "Get sprint progress",
          description: "Get progress metrics for sprint 'sprint_1'",
          args: {
            sprintId: "sprint_1",
            includeIssues: true,
          },
        },
      ],
    };
  • Registers the getSprintMetricsTool in the central ToolRegistry singleton during initialization.
    this.registerTool(getSprintMetricsTool);
  • MCP server request handler dispatches get_sprint_metrics calls to ProjectManagementService.getSprintMetrics after validation.
    case "get_sprint_metrics":
      return await this.service.getSprintMetrics(args.sprintId, args.includeIssues);
  • TypeScript interface defining the structure of SprintMetrics returned by the handler.
    export interface SprintMetrics {
      id: string;
      title: string;
      startDate: string;
      endDate: string;
      totalIssues: number;
      completedIssues: number;
      remainingIssues: number;
      completionPercentage: number;
      status: ResourceStatus;
      issues?: Issue[];
      daysRemaining?: number;
      isActive: boolean;
    }
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