milestones

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

markdown.go provides Markdown formatting functions for project milestone MCP tool output.

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.

register.go wires milestones MCP tools to the MCP server.

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