update_sprint
Modify sprint details including title, description, dates, and status to track development progress in GitHub projects.
Instructions
Update a development sprint
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sprintId | Yes | ||
| title | No | ||
| description | No | ||
| startDate | No | ||
| endDate | No | ||
| status | No |
Input Schema (JSON Schema)
{
"properties": {
"description": {
"type": "string"
},
"endDate": {
"type": "string"
},
"sprintId": {
"type": "string"
},
"startDate": {
"type": "string"
},
"status": {
"enum": [
"planned",
"active",
"completed"
]
},
"title": {
"type": "string"
}
},
"required": [
"sprintId"
],
"type": "object"
}
Implementation Reference
- Main handler function for update_sprint tool. Maps tool arguments to domain model, handles status enum conversion, cleans undefined fields, and delegates to GitHubSprintRepository.updateasync updateSprint(data: { sprintId: string; title?: string; description?: string; startDate?: string; endDate?: string; status?: 'planned' | 'active' | 'completed'; issues?: string[]; }): Promise<Sprint> { try { // Convert status string to ResourceStatus enum if provided let resourceStatus: ResourceStatus | undefined; if (data.status) { switch (data.status) { case 'planned': resourceStatus = ResourceStatus.PLANNED; break; case 'active': resourceStatus = ResourceStatus.ACTIVE; break; case 'completed': resourceStatus = ResourceStatus.CLOSED; break; } } // Map input data to domain model const sprintData: Partial<Sprint> = { title: data.title, description: data.description, startDate: data.startDate, endDate: data.endDate, status: resourceStatus, issues: data.issues }; // Clean up undefined values Object.keys(sprintData).forEach(key => { if (sprintData[key as keyof Partial<Sprint>] === undefined) { delete sprintData[key as keyof Partial<Sprint>]; } }); return await this.sprintRepo.update(data.sprintId, sprintData); } catch (error) { throw this.mapErrorToMCPError(error); } }
- Zod schema definition for update_sprint tool input validation// Schema for update_sprint tool export const updateSprintSchema = z.object({ sprintId: z.string().min(1, "Sprint ID is required"), title: z.string().optional(), description: z.string().optional(), startDate: z.string().datetime().optional(), endDate: z.string().datetime().optional(), status: z.enum(["planned", "active", "completed"]).optional(), }); export type UpdateSprintArgs = z.infer<typeof updateSprintSchema>;
- src/infrastructure/tools/ToolRegistry.ts:161-166 (registration)Registration of update_sprint tool (as updateSprintTool) in the central ToolRegistrythis.registerTool(createSprintTool); this.registerTool(listSprintsTool); this.registerTool(getCurrentSprintTool); this.registerTool(updateSprintTool); this.registerTool(addIssuesToSprintTool); this.registerTool(removeIssuesFromSprintTool);
- src/index.ts:304-305 (registration)Dispatch handler in main MCP server that routes update_sprint calls to ProjectManagementService.updateSprintcase "update_sprint": return await this.service.updateSprint(args);
- ToolDefinition export for update_sprint including name, description, schema reference, and usage examplesexport const updateSprintTool: ToolDefinition<UpdateSprintArgs> = { name: "update_sprint", description: "Update a development sprint", schema: updateSprintSchema as unknown as ToolSchema<UpdateSprintArgs>, examples: [ { name: "Update sprint dates", description: "Update sprint dates and status", args: { sprintId: "sprint_1", startDate: "2025-07-01T00:00:00Z", endDate: "2025-07-15T00:00:00Z", status: "active" } } ] };