Skip to content

Releases

A release wraps a tag with its notes, milestones and downloadable assets. These actions list releases, read one or the latest, create one (for an existing tag or a new one from a ref), update and delete one, and manage the asset links of a release, one at a time or as a batch after a build. Deleting a release keeps its tag.

  • “List the releases of project 42”
  • “Create release v2.0.0 with the changelog as notes”
  • “Attach the build artifacts to release v2.0.0”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as release.create, 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_release with action set to the action’s name, such as create, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_release_create, with its parameters as the arguments.

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

Read-only actions: 5 of 12, 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
release.creategitlab_release_create
release.deletegitlab_release_delete
release.getgitlab_release_get
release.get_latestgitlab_release_latest
release.link_creategitlab_release_link_create
release.link_create_batchgitlab_release_link_create_batch
release.link_deletegitlab_release_link_delete
release.link_getgitlab_release_link_get
release.link_listgitlab_release_link_list
release.link_updategitlab_release_link_update
release.listgitlab_release_list
release.updategitlab_release_update

Create a release for a tag, optionally creating the tag from a ref and attaching asset links. Returns: the created release with author, commit, assets, milestones, and _links. See also: release.update, release.link_create, tag.create.

  • Meta-tool: gitlab_release, action create
  • Individual tool: gitlab_release_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name associated with the release
assetsobjectnoAsset links to attach to the release at creation time
descriptionstringnoRelease notes (Markdown supported)
milestonesstring[]noMilestone titles to associate with the release
namestringnoRelease title
refstringnoBranch or commit SHA to create tag from when tag_name does not exist. Include this when the prompt says ref/from ref
released_atstringnoDate of the release in ISO 8601 format
tag_messagestringnoMessage to use for the annotated tag (creates annotated tag instead of lightweight)

Delete a release by tag_name (the Git tag itself is preserved). Returns: the deleted release details. See also: release.get, release.list, tag.delete.

  • Meta-tool: gitlab_release, action delete
  • Individual tool: gitlab_release_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release to delete

Get a single release by project_id and tag_name. Returns: release notes, author, commit, assets, milestones, evidences, and _links. See also: release.list, release.update, release.delete, release.link_list.

  • Meta-tool: gitlab_release, action get
  • Individual tool: gitlab_release_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release

Get the most recent release for a project. Returns: release notes, author, commit, assets, milestones, evidences, and _links. See also: release.list, release.get, release.create.

  • Meta-tool: gitlab_release, action get_latest
  • Individual tool: gitlab_release_latest
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path

Create a single release asset link. Returns: the created link with id, name, url, direct_asset_url, and link_type. See also: release.link_create_batch, release.link_list, release.link_update.

  • Meta-tool: gitlab_release, action link_create
  • Individual tool: gitlab_release_link_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
namestringyesName of the link
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release
urlstringyesAbsolute http, https, or ftp URL of the link target. Do not use local file paths or relative paths.
direct_asset_pathstringnoOptional path for a direct asset link relative to the release: redirects to url. Use instead of the deprecated filepath.
filepathstringnoDeprecated alias of direct_asset_path. Prefer direct_asset_path.
link_typestring (other, runbook, image, package)noType of the release link: other, runbook, image, or package.

Create multiple release asset links in one call. Returns: the created links (id, name, url, direct_asset_url, link_type) and any failed entries. See also: release.link_create, release.link_list, package.publish.

  • Meta-tool: gitlab_release, action link_create_batch
  • Individual tool: gitlab_release_link_create_batch
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
linksobject[]yesArray of release asset links. Each item supports name, url, link_type, direct_asset_path, and the deprecated filepath.
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release

Delete a release asset link by link_id. Returns: the deleted link with id, name, url, direct_asset_url, and link_type. See also: release.link_get, release.link_list.

  • Meta-tool: gitlab_release, action link_delete
  • Individual tool: gitlab_release_link_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
link_idintegeryesID of the release link to delete
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release

Get one release asset link by link_id. Returns: the link with id, name, url, direct_asset_url, and link_type. See also: release.link_list, release.link_update, release.link_delete.

  • Meta-tool: gitlab_release, action link_get
  • Individual tool: gitlab_release_link_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
link_idintegeryesID of the release link
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release

List asset links for a release with offset or keyset pagination. Returns: matching links (id, name, url, direct_asset_url, link_type) and pagination metadata. See also: release.link_get, release.link_create, release.link_create_batch.

  • Meta-tool: gitlab_release, action link_list
  • Individual tool: gitlab_release_link_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release
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 an existing release asset link by link_id. Returns: the updated link with id, name, url, direct_asset_url, and link_type. See also: release.link_get, release.link_list, release.link_delete.

  • Meta-tool: gitlab_release, action link_update
  • Individual tool: gitlab_release_link_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
link_idintegeryesID of the release link to update
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release
direct_asset_pathstringnoNew direct asset path for the link
filepathstringnoNew filepath for a direct asset link
link_typestring (other, runbook, image, package)noType of the release link: other, runbook, image, or package.
namestringnoNew name of the link
urlstringnoAbsolute http, https, or ftp URL of the link target. Do not use local file paths or relative paths.

List releases in a project with pagination. Returns: tag names, release names, release dates, and summary metadata. See also: release.get, tag.list, release.link_list.

  • Meta-tool: gitlab_release, action list
  • Individual tool: gitlab_release_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
include_html_descriptionbooleannoInclude the description_html field rendered from the Markdown description
order_bystring (released_at, created_at)noOrder by field: released_at (default) or created_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, desc)

Update an existing release’s title, notes, release date, or milestones. Returns: the updated release with author, commit, assets, milestones, and _links. See also: release.get, release.create, release.delete.

  • Meta-tool: gitlab_release, action update
  • Individual tool: gitlab_release_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
tag_namestringyesTag name of the release
descriptionstringnoUpdated release notes
milestonesstring[]noMilestone titles to associate with the release
namestringnoNew release title
released_atstringnoNew release date in ISO 8601 format