Skip to content

Repository storage moves

An administrator moves repositories between Gitaly storage shards with storage moves. For each of projects, groups and snippets these actions list every move, list the moves of one, read a move, schedule one, and schedule moves for every repository on a shard. Group moves are served from Premium.

  • “List the project storage moves in progress”
  • “Move project 42 to the storage2 shard”
  • “What is the state of group storage move 7?”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as storage_move.get_group, 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_storage_move with action set to the action’s name, such as get_group, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_get_group_storage_move, with its parameters as the arguments.

How many of these actions an instance serves at each tier, out of a total of 18:

  • Free: 12
  • Premium: 18
  • Ultimate: 18

Listed only for a token that carries admin_mode: the server removes the group from every surface for a token whose scopes it knows and that lacks it.

Read-only actions: 12 of 18, 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.

ActionTierIndividual
storage_move.get_groupPremiumgitlab_get_group_storage_move
storage_move.get_group_for_groupPremiumgitlab_get_group_storage_move_for_group
storage_move.get_projectFreegitlab_get_project_storage_move
storage_move.get_project_for_projectFreegitlab_get_project_storage_move_for_project
storage_move.get_snippetFreegitlab_get_snippet_storage_move
storage_move.get_snippet_for_snippetFreegitlab_get_snippet_storage_move_for_snippet
storage_move.retrieve_all_groupPremiumgitlab_retrieve_all_group_storage_moves
storage_move.retrieve_all_projectFreegitlab_retrieve_all_project_storage_moves
storage_move.retrieve_all_snippetFreegitlab_retrieve_all_snippet_storage_moves
storage_move.retrieve_groupPremiumgitlab_retrieve_group_storage_moves
storage_move.retrieve_projectFreegitlab_retrieve_project_storage_moves
storage_move.retrieve_snippetFreegitlab_retrieve_snippet_storage_moves
storage_move.schedule_all_groupPremiumgitlab_schedule_all_group_storage_moves
storage_move.schedule_all_projectFreegitlab_schedule_all_project_storage_moves
storage_move.schedule_all_snippetFreegitlab_schedule_all_snippet_storage_moves
storage_move.schedule_groupPremiumgitlab_schedule_group_storage_move
storage_move.schedule_projectFreegitlab_schedule_project_storage_move
storage_move.schedule_snippetFreegitlab_schedule_snippet_storage_move

Get a single group repository storage move by ID. Returns: the storage move with state, source and destination storage names, group reference, and creation time. See also: storage_move.retrieve_all_group, storage_move.get_group_for_group.

  • Meta-tool: gitlab_storage_move, action get_group
  • Individual tool: gitlab_get_group_storage_move
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idintegeryesNumeric ID of the storage move

Get a single repository storage move for a specific group. Returns: the storage move with state, source and destination storage names, group reference, and creation time. See also: storage_move.retrieve_group, storage_move.get_group.

  • Meta-tool: gitlab_storage_move, action get_group_for_group
  • Individual tool: gitlab_get_group_storage_move_for_group
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idintegeryesNumeric ID of the group
idintegeryesNumeric ID of the storage move

Get a single project repository storage move by its global move id. Returns: the move’s id, state, source and destination storage shards, and project. Admin-only and self-managed only. See also: storage_move.retrieve_all_project.

  • Meta-tool: gitlab_storage_move, action get_project
  • Individual tool: gitlab_get_project_storage_move
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idintegeryesNumeric ID of the storage move

Get a single repository storage move for a specific project by project_id and move id. Returns: the move’s id, state, source and destination storage shards, and project. Admin-only and self-managed only. See also: storage_move.retrieve_project.

  • Meta-tool: gitlab_storage_move, action get_project_for_project
  • Individual tool: gitlab_get_project_storage_move_for_project
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idintegeryesNumeric ID of the storage move
project_idintegeryesNumeric ID of the project

Get a single snippet repository storage move by its ID. Returns: the storage move with state, source and destination storage shards, and the associated snippet. See also: storage_move.retrieve_all_snippet, storage_move.get_snippet_for_snippet.

  • Meta-tool: gitlab_storage_move, action get_snippet
  • Individual tool: gitlab_get_snippet_storage_move
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idintegeryesNumeric ID of the storage move

Get a single repository storage move scoped to one snippet by snippet ID and move ID. Returns: the storage move with state, source and destination storage shards, and the associated snippet. See also: storage_move.retrieve_snippet, storage_move.get_snippet.

  • Meta-tool: gitlab_storage_move, action get_snippet_for_snippet
  • Individual tool: gitlab_get_snippet_storage_move_for_snippet
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
idintegeryesNumeric ID of the storage move
snippet_idintegeryesNumeric ID of the snippet

List all group repository storage moves across the instance. Returns: storage moves with state, source and destination storage names, group reference, creation time, and pagination metadata. See also: storage_move.retrieve_group, storage_move.get_group, storage_move.schedule_all_group.

  • Meta-tool: gitlab_storage_move, action retrieve_all_group
  • Individual tool: gitlab_retrieve_all_group_storage_moves
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
order_bystringnoColumn to order keyset-paginated results by (e.g. id). Only used when 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.
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 for keyset-paginated results: asc or desc. Only used when pagination=‘keyset’.

List all project repository storage moves on the instance. Returns: each move’s id, state, source and destination storage shards, and project. Admin-only and self-managed only. See also: storage_move.get_project, storage_move.schedule_all_project.

  • Meta-tool: gitlab_storage_move, action retrieve_all_project
  • Individual tool: gitlab_retrieve_all_project_storage_moves
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
order_bystringnoColumn to order keyset-paginated results by (e.g. id). Only applies when 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.
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 for keyset-paginated results: asc or desc. Only applies when pagination=‘keyset’.

List every snippet repository storage move on the instance with ordering and pagination. Returns: storage moves with state, source and destination storage shards, the associated snippet, and pagination metadata. See also: storage_move.get_snippet, storage_move.retrieve_snippet, storage_move.schedule_all_snippet.

  • Meta-tool: gitlab_storage_move, action retrieve_all_snippet
  • Individual tool: gitlab_retrieve_all_snippet_storage_moves
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
order_bystringnoField to order results by (for example ‘id’). Maps to the GitLab order_by query parameter.
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’. Maps to the GitLab sort query parameter.

List repository storage moves for a single group. Returns: the group’s storage moves with state, source and destination storage names, creation time, and pagination metadata. See also: storage_move.retrieve_all_group, storage_move.get_group_for_group, storage_move.schedule_group.

  • Meta-tool: gitlab_storage_move, action retrieve_group
  • Individual tool: gitlab_retrieve_group_storage_moves
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idintegeryesNumeric ID of the group
order_bystringnoColumn to order keyset-paginated results by (e.g. id). Only used when 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.
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 for keyset-paginated results: asc or desc. Only used when pagination=‘keyset’.

List repository storage moves for a single project. Returns: each move’s id, state, source and destination storage shards, and project. Admin-only and self-managed only. See also: storage_move.get_project_for_project, storage_move.schedule_project.

  • Meta-tool: gitlab_storage_move, action retrieve_project
  • Individual tool: gitlab_retrieve_project_storage_moves
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idintegeryesNumeric ID of the project
order_bystringnoColumn to order keyset-paginated results by (e.g. id). Only applies when 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.
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 for keyset-paginated results: asc or desc. Only applies when pagination=‘keyset’.

List repository storage moves for one snippet with ordering and pagination. Returns: storage moves scoped to the snippet with state, source and destination storage shards, and pagination metadata. See also: storage_move.get_snippet_for_snippet, storage_move.retrieve_all_snippet, storage_move.schedule_snippet.

  • Meta-tool: gitlab_storage_move, action retrieve_snippet
  • Individual tool: gitlab_retrieve_snippet_storage_moves
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
snippet_idintegeryesNumeric ID of the snippet
order_bystringnoField to order results by (for example ‘id’). Maps to the GitLab order_by query parameter.
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’. Maps to the GitLab sort query parameter.

Schedule repository storage moves for all groups on a source storage shard. Returns: a confirmation that the bulk move has been scheduled. See also: storage_move.retrieve_all_group, storage_move.schedule_group.

  • Meta-tool: gitlab_storage_move, action schedule_all_group
  • Individual tool: gitlab_schedule_all_group_storage_moves
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
destination_storage_namestringnoName of the destination storage shard
source_storage_namestringnoName of the source storage shard

Schedule repository storage moves for all projects on a Gitaly storage shard. Drains source_storage_name onto destination_storage_name. Returns: a confirmation message. Admin-only and self-managed only. See also: storage_move.retrieve_all_project, storage_move.schedule_project.

  • Meta-tool: gitlab_storage_move, action schedule_all_project
  • Individual tool: gitlab_schedule_all_project_storage_moves
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
destination_storage_namestringnoName of the destination storage shard
source_storage_namestringnoName of the source storage shard

Schedule repository storage moves for all snippets on a source Gitaly storage shard. Returns: a confirmation that the bulk move was scheduled. See also: storage_move.retrieve_all_snippet, storage_move.schedule_snippet.

  • Meta-tool: gitlab_storage_move, action schedule_all_snippet
  • Individual tool: gitlab_schedule_all_snippet_storage_moves
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
destination_storage_namestringnoName of the destination storage shard
source_storage_namestringnoName of the source storage shard

Schedule a repository storage move for a single group. Returns: the scheduled storage move with state, source and destination storage names, and group reference. See also: storage_move.retrieve_group, storage_move.get_group_for_group, storage_move.schedule_all_group.

  • Meta-tool: gitlab_storage_move, action schedule_group
  • Individual tool: gitlab_schedule_group_storage_move
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idintegeryesNumeric ID of the group
destination_storage_namestringnoName of the destination storage shard

Schedule a repository storage move for a single project to another Gitaly storage shard. Returns: the created move’s id, state, source and destination shards, and project. Admin-only and self-managed only. See also: storage_move.retrieve_project, storage_move.schedule_all_project.

  • Meta-tool: gitlab_storage_move, action schedule_project
  • Individual tool: gitlab_schedule_project_storage_move
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
project_idintegeryesNumeric ID of the project
destination_storage_namestringnoName of the destination storage shard

Schedule a repository storage move for one snippet to a destination Gitaly storage shard. Returns: the scheduled storage move with its initial state and the associated snippet. See also: storage_move.retrieve_snippet, storage_move.get_snippet_for_snippet, storage_move.schedule_all_snippet.

  • Meta-tool: gitlab_storage_move, action schedule_snippet
  • Individual tool: gitlab_schedule_snippet_storage_move
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
snippet_idintegeryesNumeric ID of the snippet
destination_storage_namestringnoName of the destination storage shard