integrations

package
v1.4.4 Latest Latest
Warning

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

Go to latest
Published: May 2, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package integrations implements MCP tools for GitLab project integrations.

It wraps the GitLab Services service from client-go v2. The generic tools list, get, and delete integrations by slug, while integration-specific tools handle configuration details such as Jira settings. The package also provides Markdown rendering for project integration responses.

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/disables a specific integration from a project.

func FormatGetMarkdown

func FormatGetMarkdown(out GetOutput) *mcp.CallToolResult

FormatGetMarkdown formats a single integration.

func FormatListMarkdown

func FormatListMarkdown(out ListOutput) *mcp.CallToolResult

FormatListMarkdown formats a list of integrations.

func RegisterTools

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

RegisterTools registers all integration tools on the MCP server.

Types

type DeleteInput

type DeleteInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	Slug      string               `` /* 307-byte string literal not displayed */
}

DeleteInput is the input for deleting/disabling an integration.

type GetInput

type GetInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	Slug      string               `` /* 307-byte string literal not displayed */
}

GetInput is the input for getting an integration by slug.

type GetOutput

type GetOutput struct {
	toolutil.HintableOutput
	Integration IntegrationItem `json:"integration"`
}

GetOutput is the output for a single integration.

func Get

func Get(ctx context.Context, client *gitlabclient.Client, input GetInput) (GetOutput, error)

Get retrieves a specific integration by slug, dispatching to the typed client-go method.

type IntegrationItem

type IntegrationItem struct {
	ID        int64  `json:"id"`
	Title     string `json:"title"`
	Slug      string `json:"slug"`
	Active    bool   `json:"active"`
	CreatedAt string `json:"created_at,omitempty"`
	UpdatedAt string `json:"updated_at,omitempty"`
}

IntegrationItem is a summary of an integration/service.

type ListInput

type ListInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
}

ListInput is the input for listing project integrations.

type ListOutput

type ListOutput struct {
	toolutil.HintableOutput
	Integrations []IntegrationItem `json:"integrations"`
}

ListOutput is the output for listing integrations.

func List

func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)

List returns all integrations for a project.

type SetJiraInput

type SetJiraInput struct {
	ProjectID                    toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	URL                          string               `json:"url" jsonschema:"Jira instance base URL,required"`
	Username                     string               `json:"username,omitempty" jsonschema:"Jira username"`
	Password                     string               `json:"password,omitempty" jsonschema:"Jira password or API token"`
	Active                       *bool                `json:"active,omitempty" jsonschema:"Enable or disable the integration"`
	APIURL                       string               `json:"api_url,omitempty" jsonschema:"Jira API URL (overrides base URL)"`
	JiraAuthType                 *int64               `json:"jira_auth_type,omitempty" jsonschema:"Jira auth type (0=basic, 1=token)"`
	JiraIssuePrefix              string               `json:"jira_issue_prefix,omitempty" jsonschema:"Jira issue key prefix"`
	JiraIssueRegex               string               `json:"jira_issue_regex,omitempty" jsonschema:"Custom regex for Jira issue keys"`
	JiraIssueTransitionAutomatic *bool                `json:"jira_issue_transition_automatic,omitempty" jsonschema:"Auto-transition Jira issues"`
	JiraIssueTransitionID        string               `json:"jira_issue_transition_id,omitempty" jsonschema:"Jira transition ID"`
	CommitEvents                 *bool                `json:"commit_events,omitempty" jsonschema:"Trigger on commit events"`
	MergeRequestsEvents          *bool                `json:"merge_requests_events,omitempty" jsonschema:"Trigger on merge request events"`
	CommentOnEventEnabled        *bool                `json:"comment_on_event_enabled,omitempty" jsonschema:"Add comments on Jira issues for events"`
	IssuesEnabled                *bool                `json:"issues_enabled,omitempty" jsonschema:"Enable Jira issues integration"`
	ProjectKeys                  []string             `json:"project_keys,omitempty" jsonschema:"Jira project keys to restrict"`
	UseInheritedSettings         *bool                `json:"use_inherited_settings,omitempty" jsonschema:"Use inherited settings from group"`
}

SetJiraInput is the input for configuring the Jira integration.

type SetJiraOutput

type SetJiraOutput struct {
	toolutil.HintableOutput
	Integration IntegrationItem `json:"integration"`
}

SetJiraOutput is the output after configuring Jira.

func SetJira

func SetJira(ctx context.Context, client *gitlabclient.Client, input SetJiraInput) (SetJiraOutput, error)

SetJira configures the Jira integration for a project.

Jump to

Keyboard shortcuts

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