Usage Examples
This is a quick reference of natural language prompts you can use with any AI assistant connected to GitLab MCP Server, grouped by domain. Type the prompt in plain English and the server translates it into the right GitLab API operation automatically. The tabs below show which catalog action each prompt maps to: the action you would pass to gitlab_execute_action on the default dynamic surface, which is also the matching domain meta-tool’s action when GITLAB_MCP_TOOL_SURFACE=meta. They cover project management, code review, CI/CD, releases, and search.
List your projects
Section titled “List your projects”Prompt: “Show me my GitLab projects”
The assistant runs project.list (gitlab_project with action: list when GITLAB_MCP_TOOL_SURFACE=meta), returning project names, descriptions, and URLs.
Create an issue
Section titled “Create an issue”Prompt: “Create a bug report in my-group/my-project titled ‘Login page returns 404 after password reset’ with labels bug and priority::high”
The assistant runs issue.create (gitlab_issue with action: create on the meta surface), setting the title, description, labels, and project in a single operation.
Manage labels
Section titled “Manage labels”Prompt: “List all labels in the frontend project and create a new label called ‘accessibility’ with color #0052CC”
The assistant first runs project.label_list to show existing labels, then project.label_create to add the new one (gitlab_project with action: label_list and action: label_create on the meta surface).
Track milestones
Section titled “Track milestones”Prompt: “Show me the progress on the Sprint 14 milestone in my-project”
The assistant runs project.milestone_get (gitlab_project with action: milestone_get on the meta surface), returning the milestone’s state, dates and web URL, and project.milestone_issues for the issues still open in it.
List open merge requests
Section titled “List open merge requests”Prompt: “Show me all open merge requests assigned to me”
The assistant runs merge_request.list (gitlab_merge_request with action: list on the meta surface), filtering by assignee and state.
Check pipeline status
Section titled “Check pipeline status”Prompt: “What’s the status of the latest pipeline in my-project?”
The assistant runs pipeline.latest (gitlab_pipeline with action: latest on the meta surface), returning the most recent pipeline’s status, ref, duration, and web URL.
Create a release
Section titled “Create a release”Prompt: “Create release v2.1.0 from tag v2.1.0 in my-project with release notes about the login fix and performance improvements”
The assistant runs release.create (gitlab_release with action: create on the meta surface), associating the release with the tag and setting the description.
Search Code
Section titled “Search Code”Prompt: “Search for usages of the deprecated authenticateUser function across all my projects”
The assistant runs search.code (gitlab_search with action: code on the meta surface), searching across projects for the specified code pattern.
Manage members
Section titled “Manage members”Prompt: “List all members of the frontend project and their access levels”
The assistant runs project.members (gitlab_project with action: members on the meta surface), returning team members with their roles and permissions.
Dynamic-first tool flow
Section titled “Dynamic-first tool flow”Dynamic mode is the default, so the prompts above never name a tool directly. The assistant first discovers the action and its schema with gitlab_find_action, then runs it with gitlab_execute_action using a canonical domain.action ID:
gitlab_find_action → query: "list open merge requests"gitlab_execute_action → action: "merge_request.list", params: { project_id: "42", state: "opened" }When a pipeline fails, the same flow chains two actions — find the failing jobs, then read one job’s log:
gitlab_find_action → query: "list failed jobs in a pipeline"gitlab_execute_action → action: "job.list", params: { project_id: "42", pipeline_id: 8847, scope: ["failed"] }gitlab_execute_action → action: "job.trace", params: { project_id: "42", job_id: 501 }Frequently asked questions
What can I ask an AI assistant to do with GitLab MCP Server?
Anything the GitLab REST v4 and GraphQL APIs expose — 865 operations on Community Edition and up to 1,091 on GitLab.com. In practice that means listing and creating projects and issues, reviewing merge requests, checking and retrying pipelines, cutting releases, managing labels and milestones, searching code across a group, and administering members. You phrase the request in natural language and the server resolves it to one canonical GitLab action.
Do I need to know the tool names to use GitLab MCP Server?
No. In the default dynamic surface you describe what you want and the assistant calls gitlab_find_action to locate the matching action and its exact schema, then gitlab_execute_action to run it. Tool names such as gitlab_issue only become visible if you switch to GITLAB_MCP_TOOL_SURFACE=meta or GITLAB_MCP_TOOL_SURFACE=individual, which trade startup context for a browsable tool list.
How do I tell the assistant which GitLab project to use?
Pass the project path in project_id, in group/project form — for example my-group/backend. Numeric project IDs work too. If you are working inside a checked-out repository, the project discovery action maps the git remote URL to the right GitLab project so you do not have to state it at all: discover_project.resolve through gitlab_execute_action on the default surface, or the standalone gitlab_discover_project tool with GITLAB_MCP_TOOL_SURFACE=meta or individual.
Will an AI assistant change my GitLab data without asking?
Not without a safeguard being turned off. Destructive actions require explicit confirmation before they execute, GITLAB_MCP_READ_ONLY=true removes every mutating action from the catalog entirely, and GITLAB_MCP_SAFE_MODE=true intercepts mutations and returns a JSON preview of what would happen instead of applying it. Read operations such as listing and searching are always safe.