boards

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: 10 Imported by: 0

Documentation

Overview

Package boards implements MCP tools for GitLab project issue boards and board lists.

It wraps the IssueBoardsService from the GitLab client-go library, exposing 10 operations: 5 for board CRUD and 5 for board list CRUD.

markdown.go provides Markdown formatting functions for issue board MCP tool output.

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteBoard

func DeleteBoard(ctx context.Context, client *gitlabclient.Client, input DeleteBoardInput) error

DeleteBoard deletes an issue board.

func DeleteBoardList

func DeleteBoardList(ctx context.Context, client *gitlabclient.Client, input DeleteBoardListInput) error

DeleteBoardList deletes a board list.

func FormatBoardListMarkdown

func FormatBoardListMarkdown(out BoardListOutput) string

FormatBoardListMarkdown formats a single board list as markdown.

func FormatBoardMarkdown

func FormatBoardMarkdown(out BoardOutput) string

FormatBoardMarkdown formats a single board as markdown.

func FormatListBoardListsMarkdown

func FormatListBoardListsMarkdown(out ListBoardListsOutput) string

FormatListBoardListsMarkdown formats a paginated list of board lists.

func FormatListBoardsMarkdown

func FormatListBoardsMarkdown(out ListBoardsOutput) string

FormatListBoardsMarkdown formats a paginated list of boards.

func RegisterMeta

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

RegisterMeta registers the gitlab_board meta-tool.

func RegisterTools

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

RegisterTools registers all project issue board individual tools.

Types

type BoardListOutput

type BoardListOutput struct {
	toolutil.HintableOutput
	ID             int64  `json:"id"`
	LabelID        int64  `json:"label_id,omitempty"`
	LabelName      string `json:"label_name,omitempty"`
	Position       int64  `json:"position"`
	MaxIssueCount  int64  `json:"max_issue_count,omitempty"`
	MaxIssueWeight int64  `json:"max_issue_weight,omitempty"`
	AssigneeID     int64  `json:"assignee_id,omitempty"`
	AssigneeUser   string `json:"assignee_username,omitempty"`
	MilestoneID    int64  `json:"milestone_id,omitempty"`
	MilestoneTitle string `json:"milestone_title,omitempty"`
}

BoardListOutput represents a single list within a board.

func CreateBoardList

func CreateBoardList(ctx context.Context, client *gitlabclient.Client, input CreateBoardListInput) (BoardListOutput, error)

CreateBoardList creates a new board list.

func GetBoardList

func GetBoardList(ctx context.Context, client *gitlabclient.Client, input GetBoardListInput) (BoardListOutput, error)

GetBoardList retrieves a single board list.

func UpdateBoardList

func UpdateBoardList(ctx context.Context, client *gitlabclient.Client, input UpdateBoardListInput) (BoardListOutput, error)

UpdateBoardList reorders a board list.

type BoardOutput

type BoardOutput struct {
	toolutil.HintableOutput
	ID              int64             `json:"id"`
	Name            string            `json:"name"`
	ProjectID       int64             `json:"project_id,omitempty"`
	ProjectName     string            `json:"project_name,omitempty"`
	ProjectPath     string            `json:"project_path,omitempty"`
	MilestoneID     int64             `json:"milestone_id,omitempty"`
	MilestoneTitle  string            `json:"milestone_title,omitempty"`
	AssigneeID      int64             `json:"assignee_id,omitempty"`
	AssigneeUser    string            `json:"assignee_username,omitempty"`
	Weight          int64             `json:"weight,omitempty"`
	Labels          []string          `json:"labels,omitempty"`
	HideBacklogList bool              `json:"hide_backlog_list"`
	HideClosedList  bool              `json:"hide_closed_list"`
	Lists           []BoardListOutput `json:"lists,omitempty"`
}

BoardOutput represents a GitLab issue board.

func CreateBoard

func CreateBoard(ctx context.Context, client *gitlabclient.Client, input CreateBoardInput) (BoardOutput, error)

CreateBoard creates a new issue board.

func GetBoard

func GetBoard(ctx context.Context, client *gitlabclient.Client, input GetBoardInput) (BoardOutput, error)

GetBoard retrieves a single issue board.

func UpdateBoard

func UpdateBoard(ctx context.Context, client *gitlabclient.Client, input UpdateBoardInput) (BoardOutput, error)

UpdateBoard updates an existing issue board.

type CreateBoardInput

type CreateBoardInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	Name      string               `json:"name" jsonschema:"Board name,required"`
}

CreateBoardInput represents input for creating a board.

type CreateBoardListInput

type CreateBoardListInput struct {
	ProjectID   toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID     int64                `json:"board_id" jsonschema:"Board ID,required"`
	LabelID     int64                `json:"label_id,omitempty" jsonschema:"Label ID to create a label list"`
	AssigneeID  int64                `json:"assignee_id,omitempty" jsonschema:"Assignee ID to create an assignee list"`
	MilestoneID int64                `json:"milestone_id,omitempty" jsonschema:"Milestone ID to create a milestone list"`
	IterationID int64                `json:"iteration_id,omitempty" jsonschema:"Iteration ID to create an iteration list"`
}

CreateBoardListInput represents input for creating a board list.

type DeleteBoardInput

type DeleteBoardInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
}

DeleteBoardInput represents input for deleting a board.

type DeleteBoardListInput

type DeleteBoardListInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
	ListID    int64                `json:"list_id" jsonschema:"Board list ID,required"`
}

DeleteBoardListInput represents input for deleting a board list.

type GetBoardInput

type GetBoardInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
}

GetBoardInput represents input for getting a single board.

type GetBoardListInput

type GetBoardListInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
	ListID    int64                `json:"list_id" jsonschema:"Board list ID,required"`
}

GetBoardListInput represents input for getting a single board list.

type ListBoardListsInput

type ListBoardListsInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
	toolutil.PaginationInput
}

ListBoardListsInput represents input for listing board lists.

type ListBoardListsOutput

type ListBoardListsOutput struct {
	toolutil.HintableOutput
	Lists      []BoardListOutput         `json:"lists"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ListBoardListsOutput represents a paginated list of board lists.

func ListBoardLists

func ListBoardLists(ctx context.Context, client *gitlabclient.Client, input ListBoardListsInput) (ListBoardListsOutput, error)

ListBoardLists lists all lists in a board.

type ListBoardsInput

type ListBoardsInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	toolutil.PaginationInput
}

ListBoardsInput represents input for listing project issue boards.

type ListBoardsOutput

type ListBoardsOutput struct {
	toolutil.HintableOutput
	Boards     []BoardOutput             `json:"boards"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ListBoardsOutput represents a paginated list of boards.

func ListBoards

func ListBoards(ctx context.Context, client *gitlabclient.Client, input ListBoardsInput) (ListBoardsOutput, error)

ListBoards lists all issue boards for a project.

type UpdateBoardInput

type UpdateBoardInput struct {
	ProjectID       toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID         int64                `json:"board_id" jsonschema:"Board ID,required"`
	Name            string               `json:"name,omitempty" jsonschema:"Board name"`
	AssigneeID      int64                `json:"assignee_id,omitempty" jsonschema:"Assignee user ID"`
	MilestoneID     int64                `json:"milestone_id,omitempty" jsonschema:"Milestone ID"`
	Labels          string               `json:"labels,omitempty" jsonschema:"Comma-separated board scope labels"`
	Weight          int64                `json:"weight,omitempty" jsonschema:"Board scope weight"`
	HideBacklogList *bool                `json:"hide_backlog_list,omitempty" jsonschema:"Hide the Open list"`
	HideClosedList  *bool                `json:"hide_closed_list,omitempty" jsonschema:"Hide the Closed list"`
}

UpdateBoardInput represents input for updating a board.

type UpdateBoardListInput

type UpdateBoardListInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or path,required"`
	BoardID   int64                `json:"board_id" jsonschema:"Board ID,required"`
	ListID    int64                `json:"list_id" jsonschema:"Board list ID,required"`
	Position  int64                `json:"position" jsonschema:"New position of the list,required"`
}

UpdateBoardListInput represents input for updating (reordering) a board list.

Jump to

Keyboard shortcuts

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