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);
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