Skip to main content
Glama
kunwarVivek

mcp-github-project-manager

list_milestones

Retrieve and filter milestones from GitHub projects to track progress and manage project timelines effectively.

Instructions

List milestones

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYes
sortNo
directionNo

Implementation Reference

  • Top-level MCP tool handler that dispatches 'list_milestones' calls to ProjectManagementService.listMilestones with parsed arguments.
    case "list_milestones":
      return await this.service.listMilestones(args.status, args.sort, args.direction);
  • Core handler function in ProjectManagementService that fetches all milestones from repository, applies status filter, sorts by specified criteria (due_date, title, created_at), and returns the list.
    async listMilestones(
      status: string = 'open',
      sort: string = 'created_at',
      direction: string = 'asc'
    ): Promise<Milestone[]> {
      try {
        // Get all milestones
        const milestones = await this.milestoneRepo.findAll();
    
        // Filter by status if needed
        let filteredMilestones = milestones;
        if (status !== 'all') {
          const resourceStatus = status === 'open' ? ResourceStatus.ACTIVE : ResourceStatus.CLOSED;
          filteredMilestones = milestones.filter(milestone => milestone.status === resourceStatus);
        }
    
        // Sort the milestones
        filteredMilestones.sort((a, b) => {
          let valueA, valueB;
    
          switch(sort) {
            case 'due_date':
              valueA = a.dueDate || '';
              valueB = b.dueDate || '';
              break;
            case 'title':
              valueA = a.title;
              valueB = b.title;
              break;
            case 'created_at':
            default:
              valueA = a.createdAt;
              valueB = b.createdAt;
          }
    
          const comparison = valueA.localeCompare(valueB);
          return direction === 'asc' ? comparison : -comparison;
        });
    
        return filteredMilestones;
      } catch (error) {
        throw this.mapErrorToMCPError(error);
      }
    }
  • GitHub repository helper that executes GraphQL query to list all milestones and maps GitHub response to domain Milestone objects.
    async findAll(): Promise<Milestone[]> {
      const query = `
        query($owner: String!, $repo: String!) {
          repository(owner: $owner, name: $repo) {
            milestones(first: 100) {
              nodes {
                id
                number
                title
                description
                dueOn
                state
                createdAt
                updatedAt
              }
            }
          }
        }
      `;
    
      const response = await this.graphql<ListMilestonesResponse>(query, {
        owner: this.owner,
        repo: this.repo,
      });
    
      return response.repository.milestones.nodes.map(milestone => 
        this.mapGitHubMilestoneToMilestone(milestone)
      );
    }
  • ToolDefinition for list_milestones including Zod input schema (status, sort, direction), description, and usage examples.
    export const listMilestonesTool: ToolDefinition<ListMilestonesArgs> = {
      name: "list_milestones",
      description: "List milestones",
      schema: listMilestonesSchema as unknown as ToolSchema<ListMilestonesArgs>,
      examples: [
        {
          name: "List open milestones",
          description: "List all open milestones sorted by due date",
          args: {
            status: "open",
            sort: "due_date",
            direction: "asc"
          }
        }
      ]
    };
  • Registers listMilestonesTool (imported from ToolSchemas) in the central ToolRegistry singleton used by MCP server.
    this.registerTool(createMilestoneTool);
    this.registerTool(listMilestonesTool);
    this.registerTool(updateMilestoneTool);
    this.registerTool(deleteMilestoneTool);

Tool Definition Quality

Score is being calculated. Check back soon.

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