Feature Flags
gitlab_feature_flagsManage project feature flags and feature-flag user lists for gradual rollouts. Supports strategies like gradual rollout, user targeting, and environment scoping. Create, update, list, get, or delete flags and user lists.
Instructions
Example: {"action":"feature_flag_create","params":{...}} For the params schema of any action, read the MCP resource gitlab://schema/meta/gitlab_feature_flags/.
Manage project feature flags and feature-flag user lists for gradual rollouts. Delete is destructive; setting active=false disables the flag but preserves history.
When to use: define rollout strategies (percentage, user-targeted, environment-scoped) for a project's feature flags, and manage the user lists referenced by gitlabUserList strategies.
NOT for: GitLab instance-level feature flags (admin only — use gitlab_admin), environment definitions or protection (use gitlab_environment), code branching (use gitlab_branch), CI/CD variables (use gitlab_ci_variable).
Returns:
*_list: array with pagination (page, per_page, total, next_page).
*_get / *_create / *_update: the resource object (flag includes strategies and scopes; user list includes user_xids).
*_delete: {success: bool, message: string}. Errors: 404 not found, 403 forbidden (hint: requires Developer+ role), 400 invalid params (hint: strategies/scopes JSON shape).
Param conventions: * = required. All actions need project_id*. version = new_version_flag (legacy legacy_flag deprecated).
strategies shape: [{name, parameters, scopes: [{environment_scope}]}] where name ∈ {default, gradualRolloutUserId, userWithId, flexibleRollout, gitlabUserList}. parameters per strategy: gradualRolloutUserId={groupId, percentage}; userWithId={userIds}; flexibleRollout={groupId, rollout, stickiness}; gitlabUserList={userListId}.
Feature flags (feature_flag_*):
feature_flag_list: project_id*, scope (enabled/disabled), page, per_page
feature_flag_get / feature_flag_delete: project_id*, name*
feature_flag_create: project_id*, name*, version*, description, active (bool), strategies
feature_flag_update: project_id*, name*, description, active (bool), strategies
User lists (ff_user_list_*) — named sets of user IDs referenced by gitlabUserList strategies:
ff_user_list_list: project_id*, page, per_page
ff_user_list_get / ff_user_list_delete: project_id*, user_list_iid*
ff_user_list_create: project_id*, name*, user_xids* (comma-separated user IDs)
ff_user_list_update: project_id*, user_list_iid*, name, user_xids
See also: gitlab_environment (environment scopes referenced by strategies), gitlab_admin (instance-level feature flags), gitlab_project (project membership and settings).
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. |