search

package
v1.0.5 Latest Latest
Warning

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

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

Documentation

Overview

Package search implements GitLab search operations across multiple scopes: code (blobs), merge requests, issues, commits, milestones, notes, projects, snippet titles, users, and wiki blobs. Each handler supports global, group, and/or project-scoped search as available in the GitLab Search API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatCodeMarkdown

func FormatCodeMarkdown(out CodeOutput) string

FormatCodeMarkdown renders a paginated list of code search results. Includes a Project column so global/group searches show which project each blob belongs to.

func FormatCommitsMarkdown

func FormatCommitsMarkdown(out CommitsOutput) string

FormatCommitsMarkdown renders a paginated list of commit search results.

func FormatIssuesMarkdown

func FormatIssuesMarkdown(out IssuesOutput) string

FormatIssuesMarkdown renders a paginated list of issue search results.

func FormatMRsMarkdown

func FormatMRsMarkdown(out MergeRequestsOutput) string

FormatMRsMarkdown renders a paginated list of merge request search results. Shows project path (semantic) instead of numeric project ID, plus state emoji, author, and branch flow.

func FormatMilestonesMarkdown

func FormatMilestonesMarkdown(out MilestonesOutput) string

FormatMilestonesMarkdown renders a paginated list of milestone search results.

func FormatNotesMarkdown

func FormatNotesMarkdown(out NotesOutput) string

FormatNotesMarkdown renders a paginated list of note search results. Uses notable type and IID for semantic context instead of bare numeric IDs.

func FormatProjectsMarkdown

func FormatProjectsMarkdown(out ProjectsOutput) string

FormatProjectsMarkdown renders a paginated list of project search results. Shows the full namespace path instead of numeric IDs.

func FormatSnippetsMarkdown

func FormatSnippetsMarkdown(out SnippetsOutput) string

FormatSnippetsMarkdown renders a paginated list of snippet search results.

func FormatUsersMarkdown

func FormatUsersMarkdown(out UsersOutput) string

FormatUsersMarkdown renders a paginated list of user search results.

func FormatWikiMarkdown

func FormatWikiMarkdown(out WikiOutput) string

FormatWikiMarkdown renders a paginated list of wiki search results.

func RegisterMeta

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

RegisterMeta registers the gitlab_search meta-tool with all search scopes available in the GitLab Search API.

func RegisterTools

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

RegisterTools registers all search-scoped MCP tools on the given server.

Types

type BlobOutput

type BlobOutput struct {
	Basename  string `json:"basename"`
	Data      string `json:"data"`
	Path      string `json:"path"`
	Filename  string `json:"filename"`
	Ref       string `json:"ref"`
	Startline int64  `json:"startline"`
	ProjectID int64  `json:"project_id"`
}

BlobOutput represents a single code search result.

type CodeInput

type CodeInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query text (param 'query' not 'search'),required"`
	Ref       string               `json:"ref,omitempty"        jsonschema:"Branch or tag name to search in (default: default branch)"`
	toolutil.PaginationInput
}

CodeInput defines parameters for searching code blobs. When project_id is provided the search is scoped to that project; when group_id is provided it is scoped to that group; otherwise a global search is performed.

type CodeOutput

type CodeOutput struct {
	toolutil.HintableOutput
	Blobs      []BlobOutput              `json:"blobs"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

CodeOutput holds a paginated list of code search results.

func Code

func Code(ctx context.Context, client *gitlabclient.Client, input CodeInput) (CodeOutput, error)

Code searches for code (blobs) in GitLab. Scope priority: project_id > group_id > global.

type CommitsInput

type CommitsInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

CommitsInput defines parameters for searching commits. Scope: project_id > group_id > global.

type CommitsOutput

type CommitsOutput struct {
	toolutil.HintableOutput
	Commits    []commits.Output          `json:"commits"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

CommitsOutput holds a paginated list of commit search results.

func Commits

func Commits(ctx context.Context, client *gitlabclient.Client, input CommitsInput) (CommitsOutput, error)

Commits searches for commits in GitLab. Scope priority: project_id > group_id > global.

type IssuesInput

type IssuesInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query text (param 'query' not 'search'),required"`
	toolutil.PaginationInput
}

IssuesInput defines parameters for searching issues. Scope: project_id > group_id > global.

type IssuesOutput

type IssuesOutput struct {
	toolutil.HintableOutput
	Issues     []issues.Output           `json:"issues"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

IssuesOutput holds a paginated list of issue search results.

func Issues

func Issues(ctx context.Context, client *gitlabclient.Client, input IssuesInput) (IssuesOutput, error)

Issues searches for issues in GitLab. Scope priority: project_id > group_id > global.

type MergeRequestsInput

type MergeRequestsInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query text (param 'query' not 'search'),required"`
	toolutil.PaginationInput
}

MergeRequestsInput defines parameters for searching merge requests. Scope: project_id > group_id > global.

type MergeRequestsOutput

type MergeRequestsOutput struct {
	toolutil.HintableOutput
	MergeRequests []mergerequests.Output    `json:"merge_requests"`
	Pagination    toolutil.PaginationOutput `json:"pagination"`
}

MergeRequestsOutput holds a paginated list of merge request search results.

func MergeRequests

func MergeRequests(ctx context.Context, client *gitlabclient.Client, input MergeRequestsInput) (MergeRequestsOutput, error)

MergeRequests searches for merge requests in GitLab. Scope priority: project_id > group_id > global.

type MilestonesInput

type MilestonesInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

MilestonesInput defines parameters for searching milestones. Scope: project_id > group_id > global.

type MilestonesOutput

type MilestonesOutput struct {
	toolutil.HintableOutput
	Milestones []milestones.Output       `json:"milestones"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

MilestonesOutput holds a paginated list of milestone search results.

func Milestones

func Milestones(ctx context.Context, client *gitlabclient.Client, input MilestonesInput) (MilestonesOutput, error)

Milestones searches for milestones in GitLab. Scope priority: project_id > group_id > global.

type NoteOutput

type NoteOutput struct {
	ID           int64  `json:"id"`
	Body         string `json:"body"`
	Author       string `json:"author"`
	CreatedAt    string `json:"created_at"`
	UpdatedAt    string `json:"updated_at"`
	NoteableType string `json:"notable_type"`
	NoteableID   int64  `json:"notable_id"`
	NoteableIID  int64  `json:"notable_iid,omitempty"`
	System       bool   `json:"system"`
}

NoteOutput represents a single note search result.

type NotesInput

type NotesInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	Query     string               `json:"query"      jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

NotesInput defines parameters for searching notes within a project.

type NotesOutput

type NotesOutput struct {
	toolutil.HintableOutput
	Notes      []NoteOutput              `json:"notes"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

NotesOutput holds a paginated list of note search results.

func Notes

func Notes(ctx context.Context, client *gitlabclient.Client, input NotesInput) (NotesOutput, error)

Notes searches for notes within a GitLab project.

type ProjectsInput

type ProjectsInput struct {
	GroupID toolutil.StringOrInt `json:"group_id,omitempty" jsonschema:"Group ID or URL-encoded path (optional — omit for global search)"`
	Query   string               `json:"query"              jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

ProjectsInput defines parameters for searching projects. Scope: group_id (optional) — omit for global search.

type ProjectsOutput

type ProjectsOutput struct {
	toolutil.HintableOutput
	Projects   []projects.Output         `json:"projects"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ProjectsOutput holds a paginated list of project search results.

func Projects

func Projects(ctx context.Context, client *gitlabclient.Client, input ProjectsInput) (ProjectsOutput, error)

Projects searches for projects in GitLab. Scope: group_id > global.

type SnippetOutput

type SnippetOutput struct {
	ID          int64  `json:"id"`
	Title       string `json:"title"`
	FileName    string `json:"file_name"`
	Description string `json:"description"`
	Visibility  string `json:"visibility"`
	Author      string `json:"author"`
	WebURL      string `json:"web_url"`
	RawURL      string `json:"raw_url"`
	ProjectID   int64  `json:"project_id,omitempty"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
}

SnippetOutput represents a single snippet search result.

type SnippetsInput

type SnippetsInput struct {
	Query string `json:"query" jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

SnippetsInput defines parameters for searching snippet titles.

type SnippetsOutput

type SnippetsOutput struct {
	toolutil.HintableOutput
	Snippets   []SnippetOutput           `json:"snippets"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

SnippetsOutput holds a paginated list of snippet search results.

func Snippets

func Snippets(ctx context.Context, client *gitlabclient.Client, input SnippetsInput) (SnippetsOutput, error)

Snippets searches for snippet titles globally in GitLab.

type UserOutput

type UserOutput struct {
	ID        int64  `json:"id"`
	Username  string `json:"username"`
	Name      string `json:"name"`
	State     string `json:"state"`
	AvatarURL string `json:"avatar_url"`
	WebURL    string `json:"web_url"`
}

UserOutput represents a single user search result (simplified).

type UsersInput

type UsersInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

UsersInput defines parameters for searching users. Scope: project_id > group_id > global.

type UsersOutput

type UsersOutput struct {
	toolutil.HintableOutput
	Users      []UserOutput              `json:"users"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

UsersOutput holds a paginated list of user search results.

func Users

func Users(ctx context.Context, client *gitlabclient.Client, input UsersInput) (UsersOutput, error)

Users searches for users in GitLab. Scope priority: project_id > group_id > global.

type WikiBlobOutput

type WikiBlobOutput struct {
	Slug    string `json:"slug"`
	Title   string `json:"title"`
	Content string `json:"content"`
	Format  string `json:"format"`
}

WikiBlobOutput represents a single wiki blob search result.

type WikiInput

type WikiInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id,omitempty" jsonschema:"Project ID or URL-encoded path (optional)"`
	GroupID   toolutil.StringOrInt `json:"group_id,omitempty"   jsonschema:"Group ID or URL-encoded path (optional)"`
	Query     string               `json:"query"                jsonschema:"Search query string,required"`
	toolutil.PaginationInput
}

WikiInput defines parameters for searching wiki blobs. Scope: project_id > group_id > global.

type WikiOutput

type WikiOutput struct {
	toolutil.HintableOutput
	WikiBlobs  []WikiBlobOutput          `json:"wiki_blobs"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

WikiOutput holds a paginated list of wiki blob search results.

func Wiki

func Wiki(ctx context.Context, client *gitlabclient.Client, input WikiInput) (WikiOutput, error)

Wiki searches for wiki blobs in GitLab. Scope priority: project_id > group_id > global.

Jump to

Keyboard shortcuts

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