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 ¶
- func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
- func FormatIssuesMarkdown(v MilestoneIssuesOutput) *mcp.CallToolResult
- func FormatIssuesMarkdownString(v MilestoneIssuesOutput) string
- func FormatListMarkdown(v ListOutput) *mcp.CallToolResult
- func FormatListMarkdownString(v ListOutput) string
- func FormatMarkdown(v Output) string
- func FormatMergeRequestsMarkdown(v MilestoneMergeRequestsOutput) *mcp.CallToolResult
- func FormatMergeRequestsMarkdownString(v MilestoneMergeRequestsOutput) string
- func RegisterTools(server *mcp.Server, client *gitlabclient.Client)
- type CreateInput
- type DeleteInput
- type GetInput
- type GetIssuesInput
- type GetMergeRequestsInput
- type IssueItem
- type ListInput
- type ListOutput
- type MergeRequestItem
- type MilestoneIssuesOutput
- type MilestoneMergeRequestsOutput
- type Output
- func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
- func Get(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)
- func ToOutput(m *gl.Milestone) Output
- func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
- type UpdateInput
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 ¶
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 ¶
func GetIssues(ctx context.Context, client *gitlabclient.Client, input GetIssuesInput) (MilestoneIssuesOutput, error)
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 ¶
func GetMergeRequests(ctx context.Context, client *gitlabclient.Client, input GetMergeRequestsInput) (MilestoneMergeRequestsOutput, error)
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 ToOutput ¶
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.