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 ¶
- 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.