Skip to content

Repository files and commits

What a repository holds: browse its tree, read a file raw or with its metadata, its blame and its history, and create, update or delete one; read blobs; compare two refs and find their merge base; download an archive; list contributors; generate or add a changelog.

Commits: list, read and create them, read a commit’s diff, refs, merge requests and signature, cherry-pick and revert one, set and read commit statuses, and comment on a commit or hold a threaded discussion on it. Submodules can be listed, read into and updated, and Markdown can be rendered as GitLab renders it.

  • “Show the file tree of project 42”
  • “Get the contents of README.md on main”
  • “Compare main and develop”
  • “Who last changed line 120 of src/server.go?”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as repository.archive, and its parameters in params. gitlab_find_action finds an ID from a description of the task.
  • Meta (GITLAB_MCP_TOOL_SURFACE=meta): call gitlab_repository with action set to the action’s name, such as archive, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_repository_archive, with its parameters as the arguments.

Every tier serves the whole group, on self-managed instances and on GitLab.com alike.

Read-only actions: 27 of 41, the ones a deployment in read-only mode keeps.

The description of each action, and of each of its parameters, is the text the server serves for it on the default surface, quoted as served. A destructive action runs only once confirmed, unless GITLAB_MCP_YOLO_MODE (or AUTOPILOT) skips that step: the dynamic surface needs confirm: true on gitlab_execute_action, and the other two take a confirm parameter or the client’s prompt (Destructive actions).

ActionIndividual
repository.archivegitlab_repository_archive
repository.blobgitlab_repository_blob
repository.changelog_addgitlab_repository_changelog_add
repository.changelog_generategitlab_repository_changelog_generate
repository.commit_cherry_pickgitlab_commit_cherry_pick
repository.commit_comment_creategitlab_commit_comment_create
repository.commit_commentsgitlab_commit_comments
repository.commit_creategitlab_commit_create
repository.commit_diffgitlab_commit_diff
repository.commit_discussion_add_notegitlab_add_commit_discussion_note
repository.commit_discussion_creategitlab_create_commit_discussion
repository.commit_discussion_delete_notegitlab_delete_commit_discussion_note
repository.commit_discussion_getgitlab_get_commit_discussion
repository.commit_discussion_listgitlab_list_commit_discussions
repository.commit_discussion_update_notegitlab_update_commit_discussion_note
repository.commit_getgitlab_commit_get
repository.commit_listgitlab_commit_list
repository.commit_merge_requestsgitlab_commit_merge_requests
repository.commit_refsgitlab_commit_refs
repository.commit_revertgitlab_commit_revert
repository.commit_signaturegitlab_commit_signature
repository.commit_status_setgitlab_commit_status_set
repository.commit_statusesgitlab_commit_statuses
repository.comparegitlab_repository_compare
repository.contributorsgitlab_repository_contributors
repository.file_blamegitlab_file_blame
repository.file_creategitlab_file_create
repository.file_deletegitlab_file_delete
repository.file_getgitlab_file_get
repository.file_historygitlab_commit_list
repository.file_metadatagitlab_file_metadata
repository.file_rawgitlab_file_raw
repository.file_raw_metadatagitlab_file_raw_metadata
repository.file_updategitlab_file_update
repository.list_submodulesgitlab_list_repository_submodules
repository.markdown_rendergitlab_render_markdown
repository.merge_basegitlab_repository_merge_base
repository.raw_blobgitlab_repository_raw_blob
repository.read_submodule_filegitlab_read_repository_submodule_file
repository.treegitlab_repository_tree
repository.update_submodulegitlab_update_repository_submodule

Build the download URL for a repository archive. Returns: the project, ref/SHA, format, the subdirectory when one was asked for, and the archive download URL (binary content is not returned). See also: repository.tree, tag.list.

  • Meta-tool: gitlab_repository, action archive
  • Individual tool: gitlab_repository_archive
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
formatstringnoArchive format: tar.gz, tar.bz2, tbz, tbz2, tb2, bz2, tar, zip (default: tar.gz)
pathstringnoSubdirectory path to archive (omit for entire repo)
shastringnoCommit SHA, branch, or tag to archive (default: default branch)

Get a git blob by SHA. Returns: blob SHA, byte size, decoded text content (or image data), and a content category (text/image/binary). See also: repository.raw_blob, repository.tree.

  • Meta-tool: gitlab_repository, action blob
  • Individual tool: gitlab_repository_blob
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesBlob SHA (from tree listing or commit diff)

Add changelog data to a changelog file by committing the generated entries. Returns: a success confirmation with the version. See also: repository.changelog_generate, release.create.

  • Meta-tool: gitlab_repository, action changelog_add
  • Individual tool: gitlab_repository_changelog_add
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
versionstringyesVersion string for the changelog
branchstringnoBranch to commit the changelog to (default: default branch)
config_filestringnoPath to the changelog config file in the project
datestringnoDate and time of the release as an RFC3339 timestamp (default: current time)
filestringnoPath to the changelog file (default: CHANGELOG.md)
fromstringnoStart of the range (commit SHA or tag)
messagestringnoCommit message for the changelog update
tostringnoEnd of the range (commit SHA or tag, default: HEAD)
trailerstringnoGit trailer to use for changelog generation (default: Changelog)

Generate changelog notes for a version range without committing. Returns: the rendered changelog notes (read-only preview). See also: repository.changelog_add, release.create.

  • Meta-tool: gitlab_repository, action changelog_generate
  • Individual tool: gitlab_repository_changelog_generate
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
versionstringyesVersion string
config_filestringnoPath to the changelog config file
datestringnoDate and time of the release as an RFC3339 timestamp (default: current time)
fromstringnoStart of the range (commit SHA or tag)
tostringnoEnd of the range (commit SHA or tag, default: HEAD)
trailerstringnoGit trailer to use (default: Changelog)

Cherry-pick a commit onto a target branch, optionally as a dry run. Returns: the newly created commit (SHA, title, author, dates, web URL) or a conflict error. See also: repository.commit_get, branch.list, repository.commit_revert.

  • Meta-tool: gitlab_repository, action commit_cherry_pick
  • Individual tool: gitlab_commit_cherry_pick
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
branchstringyesTarget branch name
project_idstring/integeryesProject ID or URL-encoded path
dry_runbooleannoIf true, does not create the commit but checks for conflicts
messagestringnoCustom commit message (defaults to original)
shastringnoCommit SHA to cherry-pick

Post a comment on a commit, optionally inline on a specific file path and line. Returns: the created comment with note text, author user object, and optional path/line/line_type. See also: repository.commit_comments, repository.commit_diff, repository.commit_get.

  • Meta-tool: gitlab_repository, action commit_comment_create
  • Individual tool: gitlab_commit_comment_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
notestringyesComment text
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA
lineintegernoLine number to comment on
line_typestring (new, old)noLine type: new or old (default: new)
pathstringnoFile path to comment on (for inline comments)

List the comments on a commit. Returns: comment entries with note text, author user object, optional file path, line, and line type, plus pagination metadata. See also: repository.commit_comment_create, repository.commit_get, repository.commit_diff.

  • Meta-tool: gitlab_repository, action commit_comments
  • Individual tool: gitlab_commit_comments
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’

Create a commit with multiple file actions (create/update/delete/move/chmod) on a branch in one call. Returns: the created commit with SHA, title, author/committer, dates, parent IDs, stats, trailers, and web URL. See also: branch.list, repository.tree, repository.commit_get.

  • Meta-tool: gitlab_repository, action commit_create
  • Individual tool: gitlab_commit_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
actionsobject[]yesList of file actions (create, update, delete, move, chmod)
branchstringyesTarget branch name
commit_messagestringyesCommit message
project_idstring/integeryesProject ID or URL-encoded path
author_emailstringnoCustom author email
author_namestringnoCustom author name
forcebooleannoWhen true, force-overwrite the target branch even if a conflict exists
start_branchstringnoBranch to start from if target branch does not exist
start_projectstringnoProject ID or path of the source project to start the branch from (for cross-project commits)
start_shastringnoSHA to start from if target branch does not exist (alternative to start_branch)
statsbooleannoInclude commit stats (additions, deletions, total) in the response

Get the file diffs of a single commit, optionally in unified-diff format. Returns: per-file diffs (old/new path, diff body, new/renamed/deleted flags, file modes) with pagination metadata. See also: repository.commit_get, repository.file_history, repository.commit_comments.

  • Meta-tool: gitlab_repository, action commit_diff
  • Individual tool: gitlab_commit_diff
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA hash to get diffs for
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
unidiffbooleannoReturn diffs in unified diff format

Add a reply note to an existing commit discussion thread. Returns: the created note (author, body, timestamps, resolvable state). See also: repository.commit_discussion_create, repository.commit_discussion_get, repository.commit_discussion_update_note.

  • Meta-tool: gitlab_repository, action commit_discussion_add_note
  • Individual tool: gitlab_add_commit_discussion_note
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
bodystringyesNote body (Markdown supported)
commit_shastringyesCommit SHA
discussion_idstringyesDiscussion ID to reply to
project_idstring/integeryesProject ID or URL-encoded path
created_atstringnoBackdate the note creation time (ISO 8601, e.g. 2025-01-01T00:00:00Z). Requires admin or owner rights

Create a new discussion thread on a commit, optionally as an inline diff comment. Returns: the created thread with its first note (author, body, resolvable state, diff position). See also: repository.commit_discussion_add_note, repository.commit_discussion_list, repository.commit_diff.

  • Meta-tool: gitlab_repository, action commit_discussion_create
  • Individual tool: gitlab_create_commit_discussion
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
bodystringyesDiscussion body (Markdown supported)
commit_shastringyesCommit SHA
project_idstring/integeryesProject ID or URL-encoded path
created_atstringnoBackdate the discussion creation time (ISO 8601, e.g. 2025-01-01T00:00:00Z). Requires admin or owner rights
positionobjectnoPosition for inline diff comments

Delete a note from a commit discussion thread (destructive). Returns: a deletion confirmation message. See also: repository.commit_discussion_update_note, repository.commit_discussion_get, repository.commit_discussion_list.

  • Meta-tool: gitlab_repository, action commit_discussion_delete_note
  • Individual tool: gitlab_delete_commit_discussion_note
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
commit_shastringyesCommit SHA
discussion_idstringyesDiscussion ID
note_idintegeryesNote ID to delete
project_idstring/integeryesProject ID or URL-encoded path

Get a single commit discussion thread by its discussion id. Returns: the thread with every note (author, body, system flag, resolvable/resolved state, diff position). See also: repository.commit_discussion_list, repository.commit_discussion_add_note, repository.commit_get.

  • Meta-tool: gitlab_repository, action commit_discussion_get
  • Individual tool: gitlab_get_commit_discussion
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
commit_shastringyesCommit SHA
discussion_idstringyesDiscussion ID
project_idstring/integeryesProject ID or URL-encoded path

List discussion threads on a commit with ordering and keyset pagination. Returns: discussion threads with their notes (author, body, system flag, resolvable state, diff position) and pagination metadata. See also: repository.commit_discussion_get, repository.commit_discussion_create, repository.commit_get.

  • Meta-tool: gitlab_repository, action commit_discussion_list
  • Individual tool: gitlab_list_commit_discussions
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
commit_shastringyesCommit SHA
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order keyset-paginated results by (e.g. created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc or desc)

Update the body of a note in a commit discussion thread. Returns: the updated note (author, body, timestamps). See also: repository.commit_discussion_add_note, repository.commit_discussion_delete_note, repository.commit_discussion_get.

  • Meta-tool: gitlab_repository, action commit_discussion_update_note
  • Individual tool: gitlab_update_commit_discussion_note
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
bodystringyesUpdated note body
commit_shastringyesCommit SHA
discussion_idstringyesDiscussion ID
note_idintegeryesNote ID to update
project_idstring/integeryesProject ID or URL-encoded path
created_atstringnoOverride the note creation time (ISO 8601, e.g. 2025-01-01T00:00:00Z). Requires admin or owner rights

Get a single commit from a project by SHA (full, short, branch, or tag). Returns: full commit metadata, message, parent IDs, author/committer, dates, stats, trailers, project ID, and last pipeline. See also: repository.file_history, repository.commit_diff, repository.commit_refs, repository.commit_statuses.

  • Meta-tool: gitlab_repository, action commit_get
  • Individual tool: gitlab_commit_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA hash to retrieve
statsbooleannoInclude commit stats (additions, deletions, total). Defaults to true on GitLab

List repository commits for a project, optionally filtered by ref_name, since/until, path, or author. Returns: commit summaries (SHA, title, author, dates, parent IDs, stats, trailers, last pipeline) with pagination metadata. See also: repository.commit_get, repository.commit_diff, repository.commit_statuses, branch.list.

  • Meta-tool: gitlab_repository, action commit_list
  • Individual tool: gitlab_commit_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
allbooleannoRetrieve every commit from the whole repository (across all branches)
authorstringnoFilter by commit author name or email
first_parentbooleannoFollow only the first parent commit upon seeing a merge commit
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
pathstringnoFile path to filter commits by (only commits touching this path)
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
ref_namestringnoBranch name, tag, or commit SHA to list commits from (default: default branch)
sincestringnoReturn commits after this date (ISO 8601 format, e.g. 2025-01-01T00:00:00Z)
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
trailersbooleannoParse and include Git trailers for every commit
untilstringnoReturn commits before this date (ISO 8601 format, e.g. 2025-12-31T23:59:59Z)
with_statsbooleannoInclude commit stats (additions, deletions, total)

List merge requests associated with a commit. Returns: compact MR rows with IID, project, title, state, draft flag, source/target branches, merge commit SHA, labels, author, web URL, and created, updated, merged and closed times, with pagination metadata. See also: repository.commit_get, merge_request.get, mr_review.changes_get.

  • Meta-tool: gitlab_repository, action commit_merge_requests
  • Individual tool: gitlab_commit_merge_requests
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

List branches and tags that reference (contain) a commit, optionally filtered by ref type. Returns: ref entries with type and name plus pagination metadata. See also: repository.commit_get, branch.list, tag.list.

  • Meta-tool: gitlab_repository, action commit_refs
  • Individual tool: gitlab_commit_refs
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA to look up
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
typestring (branch, tag, all)noFilter by ref type: branch, tag, or all (default: all)

Revert a commit on a target branch, creating a new commit that undoes it. Returns: the newly created revert commit (SHA, title, author, dates, web URL) or a conflict error. See also: repository.commit_get, branch.list, repository.commit_cherry_pick.

  • Meta-tool: gitlab_repository, action commit_revert
  • Individual tool: gitlab_commit_revert
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
branchstringyesTarget branch name
project_idstring/integeryesProject ID or URL-encoded path
shastringnoCommit SHA to revert

Get the signature (GPG/X.509/SSH) of a commit for authenticity verification. Returns: the signing key ID, primary key ID, signer name/email, verification status, and optional subkey ID. See also: repository.commit_get, repository.file_history.

  • Meta-tool: gitlab_repository, action commit_signature
  • Individual tool: gitlab_commit_signature
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA

Set or update the pipeline status of a commit (used by external CI/reporting integrations). Returns: the resulting status with state, name, ref, coverage, pipeline ID, timestamps, and author user object. See also: repository.commit_statuses, repository.commit_get, pipeline.list.

  • Meta-tool: gitlab_repository, action commit_status_set
  • Individual tool: gitlab_commit_status_set
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA
statestring (pending, running, success, failed, canceled, skipped)yesStatus state: pending, running, success, failed, canceled
contextstringnoStatus context label (overrides name)
coveragenumbernoCode coverage percentage
descriptionstringnoShort description of the status
namestringnoStatus name / context
pipeline_idintegernoPipeline ID to associate the status with
refstringnoBranch or tag name
target_urlstringnoURL to link from the status

List the statuses of a commit (CI jobs and external integrations), filtered by ref, stage, name, or pipeline. Returns: status entries with state, name, ref, coverage, pipeline ID, timestamps, and author user object, plus pagination metadata. See also: repository.commit_status_set, repository.commit_get, pipeline.list.

  • Meta-tool: gitlab_repository, action commit_statuses
  • Individual tool: gitlab_commit_statuses
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesCommit SHA
allbooleannoReturn all statuses including retries
namestringnoStatus name filter
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
pipeline_idintegernoPipeline ID filter
refstringnoBranch or tag name filter
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
stagestringnoStage name filter

Compare two refs (branches, tags, or commits) in a project. Use from_project_id for cross-project comparison. Returns: commits, diffs, and comparison metadata. See also: repository.tree, branch.list.

  • Meta-tool: gitlab_repository, action compare
  • Individual tool: gitlab_repository_compare
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
fromstringyesBranch name, tag, or commit SHA to compare from
project_idstring/integeryesProject ID or URL-encoded path
tostringyesBranch name, tag, or commit SHA to compare to
from_project_idintegernoSource project ID for cross-project comparison, minimum=1
straightbooleannoUse straight comparison (from..to) instead of merge-base (from…to)
unidiffbooleannoReturn diffs in unified diff format

List repository contributors. Returns: each contributor’s name, email, commit count, additions, deletions, and pagination metadata. See also: repository.tree, repository.file_history.

  • Meta-tool: gitlab_repository, action contributors
  • Individual tool: gitlab_repository_contributors
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
order_bystring (name, email, commits)noOrder by: name, email, or commits (number of commits). Contributors are ordered by commit date when omitted
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction: asc or desc (default: asc)

Get blame information for a file, optionally for a line range. Returns: file_path and blame ranges, each with commit id, message, author name/email, authored and committed dates, and the covered lines. See also: repository.file_get, repository.file_history.

  • Meta-tool: gitlab_repository, action file_blame
  • Individual tool: gitlab_file_blame
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesURL-encoded full path of the file
project_idstring/integeryesProject ID or URL-encoded path
range_endintegernoEnd line number for blame range
range_startintegernoStart line number for blame range
refstringnoBranch, tag, or commit SHA (defaults to default branch)

Create a new file in a repository in a single commit. Returns: file_path, branch, commit_id, and last_commit_id. See also: repository.file_update, repository.file_get, repository.file_delete.

  • Meta-tool: gitlab_repository, action file_create
  • Individual tool: gitlab_file_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch to create the file on
commit_messagestringyesCommit message
contentstringyesFile content
file_pathstringyesURL-encoded full path of the new file
project_idstring/integeryesProject ID or URL-encoded path
author_emailstringnoCommit author email
author_namestringnoCommit author name
encodingstring (text, base64)noContent encoding: text or base64 (default: text)
execute_filemodebooleannoEnable execute permission on the file
start_branchstringnoBranch to start from (creates new branch if different from branch)

Delete a file from a repository in a single commit. Returns: a success confirmation naming the file and project. See also: repository.file_get, repository.file_update.

  • Meta-tool: gitlab_repository, action file_delete
  • Individual tool: gitlab_file_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch to delete the file from
commit_messagestringyesCommit message
file_pathstringyesURL-encoded full path of the file to delete
project_idstring/integeryesProject ID or URL-encoded path
author_emailstringnoCommit author email
author_namestringnoCommit author name
last_commit_idstringnoLast known commit ID for optimistic locking
start_branchstringnoBranch to start from

Get a single file’s decoded content and metadata from a repository. Returns: file_name, file_path, size, encoding, content, content_sha256, ref, blob_id, commit_id, last_commit_id, and execute_filemode. See also: repository.file_raw, repository.file_metadata, repository.file_blame, repository.tree.

  • Meta-tool: gitlab_repository, action file_get
  • Individual tool: gitlab_file_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesURL-encoded full path of the file (e.g. src%2Fmain.go or src/main.go)
project_idstring/integeryesProject ID or URL-encoded path
refstringnoBranch name, tag, or commit SHA (defaults to default branch)

List repository commits for a project, optionally filtered by ref_name, since/until, path, or author. Returns: commit summaries (SHA, title, author, dates, parent IDs, stats, trailers, last pipeline) with pagination metadata. See also: repository.commit_get, repository.commit_diff, repository.commit_statuses, branch.list.

  • Meta-tool: gitlab_repository, action file_history
  • Individual tool: gitlab_commit_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
allbooleannoRetrieve every commit from the whole repository (across all branches)
authorstringnoFilter by commit author name or email
first_parentbooleannoFollow only the first parent commit upon seeing a merge commit
order_bystringnoFor keyset pagination, the column to order results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
pathstringnoFile path to filter commits by (only commits touching this path)
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
ref_namestringnoBranch name, tag, or commit SHA to list commits from (default: default branch)
sincestringnoReturn commits after this date (ISO 8601 format, e.g. 2025-01-01T00:00:00Z)
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
trailersbooleannoParse and include Git trailers for every commit
untilstringnoReturn commits before this date (ISO 8601 format, e.g. 2025-12-31T23:59:59Z)
with_statsbooleannoInclude commit stats (additions, deletions, total)

Get a file’s metadata without content (HEAD request). Returns: file_name, file_path, size, encoding, ref, blob_id, commit_id, last_commit_id, execute_filemode, and content_sha256. See also: repository.file_get, repository.file_raw_metadata.

  • Meta-tool: gitlab_repository, action file_metadata
  • Individual tool: gitlab_file_metadata
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesURL-encoded full path of the file
project_idstring/integeryesProject ID or URL-encoded path
refstringnoBranch, tag, or commit SHA (defaults to default branch)

Get the raw content of a file from a repository. Returns: file_path, size, content, and content_category. See also: repository.file_get, repository.file_raw_metadata.

  • Meta-tool: gitlab_repository, action file_raw
  • Individual tool: gitlab_file_raw
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesURL-encoded full path of the file
project_idstring/integeryesProject ID or URL-encoded path
lfsbooleannoFetch the target of an LFS pointer instead of the pointer file itself
refstringnoBranch, tag, or commit SHA (defaults to default branch)

Get raw file metadata without content (HEAD request to the raw endpoint). Returns: file_name, file_path, size, encoding, ref, blob_id, commit_id, last_commit_id, execute_filemode, and content_sha256. See also: repository.file_raw, repository.file_metadata.

  • Meta-tool: gitlab_repository, action file_raw_metadata
  • Individual tool: gitlab_file_raw_metadata
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesURL-encoded full path of the file
project_idstring/integeryesProject ID or URL-encoded path
lfsbooleannoFetch the target of an LFS pointer instead of the pointer file itself
refstringnoBranch, tag, or commit SHA (defaults to default branch)

Update an existing file in a repository in a single commit. Returns: file_path, branch, commit_id, and last_commit_id. See also: repository.file_create, repository.file_get, repository.file_delete.

  • Meta-tool: gitlab_repository, action file_update
  • Individual tool: gitlab_file_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch to update the file on
commit_messagestringyesCommit message
contentstringyesNew file content
file_pathstringyesURL-encoded full path of the file to update
project_idstring/integeryesProject ID or URL-encoded path
author_emailstringnoCommit author email
author_namestringnoCommit author name
encodingstring (text, base64)noContent encoding: text or base64 (default: text)
execute_filemodebooleannoEnable execute permission on the file
last_commit_idstringnoLast known commit ID for optimistic locking
start_branchstringnoBranch to start from

List the Git submodules defined in a repository’s .gitmodules. Returns: each submodule’s name, path, remote url, resolved_project, and pinned commit_sha, plus a count. See also: repository.read_submodule_file, repository.update_submodule, repository.tree.

  • Meta-tool: gitlab_repository, action list_submodules
  • Individual tool: gitlab_list_repository_submodules
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
refstringnoBranch name, tag, or commit SHA (defaults to default branch)

Render arbitrary Markdown text to HTML using the GitLab Markdown API. Optionally apply GitLab Flavored Markdown and resolve references within a project’s context. Returns: the rendered HTML string. See also: repository.file_get, wiki.get.

  • Meta-tool: gitlab_repository, action markdown_render
  • Individual tool: gitlab_render_markdown
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
textstringyesMarkdown text to render
gfmbooleannoUse GitLab Flavored Markdown (default false)
projectstringnoProject path for resolving references (e.g. group/project)

Find the common ancestor (merge base) of two or more refs. Returns: the merge-base commit with metadata and web URL. See also: repository.compare, branch.list.

  • Meta-tool: gitlab_repository, action merge_base
  • Individual tool: gitlab_repository_merge_base
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
refsstring[]yesTwo or more branch names, tags, or commit SHAs to find the merge base of

Get the raw content of a git blob by SHA. Returns: blob SHA, byte size, decoded text content (or image data), and a content category (text/image/binary). See also: repository.blob, repository.tree.

  • Meta-tool: gitlab_repository, action raw_blob
  • Individual tool: gitlab_repository_raw_blob
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
shastringyesBlob SHA (from tree listing or commit diff)

Read a file from inside a submodule at the parent-pinned commit. Returns: file_name, file_path, submodule_path, resolved_project, commit_sha, size, decoded content, and encoding. See also: repository.list_submodules, repository.file_get, repository.update_submodule.

  • Meta-tool: gitlab_repository, action read_submodule_file
  • Individual tool: gitlab_read_repository_submodule_file
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
file_pathstringyesPath of the file inside the submodule (e.g. src/main.c)
project_idstring/integeryesProject ID or URL-encoded path of the parent repository
submodule_pathstringyesPath to the submodule as defined in .gitmodules (e.g. libs/core-module)
refstringnoBranch/tag/SHA in the parent repository (defaults to default branch)

List repository tree items. Returns: paths, object IDs, entry types (blob/tree/commit), modes, each entry’s last commit when with_last_commit is set, and pagination metadata. See also: repository.blob, repository.raw_blob, branch.list.

  • Meta-tool: gitlab_repository, action tree
  • Individual tool: gitlab_repository_tree
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order keyset-paginated results by: ‘id’, ‘name’, ‘path’, or ‘type’ (only used with pagination=‘keyset’)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
pathstringnoPath inside the repository to list (default: root)
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
recursivebooleannoList files recursively through subdirectories. Cannot be combined with with_last_commit
refstringnoBranch name, tag, or commit SHA (default: default branch)
sortstring (asc, desc)noSort direction for keyset pagination: ‘asc’ or ‘desc’ (only used with pagination=‘keyset’)
with_last_commitbooleannoInclude, as last_commit, the most recent commit that changed each entry (GitLab 19.3 or later, and an older instance ignores it). Cannot be combined with recursive

Update a submodule pointer to a new commit SHA on a branch. Returns: the created commit with id, short_id, title, author and committer details, dates, parent_ids, message, status, project_id, trailers, last_pipeline, and web_url. See also: repository.list_submodules, repository.read_submodule_file, repository.commit_get.

  • Meta-tool: gitlab_repository, action update_submodule
  • Individual tool: gitlab_update_repository_submodule
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch name to commit the update to
commit_shastringyesFull commit SHA to update the submodule to
project_idstring/integeryesProject ID or URL-encoded path
submodulestringyesURL-encoded full path to the submodule
commit_messagestringnoCustom commit message (optional)