Documentation
¶
Overview ¶
Package projectimportexport implements MCP tools for GitLab project import and export operations.
The package wraps the GitLab Project import/export API:
Index ¶
- func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
- func FormatExportDownloadMarkdown(out ExportDownloadOutput) *mcp.CallToolResult
- func FormatExportStatusMarkdown(out ExportStatusOutput) *mcp.CallToolResult
- func FormatImportStatusMarkdown(out ImportStatusOutput) *mcp.CallToolResult
- func FormatScheduleExportMarkdown(out ScheduleExportOutput) *mcp.CallToolResult
- type ExportDownloadInput
- type ExportDownloadOutput
- type ExportStatusInput
- type ExportStatusOutput
- type GetImportStatusInput
- type ImportFromFileInput
- type ImportOverrideParamsInput
- type ImportStatusOutput
- type ScheduleExportInput
- type ScheduleExportOutput
- type ScheduleExportUploadInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ActionSpecs ¶
func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
ActionSpecs returns canonical specs for project import and export actions.
func FormatExportDownloadMarkdown ¶
func FormatExportDownloadMarkdown(out ExportDownloadOutput) *mcp.CallToolResult
FormatExportDownloadMarkdown coordinates format export download markdown for the projectimportexport package.
func FormatExportStatusMarkdown ¶
func FormatExportStatusMarkdown(out ExportStatusOutput) *mcp.CallToolResult
FormatExportStatusMarkdown coordinates format export status markdown for the projectimportexport package.
func FormatImportStatusMarkdown ¶
func FormatImportStatusMarkdown(out ImportStatusOutput) *mcp.CallToolResult
FormatImportStatusMarkdown coordinates format import status markdown for the projectimportexport package.
func FormatScheduleExportMarkdown ¶
func FormatScheduleExportMarkdown(out ScheduleExportOutput) *mcp.CallToolResult
FormatScheduleExportMarkdown coordinates format schedule export markdown for the projectimportexport package.
Types ¶
type ExportDownloadInput ¶
type ExportDownloadInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
}
ExportDownloadInput is the input for downloading a project export.
type ExportDownloadOutput ¶
type ExportDownloadOutput struct {
toolutil.HintableOutput
ContentBase64 string `json:"content_base64"`
SizeBytes int `json:"size_bytes"`
}
ExportDownloadOutput is the output for downloading a project export.
func ExportDownload ¶
func ExportDownload(ctx context.Context, client *gitlabclient.Client, input ExportDownloadInput) (ExportDownloadOutput, error)
ExportDownload downloads the finished export archive of a project as base64.
type ExportStatusInput ¶
type ExportStatusInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
}
ExportStatusInput is the input for getting export status.
type ExportStatusOutput ¶
type ExportStatusOutput struct {
toolutil.HintableOutput
ID int64 `json:"id"`
Description string `json:"description"`
Name string `json:"name"`
NameWithNamespace string `json:"name_with_namespace"`
Path string `json:"path"`
PathWithNamespace string `json:"path_with_namespace"`
CreatedAt string `json:"created_at,omitempty"`
ExportStatus string `json:"export_status"`
Message string `json:"message,omitempty"`
APIURL string `json:"api_url,omitempty"`
WebURL string `json:"web_url,omitempty"`
}
ExportStatusOutput is the output for getting export status.
func GetExportStatus ¶
func GetExportStatus(ctx context.Context, client *gitlabclient.Client, input ExportStatusInput) (ExportStatusOutput, error)
GetExportStatus returns the export status of a project.
type GetImportStatusInput ¶
type GetImportStatusInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
}
GetImportStatusInput is the input for getting import status.
type ImportFromFileInput ¶
type ImportFromFileInput struct {
FilePath string `` /* 289-byte string literal not displayed */
ContentBase64 string `` /* 143-byte string literal not displayed */
Namespace string `json:"namespace,omitempty" jsonschema:"Namespace to import the project into (user or group path)"`
Name string `json:"name,omitempty" jsonschema:"Name for the imported project"`
Path string `json:"path,omitempty" jsonschema:"URL path for the imported project"`
Overwrite *bool `json:"overwrite,omitempty" jsonschema:"If true, overwrite an existing project with the same path"`
OverrideParams *ImportOverrideParamsInput `` /* 179-byte string literal not displayed */
}
ImportFromFileInput is the input for importing a project from an archive file. Fields mirror gl.ImportFileOptions 1:1 (override_params is exposed as a curated nested struct over gl.CreateProjectOptions).
type ImportOverrideParamsInput ¶ added in v2.3.0
type ImportOverrideParamsInput struct {
Name string `json:"name,omitempty" jsonschema:"Override the imported project's name"`
Path string `json:"path,omitempty" jsonschema:"Override the imported project's URL path (slug)"`
NamespaceID *int64 `json:"namespace_id,omitempty" jsonschema:"Override the namespace ID the imported project is created in"`
Description string `json:"description,omitempty" jsonschema:"Override the imported project's description"`
Visibility string `json:"visibility,omitempty" jsonschema:"Override visibility level (private, internal, public)"`
DefaultBranch string `json:"default_branch,omitempty" jsonschema:"Override the default branch name"`
MergeMethod string `json:"merge_method,omitempty" jsonschema:"Override merge method (merge, rebase_merge, ff)"`
RequestAccessEnabled *bool `json:"request_access_enabled,omitempty" jsonschema:"Override whether users can request access"`
LFSEnabled *bool `json:"lfs_enabled,omitempty" jsonschema:"Override Git LFS enablement"`
IssuesAccessLevel string `json:"issues_access_level,omitempty" jsonschema:"Override issues access level (disabled, private, enabled)"`
MergeRequestsAccessLevel string `json:"merge_requests_access_level,omitempty" jsonschema:"Override merge requests access level (disabled, private, enabled)"`
WikiAccessLevel string `json:"wiki_access_level,omitempty" jsonschema:"Override wiki access level (disabled, private, enabled)"`
BuildsAccessLevel string `json:"builds_access_level,omitempty" jsonschema:"Override CI/CD builds access level (disabled, private, enabled)"`
SnippetsAccessLevel string `json:"snippets_access_level,omitempty" jsonschema:"Override snippets access level (disabled, private, enabled)"`
ContainerRegistryAccessLevel string `` /* 131-byte string literal not displayed */
}
ImportOverrideParamsInput mirrors the project-create attributes that GitLab accepts under the import-from-file `override_params` field. It maps to gl.CreateProjectOptions (the type of gl.ImportFileOptions.OverrideParams).
GitLab documents override_params as accepting the full set of create-project attributes (the entire gl.CreateProjectOptions set, ~79 fields). Exposing all of them as flat MCP input fields would bloat this tool's schema and duplicate the dedicated gitlab_project create/update tools, so this struct deliberately surfaces only the commonly-overridden subset a user realistically changes during an import (identity, visibility, default branch, merge method, access-request/LFS/shared-runner toggles, and the high-traffic feature access levels). Full project configuration remains available via the dedicated gitlab_project create/update tools. Only set fields are forwarded.
type ImportStatusOutput ¶
type ImportStatusOutput struct {
toolutil.HintableOutput
ID int64 `json:"id"`
Description string `json:"description"`
Name string `json:"name"`
NameWithNamespace string `json:"name_with_namespace"`
Path string `json:"path"`
PathWithNamespace string `json:"path_with_namespace"`
CreatedAt string `json:"created_at,omitempty"`
ImportStatus string `json:"import_status"`
ImportType string `json:"import_type,omitempty"`
CorrelationID string `json:"correlation_id,omitempty"`
ImportError string `json:"import_error,omitempty"`
}
ImportStatusOutput is the output for import operations.
func GetImportStatus ¶
func GetImportStatus(ctx context.Context, client *gitlabclient.Client, input GetImportStatusInput) (ImportStatusOutput, error)
GetImportStatus returns the import status of a project.
func ImportFromFile ¶
func ImportFromFile(ctx context.Context, client *gitlabclient.Client, input ImportFromFileInput) (ImportStatusOutput, error)
ImportFromFile imports a project from an export archive.
type ScheduleExportInput ¶
type ScheduleExportInput struct {
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
Description string `json:"description,omitempty" jsonschema:"Override the project description in the export"`
Upload *ScheduleExportUploadInput `` /* 135-byte string literal not displayed */
// Deprecated: use Upload.URL. Retained as a flat alias for backward
// compatibility; ignored when Upload is set.
UploadURL string `` /* 129-byte string literal not displayed */
// Deprecated: use Upload.HTTPMethod. Retained as a flat alias for backward
// compatibility; ignored when Upload is set.
UploadHTTP string `` /* 132-byte string literal not displayed */
}
ScheduleExportInput is the input for scheduling a project export. Fields mirror gl.ScheduleExportOptions 1:1.
type ScheduleExportOutput ¶
type ScheduleExportOutput struct {
toolutil.HintableOutput
Message string `json:"message"`
}
ScheduleExportOutput is the output for scheduling a project export.
func ScheduleExport ¶
func ScheduleExport(ctx context.Context, client *gitlabclient.Client, input ScheduleExportInput) (ScheduleExportOutput, error)
ScheduleExport schedules an asynchronous project export.
type ScheduleExportUploadInput ¶ added in v2.3.0
type ScheduleExportUploadInput struct {
URL string `json:"url,omitempty" jsonschema:"URL to upload the exported project archive to after export completes"`
HTTPMethod string `json:"http_method,omitempty" jsonschema:"HTTP method to use for the upload (PUT or POST; default PUT)"`
}
ScheduleExportUploadInput mirrors gl.ScheduleExportUploadOptions: the nested upload destination for a scheduled export. When set, GitLab uploads the generated archive to the given URL instead of (or in addition to) keeping it for download.