tools

package
v0.0.0-...-013f07f Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package tools registers GitLab-backed MCP tool handlers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddTool

func AddTool[In, Out any](s *mcp.Server, d Deps, mutating bool, feature string, tool *mcp.Tool, h func(context.Context, *mcp.CallToolRequest, In, Deps) (*mcp.CallToolResult, Out, error))

AddTool registers a tool if read-only and feature gates pass.

func IntFromAny

func IntFromAny(v any) (int, error)

IntFromAny coerces json number / string to int (for IIDs).

func Out

func Out(v any) any

Out converts v to a JSON tree for tool results. Panics only on marshal bugs (should not happen for API types).

func ParseID

func ParseID(s string) string

ParseID parses string or number project / entity ids for logging.

func ProjectGID

func ProjectGID(numericID int64) string

ProjectGID builds a GitLab GraphQL global id for a project numeric id.

func RegisterAll

func RegisterAll(s *mcp.Server, d Deps)

RegisterAll wires every tool group onto the MCP server.

func RegisterArtifacts

func RegisterArtifacts(s *mcp.Server, d Deps)

RegisterArtifacts registers job artifact tools.

func RegisterDeployments

func RegisterDeployments(s *mcp.Server, d Deps)

RegisterDeployments registers deployment and environment tools.

func RegisterDraftNotes

func RegisterDraftNotes(s *mcp.Server, d Deps)

RegisterDraftNotes registers MR draft note tools.

func RegisterGraphQLTools

func RegisterGraphQLTools(s *mcp.Server, d Deps)

RegisterGraphQLTools registers GraphQL-based work item and utility tools.

func RegisterIssueNotes

func RegisterIssueNotes(s *mcp.Server, d Deps)

RegisterIssueNotes registers issue discussion / note tools.

func RegisterIssues

func RegisterIssues(s *mcp.Server, d Deps)

RegisterIssues registers issue and issue-link tools.

func RegisterIterationsEvents

func RegisterIterationsEvents(s *mcp.Server, d Deps)

RegisterIterationsEvents registers group iterations and event feeds.

func RegisterLabels

func RegisterLabels(s *mcp.Server, d Deps)

RegisterLabels registers project label tools.

func RegisterMRNotes

func RegisterMRNotes(s *mcp.Server, d Deps)

RegisterMRNotes registers MR/issue note and discussion tools.

func RegisterMarkdown

func RegisterMarkdown(s *mcp.Server, d Deps)

RegisterMarkdown registers markdown render and upload helpers.

func RegisterMergeRequests

func RegisterMergeRequests(s *mcp.Server, d Deps)

RegisterMergeRequests registers merge request tools.

func RegisterMilestones

func RegisterMilestones(s *mcp.Server, d Deps)

RegisterMilestones registers milestone tools (gated by USE_MILESTONE).

func RegisterPipelines

func RegisterPipelines(s *mcp.Server, d Deps)

RegisterPipelines registers CI pipeline and job tools (gated by USE_PIPELINE).

func RegisterProjects

func RegisterProjects(s *mcp.Server, d Deps)

RegisterProjects registers project/namespace/user tools.

func RegisterReleases

func RegisterReleases(s *mcp.Server, d Deps)

RegisterReleases registers release tools.

func RegisterRepository

func RegisterRepository(s *mcp.Server, d Deps)

RegisterRepository registers repository / file / branch / commit tools.

func RegisterSearch

func RegisterSearch(s *mcp.Server, d Deps)

RegisterSearch registers code search tools (requires GitLab code search).

func RegisterWebhooks

func RegisterWebhooks(s *mcp.Server, d Deps)

RegisterWebhooks registers webhook listing tools.

func RegisterWiki

func RegisterWiki(s *mcp.Server, d Deps)

RegisterWiki registers project and group wiki tools.

func ResolveProjectID

func ResolveProjectID(explicit string, defaultPID string) (string, error)

ResolveProjectID returns explicit project or default from config.

func ToJSONTree

func ToJSONTree(v any) (any, error)

ToJSONTree converts v to a JSON-serializable tree (maps/slices) for MCP structured output.

func TruncateLines

func TruncateLines(s string, maxLines int) string

TruncateLines limits diff/trace text (best-effort line split).

Types

type Deps

type Deps struct {
	Config *config.Config
	Client *gitlab.Client
}

Deps is passed into tool registration closures.

type Pagination

type Pagination struct {
	Page    int `json:"page" jsonschema:"Page number (1-based)"`
	PerPage int `json:"per_page" jsonschema:"Items per page (max 100)"`
}

Pagination holds list pagination with clamped per_page.

func (Pagination) ListOpts

func (p Pagination) ListOpts() (page, perPage int)

ListOpts returns gitlab ListOptions with defaults.

Jump to

Keyboard shortcuts

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