milestones

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package milestones implements MCP tool handlers for GitLab milestone operations including list, get, create, update, and delete. It wraps the Milestones service from client-go v2.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Delete

func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error

Delete removes a milestone from a project (resolved by IID).

func FormatIssuesMarkdown

func FormatIssuesMarkdown(v MilestoneIssuesOutput) *mcp.CallToolResult

FormatIssuesMarkdown returns a Markdown MCP tool result for milestone issues.

func FormatIssuesMarkdownString

func FormatIssuesMarkdownString(v MilestoneIssuesOutput) string

FormatIssuesMarkdownString renders milestone issues as a Markdown table string.

func FormatListMarkdown

func FormatListMarkdown(v ListOutput) *mcp.CallToolResult

FormatListMarkdown returns a Markdown MCP tool result for a ListOutput.

func FormatListMarkdownString

func FormatListMarkdownString(v ListOutput) string

FormatListMarkdownString renders a ListOutput as a Markdown table string.

func FormatMarkdown

func FormatMarkdown(v Output) string

FormatMarkdown renders a single milestone as a Markdown string.

func FormatMergeRequestsMarkdown

func FormatMergeRequestsMarkdown(v MilestoneMergeRequestsOutput) *mcp.CallToolResult

FormatMergeRequestsMarkdown returns a Markdown MCP tool result for milestone merge requests.

func FormatMergeRequestsMarkdownString

func FormatMergeRequestsMarkdownString(v MilestoneMergeRequestsOutput) string

FormatMergeRequestsMarkdownString renders milestone merge requests as a Markdown table string.

func RegisterTools

func RegisterTools(server *mcp.Server, client *gitlabclient.Client)

RegisterTools registers milestone-related tools on the MCP server.

Types

type CreateInput

type CreateInput struct {
	ProjectID   toolutil.StringOrInt `json:"project_id"              jsonschema:"Project ID or URL-encoded path,required"`
	Title       string               `json:"title"                   jsonschema:"Milestone title,required"`
	Description string               `json:"description,omitempty"   jsonschema:"Milestone description"`
	StartDate   string               `json:"start_date,omitempty"    jsonschema:"Start date (YYYY-MM-DD)"`
	DueDate     string               `json:"due_date,omitempty"      jsonschema:"Due date (YYYY-MM-DD)"`
}

CreateInput defines parameters for creating a milestone.

type DeleteInput

type DeleteInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id"     jsonschema:"Project ID or URL-encoded path,required"`
	MilestoneIID int64                `json:"milestone_iid"  jsonschema:"Milestone IID (project-scoped). Use gitlab_milestone_list to find IIDs,required"`
}

DeleteInput defines parameters for deleting a milestone.

type GetInput

type GetInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id"     jsonschema:"Project ID or URL-encoded path,required"`
	MilestoneIID int64                `json:"milestone_iid"  jsonschema:"Milestone IID (project-scoped). Use gitlab_milestone_list to find IIDs,required"`
}

GetInput defines parameters for getting a single milestone.

type GetIssuesInput

type GetIssuesInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id"     jsonschema:"Project ID or URL-encoded path,required"`
	MilestoneIID int64                `json:"milestone_iid"  jsonschema:"Milestone IID (project-scoped). Use gitlab_milestone_list to find IIDs,required"`
	toolutil.PaginationInput
}

GetIssuesInput defines parameters for listing issues assigned to a milestone.

type GetMergeRequestsInput

type GetMergeRequestsInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id"     jsonschema:"Project ID or URL-encoded path,required"`
	MilestoneIID int64                `json:"milestone_iid"  jsonschema:"Milestone IID (project-scoped). Use gitlab_milestone_list to find IIDs,required"`
	toolutil.PaginationInput
}

GetMergeRequestsInput defines parameters for listing merge requests assigned to a milestone.

type IssueItem

type IssueItem struct {
	ID        int64  `json:"id"`
	IID       int64  `json:"iid"`
	Title     string `json:"title"`
	State     string `json:"state"`
	WebURL    string `json:"web_url"`
	CreatedAt string `json:"created_at"`
}

IssueItem is a simplified issue representation for milestone context.

type ListInput

type ListInput struct {
	ProjectID        toolutil.StringOrInt `json:"project_id"                  jsonschema:"Project ID or URL-encoded path,required"`
	State            string               `json:"state,omitempty"             jsonschema:"Filter by state (active, closed)"`
	Title            string               `json:"title,omitempty"             jsonschema:"Filter by exact milestone title"`
	Search           string               `json:"search,omitempty"            jsonschema:"Search milestones by title or description"`
	IncludeAncestors bool                 `json:"include_ancestors,omitempty" jsonschema:"Include milestones from parent groups"`
	IIDs             []int64              `json:"iids,omitempty"              jsonschema:"Filter by milestone IIDs"`
	toolutil.PaginationInput
}

ListInput defines parameters for listing milestones in a GitLab project.

type ListOutput

type ListOutput struct {
	toolutil.HintableOutput
	Milestones []Output                  `json:"milestones"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ListOutput holds a paginated list of milestones.

func List

func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)

List retrieves a paginated list of milestones for a GitLab project. Supports filtering by state, title, search keyword, and ancestor inclusion.

type MergeRequestItem

type MergeRequestItem struct {
	ID           int64  `json:"id"`
	IID          int64  `json:"iid"`
	Title        string `json:"title"`
	State        string `json:"state"`
	SourceBranch string `json:"source_branch"`
	TargetBranch string `json:"target_branch"`
	WebURL       string `json:"web_url"`
	CreatedAt    string `json:"created_at"`
}

MergeRequestItem is a simplified merge request representation for milestone context.

type MilestoneIssuesOutput

type MilestoneIssuesOutput struct {
	toolutil.HintableOutput
	Issues     []IssueItem               `json:"issues"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

MilestoneIssuesOutput holds a paginated list of issues for a milestone.

func GetIssues

GetIssues retrieves issues assigned to a milestone (resolved by IID).

type MilestoneMergeRequestsOutput

type MilestoneMergeRequestsOutput struct {
	toolutil.HintableOutput
	MergeRequests []MergeRequestItem        `json:"merge_requests"`
	Pagination    toolutil.PaginationOutput `json:"pagination"`
}

MilestoneMergeRequestsOutput holds a paginated list of merge requests for a milestone.

func GetMergeRequests

GetMergeRequests retrieves merge requests assigned to a milestone (resolved by IID).

type Output

type Output struct {
	toolutil.HintableOutput
	ID          int64  `json:"id"`
	IID         int64  `json:"iid"`
	ProjectID   int64  `json:"project_id"`
	Title       string `json:"title"`
	Description string `json:"description"`
	State       string `json:"state"`
	StartDate   string `json:"start_date"`
	DueDate     string `json:"due_date"`
	WebURL      string `json:"web_url"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
	Expired     bool   `json:"expired"`
	GroupID     int64  `json:"group_id,omitempty"`
}

Output represents a single project milestone.

func Create

func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)

Create creates a new milestone in a GitLab project.

func Get

func Get(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)

Get retrieves a single milestone by IID (resolves to global ID internally).

func ToOutput

func ToOutput(m *gl.Milestone) Output

ToOutput converts a GitLab API gl.Milestone to MCP output format.

func Update

func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)

Update modifies an existing milestone (resolved by IID).

type UpdateInput

type UpdateInput struct {
	ProjectID    toolutil.StringOrInt `json:"project_id"              jsonschema:"Project ID or URL-encoded path,required"`
	MilestoneIID int64                `json:"milestone_iid"           jsonschema:"Milestone IID (project-scoped). Use gitlab_milestone_list to find IIDs,required"`
	Title        string               `json:"title,omitempty"         jsonschema:"Milestone title"`
	Description  string               `json:"description,omitempty"   jsonschema:"Milestone description"`
	StartDate    string               `json:"start_date,omitempty"    jsonschema:"Start date (YYYY-MM-DD)"`
	DueDate      string               `json:"due_date,omitempty"      jsonschema:"Due date (YYYY-MM-DD)"`
	StateEvent   string               `json:"state_event,omitempty"   jsonschema:"State transition: activate or close"`
}

UpdateInput defines parameters for updating a milestone.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL