get_sprint_metrics
Retrieve progress metrics for GitHub project sprints to track completion and analyze performance, including optional issue details for comprehensive oversight.
Instructions
Get progress metrics for a specific sprint
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sprintId | Yes | ||
| includeIssues | Yes |
Input Schema (JSON Schema)
{
"properties": {
"includeIssues": {
"type": "boolean"
},
"sprintId": {
"type": "string"
}
},
"required": [
"sprintId",
"includeIssues"
],
"type": "object"
}
Implementation Reference
- Core handler function that implements get_sprint_metrics tool logic: fetches sprint data, retrieves associated issues, calculates completion metrics, days remaining, and active status.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); } }
- Zod schema and TypeScript type definition for get_sprint_metrics tool input parameters.// Schema for get_sprint_metrics tool export const getSprintMetricsSchema = z.object({ sprintId: z.string().min(1, "Sprint ID is required"), includeIssues: z.boolean(), }); export type GetSprintMetricsArgs = z.infer<typeof getSprintMetricsSchema>;
- src/infrastructure/tools/ToolRegistry.ts:137-137 (registration)Registration of the getSprintMetricsTool in the central ToolRegistry during initialization.this.registerTool(getSprintMetricsTool);
- src/index.ts:230-231 (handler)MCP server dispatcher that routes tool calls for get_sprint_metrics to the ProjectManagementService implementation.case "get_sprint_metrics": return await this.service.getSprintMetrics(args.sprintId, args.includeIssues);
- ToolDefinition export including name, description, schema reference, and usage examples for MCP tool discovery.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, }, }, ], };