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 ¶
- func FormatCodeMarkdown(out CodeOutput) string
- func FormatCommitsMarkdown(out CommitsOutput) string
- func FormatIssuesMarkdown(out IssuesOutput) string
- func FormatMRsMarkdown(out MergeRequestsOutput) string
- func FormatMilestonesMarkdown(out MilestonesOutput) string
- func FormatNotesMarkdown(out NotesOutput) string
- func FormatProjectsMarkdown(out ProjectsOutput) string
- func FormatSnippetsMarkdown(out SnippetsOutput) string
- func FormatUsersMarkdown(out UsersOutput) string
- func FormatWikiMarkdown(out WikiOutput) string
- func RegisterMeta(server *mcp.Server, client *gitlabclient.Client)
- func RegisterTools(server *mcp.Server, client *gitlabclient.Client)
- type BlobOutput
- type CodeInput
- type CodeOutput
- type CommitsInput
- type CommitsOutput
- type IssuesInput
- type IssuesOutput
- type MergeRequestsInput
- type MergeRequestsOutput
- type MilestonesInput
- type MilestonesOutput
- type NoteOutput
- type NotesInput
- type NotesOutput
- type ProjectsInput
- type ProjectsOutput
- type SnippetOutput
- type SnippetsInput
- type SnippetsOutput
- type UserOutput
- type UsersInput
- type UsersOutput
- type WikiBlobOutput
- type WikiInput
- type WikiOutput
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.