get_team_status
Retrieve current development team status including active issues, due items, and recent completions for each member to monitor project progress and workload distribution.
Instructions
Get current status of the development team including active issues, due items, and recent completions for each team member
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/team-status.ts:12-61 (handler)Core handler function that fetches GitHub issues, processes team members' workloads, and returns TeamStatus.async getTeamStatus(): Promise<TeamStatus> { try { // Get all open issues for the team const issues = await this.githubClient.getAllTeamIssues(); // Get unique assignees const assigneeLogins = this.githubClient.getUniqueAssignees(issues); // Build team member data const members: TeamMember[] = []; for (const login of assigneeLogins) { const memberIssues = issues.filter(issue => issue.assignees.some(assignee => assignee.login === login) ); const activeIssues = memberIssues.filter(issue => issue.state === 'open').length; const dueToday = this.countDueToday(memberIssues); const completedThisWeek = await this.getCompletedThisWeek(login); // Get avatar from first issue assignee data const avatarUrl = memberIssues[0]?.assignees.find(a => a.login === login)?.avatar_url || ''; members.push({ login, avatar_url: avatarUrl, activeIssues, dueToday, completedThisWeek, issues: memberIssues }); } // Sort by workload (most active first) members.sort((a, b) => b.activeIssues - a.activeIssues); const totalActiveIssues = members.reduce((sum, member) => sum + member.activeIssues, 0); const totalDueToday = members.reduce((sum, member) => sum + member.dueToday, 0); return { members, totalActiveIssues, totalDueToday, lastUpdated: new Date().toISOString() }; } catch (error) { console.error('Error getting team status:', error); throw error; } }
- src/index.ts:92-100 (registration)Registration of the get_team_status tool in the MCP ListToolsRequestHandler, including name, description, and input schema.{ name: 'get_team_status', description: 'Get current status of the development team including active issues, due items, and recent completions for each team member', inputSchema: { type: 'object', properties: {}, required: [], }, },
- src/types.ts:41-46 (schema)TypeScript interface defining the output structure of the get_team_status tool.export interface TeamStatus { members: TeamMember[]; totalActiveIssues: number; totalDueToday: number; lastUpdated: string; }
- src/index.ts:148-158 (handler)MCP CallToolRequestSchema handler case that executes the team status tool and returns formatted response.case 'get_team_status': { const status = await this.teamStatusTool.getTeamStatus(); return { content: [ { type: 'text', text: this.formatTeamStatus(status), }, ], }; }
- src/index.ts:212-240 (helper)Helper function that formats the raw TeamStatus data into a readable Markdown summary.private formatTeamStatus(status: any): string { const { members, totalActiveIssues, totalDueToday, lastUpdated } = status; let output = `## Team Status (as of ${new Date(lastUpdated).toLocaleString()})\n\n`; output += `**Overview:** ${totalActiveIssues} active issues, ${totalDueToday} due today\n\n`; if (members.length === 0) { output += 'No team members found with assigned issues.\n'; return output; } output += '**Team Members:**\n'; for (const member of members) { const { login, activeIssues, dueToday, completedThisWeek } = member; output += `- **${login}**: ${activeIssues} active`; if (dueToday > 0) { output += `, ${dueToday} due today`; } if (completedThisWeek > 0) { output += `, ${completedThisWeek} completed this week`; } output += '\n'; } return output; }