Skip to main content
Glama
index.ts41.2 kB
// Import all tool functions import * as Issues from './issues/index.js'; import * as Milestones from './milestones/index.js'; import * as Labels from './labels/index.js'; import * as Analytics from './analytics/index.js'; import * as Webhooks from './webhooks/index.js'; import * as Projects from './projects/index.js'; import * as Planning from './planning/index.js'; import * as TaskManagement from './task-management/index.js'; // Export all tool categories export { Issues, Milestones, Labels, Analytics, Webhooks, Projects, Planning, TaskManagement }; // Tool registry for easy access export const toolRegistry = { // Project Management (GitHub Projects v2) 'create_project': Projects.createProject, 'list_projects': Projects.listProjects, 'get_project': Projects.getProject, 'update_project': Projects.updateProject, 'delete_project': Projects.deleteProject, // Project Items Management (Issue #70) 'add_project_item': Projects.addProjectItem, 'remove_project_item': Projects.removeProjectItem, 'list_project_items': Projects.listProjectItems, 'set_field_value': Projects.setFieldValue, 'get_field_value': Projects.getFieldValue, // Project Structure & Views Management (Epic #69) 'create_project_field': Projects.createProjectField, 'list_project_fields': Projects.listProjectFields, 'update_project_field': Projects.updateProjectField, 'create_project_view': Projects.createProjectView, 'list_project_views': Projects.listProjectViews, 'update_project_view': Projects.updateProjectView, // Issue Management 'create_issue': Issues.createIssue, 'list_issues': Issues.listIssues, 'get_issue': Issues.getIssue, 'update_issue': Issues.updateIssue, // Milestone Management 'create_milestone': Milestones.createMilestone, 'list_milestones': Milestones.listMilestones, 'update_milestone': Milestones.updateMilestone, 'delete_milestone': Milestones.deleteMilestone, 'get_milestone_metrics': Milestones.getMilestoneMetrics, 'get_overdue_milestones': Milestones.getOverdueMilestones, 'get_upcoming_milestones': Milestones.getUpcomingMilestones, // Label Management 'create_label': Labels.createLabel, 'list_labels': Labels.listLabels, // Analytics 'analyze_task_complexity': Analytics.analyzeTaskComplexity, 'get_repository_summary': Analytics.getRepositorySummary, // Task Management (AI-Powered) 'get_next_task': TaskManagement.getNextTask, 'expand_task': TaskManagement.expandTask, // Advanced Project Planning & PRD Tools 'generate_prd': Planning.generatePRD, 'parse_prd': Planning.parsePRD, 'enhance_prd': Planning.enhancePRD, 'add_feature': Planning.addFeature, 'create_roadmap': Planning.createRoadmap, 'create_traceability_matrix': Planning.createTraceabilityMatrix, // Webhook Management (Phase 3.1) 'setup_webhooks': Webhooks.setupWebhooks, 'list_webhooks': Webhooks.listWebhooks, 'test_webhook': Webhooks.testWebhook, 'remove_webhooks': Webhooks.removeWebhooks, 'get_webhook_deliveries': Webhooks.getWebhookDeliveries, 'get_webhook_status': Webhooks.getWebhookStatus, // Live Updates (Phase 3.1) 'get_live_project_status': Webhooks.getLiveProjectStatus, 'get_live_sprint_metrics': Webhooks.getLiveSprintMetrics, 'subscribe_to_updates': Webhooks.subscribeToUpdates, 'get_recent_activity': Webhooks.getRecentActivity, 'get_live_repository_health': Webhooks.getLiveRepositoryHealth, }; // Tool definitions for MCP server registration export const toolDefinitions = [ // PROJECT MANAGEMENT (GitHub Projects v2) { name: 'create_project', description: 'Create a new GitHub Project v2', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Project title' }, description: { type: 'string', description: 'Project description' }, visibility: { type: 'string', enum: ['PRIVATE', 'PUBLIC'], description: 'Project visibility' }, template: { type: 'string', description: 'Project template (optional)' } }, required: ['title'] } }, { name: 'list_projects', description: 'List existing GitHub Projects v2', inputSchema: { type: 'object', properties: { status: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Project status filter' }, first: { type: 'number', description: 'Number of projects to fetch (max 100, default 20)' }, orderBy: { type: 'string', enum: ['CREATED_AT', 'UPDATED_AT', 'NAME'], description: 'Sort field (default: UPDATED_AT)' }, direction: { type: 'string', enum: ['ASC', 'DESC'], description: 'Sort direction (default: DESC)' } }, required: [] } }, { name: 'get_project', description: 'Get detailed GitHub Project v2 information', inputSchema: { type: 'object', properties: { project_number: { type: 'number', description: 'Project number' }, project_id: { type: 'string', description: 'Project ID (alternative to project_number)' }, include_fields: { type: 'boolean', description: 'Include custom fields (default: true)' }, include_views: { type: 'boolean', description: 'Include project views (default: true)' }, include_items: { type: 'boolean', description: 'Include project items (default: true)' } }, required: [] } }, { name: 'update_project', description: 'Update GitHub Project v2 information', inputSchema: { type: 'object', properties: { project_number: { type: 'number', description: 'Project number' }, project_id: { type: 'string', description: 'Project ID (alternative to project_number)' }, title: { type: 'string', description: 'New project title' }, description: { type: 'string', description: 'New project description' }, readme: { type: 'string', description: 'Project README content' }, visibility: { type: 'string', enum: ['PRIVATE', 'PUBLIC'], description: 'Project visibility' }, public: { type: 'boolean', description: 'Whether project is public' }, closed: { type: 'boolean', description: 'Whether project is closed' } }, required: [] } }, { name: 'delete_project', description: 'Delete GitHub Project v2 safely', inputSchema: { type: 'object', properties: { project_number: { type: 'number', description: 'Project number' }, project_id: { type: 'string', description: 'Project ID (alternative to project_number)' }, confirm: { type: 'boolean', description: 'Confirmation required for deletion' }, force: { type: 'boolean', description: 'Force deletion bypassing safety checks' } }, required: [] } }, // PROJECT ITEMS MANAGEMENT (Issue #70) { name: 'add_project_item', description: 'Add issues, pull requests, or draft items to GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, content_id: { type: 'string', description: 'Issue or Pull Request Node ID' }, content_type: { type: 'string', enum: ['issue', 'pull_request', 'draft'], description: 'Type of content to add' }, issue_number: { type: 'number', description: 'Issue number (alternative to content_id)' }, pr_number: { type: 'number', description: 'Pull request number (alternative to content_id)' }, draft_title: { type: 'string', description: 'Title for draft item (required if content_type is draft)' }, draft_body: { type: 'string', description: 'Body for draft item (optional)' }, bulk_items: { type: 'array', items: { type: 'object', properties: { content_id: { type: 'string' }, issue_number: { type: 'number' }, pr_number: { type: 'number' }, type: { type: 'string', enum: ['issue', 'pull_request'] } } }, description: 'Array of items to add in bulk' } }, required: [] } }, { name: 'remove_project_item', description: 'Remove items from GitHub Projects v2 safely', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, item_id: { type: 'string', description: 'Project item ID to remove' }, issue_number: { type: 'number', description: 'Issue number (alternative to item_id)' }, pr_number: { type: 'number', description: 'Pull request number (alternative to item_id)' }, bulk_items: { type: 'array', items: { type: 'object', properties: { item_id: { type: 'string' }, issue_number: { type: 'number' }, pr_number: { type: 'number' } } }, description: 'Array of items to remove in bulk' }, removal_reason: { type: 'string', description: 'Optional reason for removing items from project' }, archive_instead: { type: 'boolean', description: 'Archive vs permanent deletion (default: false)' }, confirm: { type: 'boolean', description: 'Confirmation required for deletion (must be true)' } }, required: ['confirm'] } }, { name: 'list_project_items', description: 'List all items in a GitHub Projects v2 with advanced filtering', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, item_type: { type: 'string', enum: ['issue', 'pull_request', 'draft', 'all'], description: 'Filter by item type (default: all)' }, state: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Filter by item state (default: all)' }, search_title: { type: 'string', description: 'Search items by title' }, assignee: { type: 'string', description: 'Filter by assignee username' }, labels: { type: 'array', items: { type: 'string' }, description: 'Filter by labels' }, sort_by: { type: 'string', enum: ['created', 'updated', 'title', 'number'], description: 'Sort criteria' }, order: { type: 'string', enum: ['asc', 'desc'], description: 'Sort order (default: desc)' }, first: { type: 'number', description: 'Number of items to fetch (max 100, default 100)' }, include_field_values: { type: 'boolean', description: 'Include custom field values (default: true)' }, detailed_view: { type: 'boolean', description: 'Include detailed item information (default: false)' } }, required: [] } }, { name: 'set_field_value', description: 'Set custom field values for GitHub Projects v2 items', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, item_id: { type: 'string', description: 'Project item ID' }, issue_number: { type: 'number', description: 'Issue number (alternative to item_id)' }, pr_number: { type: 'number', description: 'Pull request number (alternative to item_id)' }, field_name: { type: 'string', description: 'Field name to update' }, field_id: { type: 'string', description: 'Field ID to update (alternative to field_name)' }, value: { description: 'Value to set (type depends on field type)' }, field_type: { type: 'string', enum: ['text', 'number', 'date', 'single_select', 'iteration'], description: 'Field type hint' }, bulk_updates: { type: 'array', items: { type: 'object', properties: { item_id: { type: 'string' }, issue_number: { type: 'number' }, pr_number: { type: 'number' }, field_updates: { type: 'array', items: { type: 'object', properties: { field_name: { type: 'string' }, field_id: { type: 'string' }, value: {}, field_type: { type: 'string' } }, required: ['value'] } } }, required: ['field_updates'] }, description: 'Array of items with field updates for bulk operations' }, validate_before_update: { type: 'boolean', description: 'Validate field value before updating (default: false)' } }, required: ['value'] } }, { name: 'get_field_value', description: 'Get custom field values for GitHub Projects v2 items', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, item_id: { type: 'string', description: 'Project item ID' }, issue_number: { type: 'number', description: 'Issue number (alternative to item_id)' }, pr_number: { type: 'number', description: 'Pull request number (alternative to item_id)' }, field_name: { type: 'string', description: 'Specific field name to get' }, field_id: { type: 'string', description: 'Specific field ID to get (alternative to field_name)' }, all_fields: { type: 'boolean', description: 'Get all field values for the item (default: false)' }, bulk_items: { type: 'array', items: { type: 'object', properties: { item_id: { type: 'string' }, issue_number: { type: 'number' }, pr_number: { type: 'number' } } }, description: 'Array of items to get field values for in bulk' }, include_field_history: { type: 'boolean', description: 'Include field change history and audit trail (default: false)' }, format: { type: 'string', enum: ['detailed', 'simple', 'json'], description: 'Output format (default: detailed)' } }, required: [] } }, // PROJECT STRUCTURE & VIEWS MANAGEMENT (Epic #69) { name: 'create_project_field', description: 'Create custom fields for GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, name: { type: 'string', description: 'Field name' }, data_type: { type: 'string', enum: ['TEXT', 'NUMBER', 'DATE', 'SINGLE_SELECT', 'ITERATION'], description: 'Field data type' }, options: { type: 'array', items: { type: 'string' }, description: 'Options for single select fields' }, description: { type: 'string', description: 'Field description' } }, required: ['name', 'data_type'] } }, { name: 'list_project_fields', description: 'List all custom fields in a GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, include_system_fields: { type: 'boolean', description: 'Include system fields (default: false)' }, detailed_view: { type: 'boolean', description: 'Include detailed field information (default: true)' } }, required: [] } }, { name: 'update_project_field', description: 'Update custom fields in GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, field_id: { type: 'string', description: 'Field ID to update' }, field_name: { type: 'string', description: 'Field name to update (alternative to field_id)' }, name: { type: 'string', description: 'New field name' }, options: { type: 'array', items: { type: 'string' }, description: 'New options for single select fields' }, add_options: { type: 'array', items: { type: 'string' }, description: 'Options to add' }, remove_options: { type: 'array', items: { type: 'string' }, description: 'Options to remove' } }, required: [] } }, { name: 'create_project_view', description: 'Create custom views for GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, name: { type: 'string', description: 'View name' }, layout: { type: 'string', enum: ['BOARD_LAYOUT', 'TABLE_LAYOUT', 'ROADMAP_LAYOUT'], description: 'View layout type' }, description: { type: 'string', description: 'View description' }, filter: { type: 'string', description: 'Filter criteria for the view' }, sort_by: { type: 'string', description: 'Field to sort by' }, group_by: { type: 'string', description: 'Field to group by' } }, required: ['name', 'layout'] } }, { name: 'list_project_views', description: 'List all views in a GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, include_system_views: { type: 'boolean', description: 'Include system views (default: true)' }, detailed_view: { type: 'boolean', description: 'Include detailed view information (default: true)' } }, required: [] } }, { name: 'update_project_view', description: 'Update custom views in GitHub Projects v2', inputSchema: { type: 'object', properties: { project_id: { type: 'string', description: 'GitHub Project v2 ID' }, project_number: { type: 'number', description: 'Project number (alternative to project_id)' }, view_id: { type: 'string', description: 'View ID to update' }, view_name: { type: 'string', description: 'View name to update (alternative to view_id)' }, name: { type: 'string', description: 'New view name' }, description: { type: 'string', description: 'New view description' }, filter: { type: 'string', description: 'New filter criteria' }, sort_by: { type: 'string', description: 'New field to sort by' }, group_by: { type: 'string', description: 'New field to group by' } }, required: [] } }, // ADVANCED PROJECT PLANNING & PRD TOOLS { name: 'generate_prd', description: 'Generate comprehensive Product Requirements Documents with templates and best practices', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'PRD title' }, description: { type: 'string', description: 'Product overview and description' }, features: { type: 'array', items: { type: 'string' }, description: 'List of key features to include' }, target_audience: { type: 'array', items: { type: 'string' }, description: 'Target user personas (default: developers, end-users)' }, objectives: { type: 'array', items: { type: 'string' }, description: 'Business objectives and goals' }, complexity: { type: 'string', enum: ['low', 'medium', 'high'], description: 'Product complexity level (default: medium)' }, timeline: { type: 'string', description: 'Expected timeline (default: 3-6 months)' }, format: { type: 'string', enum: ['markdown', 'json'], description: 'Output format (default: markdown)' }, create_issue: { type: 'boolean', description: 'Create GitHub issue with PRD (default: false)' } }, required: ['title'] } }, { name: 'parse_prd', description: 'Parse existing PRD content and generate actionable development tasks and epics', inputSchema: { type: 'object', properties: { prd_content: { type: 'string', description: 'PRD content text to parse' }, issue_number: { type: 'number', description: 'GitHub issue number containing PRD (alternative to prd_content)' }, create_tasks: { type: 'boolean', description: 'Create GitHub issues for extracted tasks (default: true)' }, task_format: { type: 'string', enum: ['github_issues', 'markdown'], description: 'Output format for tasks (default: github_issues)' }, sprint_assignment: { type: 'boolean', description: 'Assign tasks to current sprint (default: false)' } }, required: [] } }, { name: 'enhance_prd', description: 'Enhance existing PRD with market analysis, technical recommendations, and risk assessment', inputSchema: { type: 'object', properties: { issue_number: { type: 'number', description: 'GitHub issue number containing PRD' }, prd_content: { type: 'string', description: 'PRD content text (alternative to issue_number)' }, enhancement_type: { type: 'string', enum: ['comprehensive', 'technical', 'business', 'market'], description: 'Type of enhancement (default: comprehensive)' }, include_market_analysis: { type: 'boolean', description: 'Include competitive and market analysis (default: true)' }, include_technical_analysis: { type: 'boolean', description: 'Include architecture and tech stack recommendations (default: true)' }, include_risk_analysis: { type: 'boolean', description: 'Include comprehensive risk assessment (default: true)' }, include_metrics: { type: 'boolean', description: 'Include detailed success metrics and KPIs (default: true)' }, update_issue: { type: 'boolean', description: 'Update the original GitHub issue with enhancements (default: false)' } }, required: [] } }, { name: 'add_feature', description: 'Add new feature to existing project with comprehensive impact analysis and implementation planning', inputSchema: { type: 'object', properties: { feature_name: { type: 'string', description: 'Name of the new feature' }, feature_description: { type: 'string', description: 'Detailed description of the feature' }, target_milestone: { type: 'number', description: 'Target milestone for the feature' }, impact_scope: { type: 'string', enum: ['minimal', 'moderate', 'full'], description: 'Scope of impact analysis (default: full)' }, create_issues: { type: 'boolean', description: 'Create GitHub issues for implementation tasks (default: true)' }, assign_team: { type: 'array', items: { type: 'string' }, description: 'Team members to assign to the feature' }, priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'], description: 'Feature priority level (default: medium)' }, estimate_effort: { type: 'boolean', description: 'Include effort estimation and timeline (default: true)' } }, required: ['feature_name'] } }, { name: 'create_roadmap', description: 'Create comprehensive project roadmaps with timeline visualization and milestone mapping', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Roadmap title' }, time_horizon: { type: 'string', enum: ['monthly', 'quarterly', 'yearly'], description: 'Timeline granularity (default: quarterly)' }, include_completed: { type: 'boolean', description: 'Include completed milestones and issues (default: false)' }, include_dependencies: { type: 'boolean', description: 'Show issue dependencies and critical path (default: true)' }, focus_areas: { type: 'array', items: { type: 'string' }, description: 'Specific areas to focus on in roadmap' }, format: { type: 'string', enum: ['markdown', 'json'], description: 'Output format (default: markdown)' } }, required: ['title'] } }, { name: 'create_traceability_matrix', description: 'Create comprehensive requirements traceability matrices linking requirements to features to implementation tasks', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Traceability matrix title' }, source_types: { type: 'array', items: { type: 'string', enum: ['issues', 'prd', 'milestones', 'pull_requests', 'labels'] }, description: 'Sources to analyze for requirements (default: all)' }, traceability_direction: { type: 'string', enum: ['forward', 'backward', 'bidirectional'], description: 'Traceability direction (default: bidirectional)' }, include_coverage_analysis: { type: 'boolean', description: 'Include gap and coverage analysis (default: true)' }, include_impact_analysis: { type: 'boolean', description: 'Include change impact analysis (default: true)' }, include_dependency_graph: { type: 'boolean', description: 'Include visual dependency mapping (default: true)' }, filter_labels: { type: 'array', items: { type: 'string' }, description: 'Filter by specific labels' }, filter_milestones: { type: 'array', items: { type: 'string' }, description: 'Filter by specific milestones' }, filter_status: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Filter by issue status (default: all)' }, output_format: { type: 'string', enum: ['markdown', 'json', 'html', 'csv'], description: 'Output format (default: markdown)' }, export_path: { type: 'string', description: 'Path to export the matrix (optional)' }, create_issue: { type: 'boolean', description: 'Create GitHub issue with traceability matrix (default: false)' }, compliance_level: { type: 'string', enum: ['basic', 'standard', 'enterprise'], description: 'Compliance reporting level (default: standard)' } }, required: ['title'] } }, // ISSUE MANAGEMENT { name: 'create_issue', description: 'Create a new GitHub issue', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Issue title' }, body: { type: 'string', description: 'Issue description' }, labels: { type: 'array', items: { type: 'string' }, description: 'Issue labels' }, assignees: { type: 'array', items: { type: 'string' }, description: 'Issue assignees' }, milestone: { type: 'number', description: 'Milestone number' } }, required: ['title'] } }, { name: 'list_issues', description: 'List issues with filtering and sorting', inputSchema: { type: 'object', properties: { state: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Issue state' }, labels: { type: 'string', description: 'Comma-separated list of labels' }, assignee: { type: 'string', description: 'Filter by assignee' }, milestone: { type: 'string', description: 'Filter by milestone' } }, required: [] } }, { name: 'get_issue', description: 'Get detailed issue information', inputSchema: { type: 'object', properties: { issue_number: { type: 'number', description: 'Issue number' } }, required: ['issue_number'] } }, { name: 'update_issue', description: 'Update existing issues', inputSchema: { type: 'object', properties: { issue_number: { type: 'number', description: 'Issue number' }, title: { type: 'string', description: 'Issue title' }, body: { type: 'string', description: 'Issue description' }, state: { type: 'string', enum: ['open', 'closed'], description: 'Issue state' }, labels: { type: 'array', items: { type: 'string' }, description: 'Issue labels' }, assignees: { type: 'array', items: { type: 'string' }, description: 'Issue assignees' }, milestone: { type: 'number', description: 'Milestone number' } }, required: ['issue_number'] } }, // MILESTONE MANAGEMENT { name: 'create_milestone', description: 'Create a project milestone', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Milestone title' }, description: { type: 'string', description: 'Milestone description' }, due_on: { type: 'string', description: 'Due date (YYYY-MM-DD)' }, state: { type: 'string', enum: ['open', 'closed'], description: 'Milestone state' } }, required: ['title'] } }, { name: 'list_milestones', description: 'List milestones with filtering options', inputSchema: { type: 'object', properties: { state: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Milestone state filter' } }, required: [] } }, { name: 'update_milestone', description: 'Update existing milestone details and properties', inputSchema: { type: 'object', properties: { milestone_number: { type: 'number', description: 'Milestone number to update' }, title: { type: 'string', description: 'New milestone title' }, description: { type: 'string', description: 'New milestone description (set to empty string to clear)' }, due_on: { type: 'string', description: 'New due date (YYYY-MM-DD) or null to clear' }, state: { type: 'string', enum: ['open', 'closed'], description: 'Milestone state (open=active, closed=completed)' } }, required: ['milestone_number'] } }, { name: 'delete_milestone', description: 'Delete milestone safely with confirmation and impact analysis', inputSchema: { type: 'object', properties: { milestone_number: { type: 'number', description: 'Milestone number to delete' }, confirm: { type: 'boolean', description: 'Confirmation required for deletion (must be true)' }, force: { type: 'boolean', description: 'Force deletion even if milestone has assigned issues (default: false)' } }, required: ['milestone_number', 'confirm'] } }, { name: 'get_milestone_metrics', description: 'Get progress metrics for milestones', inputSchema: { type: 'object', properties: { milestone_number: { type: 'number', description: 'Milestone number' } }, required: ['milestone_number'] } }, { name: 'get_overdue_milestones', description: 'Find overdue milestones', inputSchema: { type: 'object', properties: {}, required: [] } }, { name: 'get_upcoming_milestones', description: 'Get upcoming milestones within timeframes', inputSchema: { type: 'object', properties: { days: { type: 'number', description: 'Number of days to look ahead' } }, required: ['days'] } }, // LABEL MANAGEMENT { name: 'create_label', description: 'Create a new GitHub label', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Label name' }, color: { type: 'string', description: 'Label color (hex without #)' }, description: { type: 'string', description: 'Label description' } }, required: ['name', 'color'] } }, { name: 'list_labels', description: 'List all available labels', inputSchema: { type: 'object', properties: {}, required: [] } }, // ANALYTICS { name: 'analyze_task_complexity', description: 'Perform detailed task complexity analysis', inputSchema: { type: 'object', properties: { issue_number: { type: 'number', description: 'Issue number to analyze' } }, required: ['issue_number'] } }, { name: 'get_repository_summary', description: 'Get comprehensive repository summary with metrics', inputSchema: { type: 'object', properties: { include_trends: { type: 'boolean', description: 'Include trend analysis (default: true)' } }, required: [] } }, // TASK MANAGEMENT (AI-Powered) { name: 'get_next_task', description: 'AI-powered recommendations for next tasks to work on based on priority, urgency, team availability, and skill matching', inputSchema: { type: 'object', properties: { assignee: { type: 'string', description: 'Filter recommendations for specific assignee' }, priority_filter: { type: 'string', enum: ['high', 'medium', 'low', 'all'], description: 'Minimum priority level (default: all)' }, max_recommendations: { type: 'number', description: 'Maximum number of task recommendations (default: 5)' }, include_blocked: { type: 'boolean', description: 'Include blocked or waiting tasks (default: false)' }, team_members: { type: 'array', items: { type: 'string' }, description: 'List of team member GitHub usernames for workload analysis' }, context_switch_penalty: { type: 'number', description: 'Penalty factor for context switching (0.0-1.0, default: 0.1)' } }, required: [] } }, { name: 'expand_task', description: 'Break down complex tasks into manageable subtasks using AI-powered intelligent decomposition and template-based patterns', inputSchema: { type: 'object', properties: { issue_number: { type: 'number', description: 'Issue number to expand into subtasks' }, create_sub_issues: { type: 'boolean', description: 'Create GitHub issues for each subtask (default: true)' }, assign_to_sprint: { type: 'boolean', description: 'Assign subtasks to current sprint (default: false)' }, target_milestone: { type: 'number', description: 'Target milestone for subtasks' }, max_subtasks: { type: 'number', description: 'Maximum number of subtasks to create (default: 8)' }, min_complexity: { type: 'number', description: 'Minimum complexity for subtasks in story points (default: 1)' }, template_type: { type: 'string', enum: ['auto', 'feature', 'bug', 'refactor'], description: 'Decomposition template to use (default: auto)' }, include_checklist: { type: 'boolean', description: 'Include task breakdown checklist in parent issue (default: true)' }, force: { type: 'boolean', description: 'Force expansion even for low complexity tasks (default: false)' } }, required: ['issue_number'] } }, // WEBHOOK MANAGEMENT (Phase 3.1) { name: 'setup_webhooks', description: 'Setup GitHub webhooks for real-time updates', inputSchema: { type: 'object', properties: { webhook_url: { type: 'string', description: 'Webhook endpoint URL (e.g., https://your-server.com/github-webhook)' }, events: { type: 'array', items: { type: 'string', enum: ['issues', 'milestone', 'projects_v2', 'pull_request', 'push', 'release', 'repository', 'star', 'watch'] }, description: 'GitHub events to subscribe to (default: issues, milestone, projects_v2, pull_request, push)' }, secret: { type: 'string', description: 'Webhook secret for signature validation (optional)' }, active: { type: 'boolean', description: 'Whether webhook should be active (default: true)' } }, required: ['webhook_url'] } }, { name: 'list_webhooks', description: 'List all configured webhooks for the repository', inputSchema: { type: 'object', properties: {}, required: [] } }, { name: 'test_webhook', description: 'Test webhook connectivity and functionality', inputSchema: { type: 'object', properties: { webhook_id: { type: 'number', description: 'Specific webhook ID to test (optional, tests first webhook if not provided)' } }, required: [] } }, { name: 'remove_webhooks', description: 'Remove webhook(s) from repository', inputSchema: { type: 'object', properties: { webhook_id: { type: 'number', description: 'Specific webhook ID to remove (optional, removes all if not provided)' }, confirm: { type: 'boolean', description: 'Confirmation required for deletion (must be true)' } }, required: ['confirm'] } }, { name: 'get_webhook_deliveries', description: 'Get webhook delivery history and status', inputSchema: { type: 'object', properties: { webhook_id: { type: 'number', description: 'Webhook ID to get deliveries for' }, per_page: { type: 'number', description: 'Number of deliveries to fetch (max 100, default 30)' } }, required: ['webhook_id'] } }, { name: 'get_webhook_status', description: 'Get webhook configuration and health status', inputSchema: { type: 'object', properties: { webhook_id: { type: 'number', description: 'Specific webhook ID to check (optional, checks all if not provided)' } }, required: [] } }, // LIVE UPDATES (Phase 3.1) { name: 'get_live_project_status', description: 'Get real-time project status (never cached, always fresh data)', inputSchema: { type: 'object', properties: { include_activity: { type: 'boolean', description: 'Include recent activity in response (default: true)' }, activity_timeframe: { type: 'string', enum: ['1h', '6h', '24h', '7d'], description: 'Timeframe for recent activity (default: 24h)' } }, required: [] } }, { name: 'get_live_sprint_metrics', description: 'Get live sprint metrics and progress with real-time data', inputSchema: { type: 'object', properties: { sprint_number: { type: 'number', description: 'Specific sprint number to analyze' }, milestone_number: { type: 'number', description: 'Milestone number representing the sprint (alternative to sprint_number)' }, include_burndown: { type: 'boolean', description: 'Include burndown chart data (default: true)' }, include_velocity: { type: 'boolean', description: 'Include velocity and throughput metrics (default: true)' }, include_team_metrics: { type: 'boolean', description: 'Include team performance metrics (default: true)' } }, required: [] } }, { name: 'subscribe_to_updates', description: 'Subscribe to real-time updates for specific events', inputSchema: { type: 'object', properties: { subscription_id: { type: 'string', description: 'Unique subscription identifier' }, events: { type: 'array', items: { type: 'string' }, description: 'Event types to subscribe to (e.g., issue_opened, milestone_created)' }, callback: { type: 'string', description: 'Callback URL or identifier (optional)' } }, required: ['subscription_id', 'events'] } }, { name: 'get_recent_activity', description: 'Get recent activity feed with filtering options', inputSchema: { type: 'object', properties: { timeframe: { type: 'string', enum: ['1h', '6h', '24h', '7d', '30d'], description: 'Activity timeframe (default: 24h)' }, event_types: { type: 'array', items: { type: 'string' }, description: 'Filter by event types' }, actors: { type: 'array', items: { type: 'string' }, description: 'Filter by specific users' }, include_pull_requests: { type: 'boolean', description: 'Include pull request activities (default: true)' }, include_issues: { type: 'boolean', description: 'Include issue activities (default: true)' }, include_milestones: { type: 'boolean', description: 'Include milestone activities (default: true)' }, include_projects: { type: 'boolean', description: 'Include project activities (default: true)' }, limit: { type: 'number', description: 'Maximum number of activities to return (max 100, default 50)' } }, required: [] } }, { name: 'get_live_repository_health', description: 'Get comprehensive live repository health metrics and indicators', inputSchema: { type: 'object', properties: {}, required: [] } } ];

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

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