Runner
gitlab_runnerManage GitLab CI/CD runners and runner controllers: register, update, list, assign tokens, and control scopes across instance, group, and project levels.
Instructions
Example: {"action":"controller_create","params":{...}} For the params schema of any action, read the MCP resource gitlab://schema/meta/gitlab_runner/.
Manage GitLab CI/CD runners (instance, group, project) and runner controllers (admin, experimental): CRUD, registration tokens, and job assignments. Remove/delete/revoke and reset_token actions are destructive — revoking the registration token only invalidates future registrations; already-registered runners keep operating using their existing runner authentication tokens. Valid actions: controller_create, controller_delete, controller_get, controller_list, controller_scope_add_instance, controller_scope_add_runner, controller_scope_list, controller_scope_remove_instance, controller_scope_remove_runner, controller_token_create, controller_token_get, controller_token_list, controller_token_revoke, controller_token_rotate, controller_update, delete_by_token, delete_registered, disable_project, enable_project, get, jobs, list, list_all, list_group, list_managers, list_project, register, remove, reset_group_reg_token, reset_instance_reg_token, reset_project_reg_token, reset_token, update, verify
When to use: register or pause runners, change runner tags / access_level / maximum_timeout, attach or detach runners from a project / group, rotate registration tokens, drive runner controllers (CRUD + scopes + tokens) for admins. NOT for: pipeline runs (use gitlab_pipeline), job logs / retry / play (use gitlab_job), CI variables (use gitlab_ci_variable), CI lint or templates (use gitlab_template), self-hosted GitLab Runner installation (out of scope — install via the GitLab Runner CLI).
Returns:
list / list_all / list_project / list_group / list_managers / jobs / controller_list / controller_scope_list / controller_token_list: arrays with pagination {page, per_page, total, next_page}.
get / update / register / reset_token / enable_project / controller_get / controller_create / controller_update / controller_scope_add / controller_token_get / controller_token_create / controller_token_rotate: runner / controller / token object. register and reset_*_token / controller_token_create / controller_token_rotate include the cleartext token only ONCE — store it securely.
verify / remove / delete_registered / delete_by_token / disable_project / controller_delete / controller_scope_remove_* / controller_token_revoke: {success, message}. Errors: 401/403 (hint: list_all / register with admin token / runner controller actions require admin), 404 (hint: runner_id and controller_id are global, project / group context only filters), 400 (hint: access_level ∈ not_protected / ref_protected; tag_list is a comma-separated string; deprecated reset_*_reg_token endpoints — prefer controller_token_create).
Param conventions: * = required. List actions accept page, per_page. Runner IDs are integers.
Runner CRUD:
list: type, status, paused, tag_list (comma-separated)
list_all: (admin) type, status, paused, tag_list
get / remove: runner_id*
update: runner_id*, description, paused, tag_list, run_untagged, locked, access_level, maximum_timeout, maintenance_note
jobs: runner_id*, status (running/success/failed/canceled), order_by, sort, page, per_page
Project/Group runners:
list_project: project_id*, type, status, tag_list
enable_project: project_id*, runner_id*
disable_project: project_id*, runner_id*
list_group: group_id*, type, status, tag_list
Registration and tokens:
register: token*, description, paused, locked, run_untagged, tag_list, access_level, maximum_timeout, maintenance_note
delete_registered: runner_id*
delete_by_token: token*
verify: token*
reset_token: runner_id*
reset_instance_reg_token: (deprecated, no params)
reset_group_reg_token: group_id* (deprecated)
reset_project_reg_token: project_id* (deprecated)
list_managers: runner_id*
Runner controllers (admin, experimental):
controller_list
controller_get / controller_delete: controller_id*
controller_create: description, state (enabled/disabled/dry_run)
controller_update: controller_id*, description, state
Controller scopes:
controller_scope_list / controller_scope_add_instance / controller_scope_remove_instance: controller_id*
controller_scope_add_runner / controller_scope_remove_runner: controller_id*, runner_id*
Controller tokens:
controller_token_list: controller_id*
controller_token_get / controller_token_rotate / controller_token_revoke: controller_id*, token_id*
controller_token_create: controller_id*, description
See also: gitlab_pipeline, gitlab_job
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform. Pick exactly one of the values in `enum`. Each action expects its own `params` object — see the tool description for the per-action parameter list. | |
| params | No | Action-specific parameters as a JSON object. Required and optional fields differ per action; consult this tool's description for the chosen action. Send only the fields documented for that action — unknown keys are rejected with a validation error (only reserved meta keys like `confirm` are stripped before validation). For the JSON Schema of a specific action's `params`, read the MCP resource `gitlab://schema/meta/{tool}/{action}` (replace placeholders with the tool name and the chosen action). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| next_steps | No | Optional. Suggested follow-up actions or tool calls for the LLM, contextual to the result. | |
| pagination | No | Present on list actions. Use `has_more` and `next_page` to paginate through results. |