gitlab_find_actionLABSCO SUMMARY
The default surface is two tools, and that is the whole design argument.
Registering a thousand GitLab operations would cost more context than most sessions have. Dynamic mode shows the model two tools — find an action, execute it — and keeps 851 actions on Free and Community Edition reachable behind them, measured at 1,504 tokens of tool schema. Setting CAPABILITY_SURFACE to minimal drops the shared resources and prompts as well, taking the startup footprint from 9,204 tokens to 1,678. Move to the meta or individual surfaces only when you specifically want dispatchers or a flat catalog; the counts scale with your GitLab tier, so a Free instance simply has fewer actions available.
What it is
A Go server covering GitLab's REST and GraphQL APIs across more than a thousand operations, presented in whichever of three tool shapes suits your client.
What you get
- The dynamic surface, on by default: two visible tools, gitlab_find_action and gitlab_execute_action, reaching the full action catalog on demand
- A meta surface of domain dispatchers — gitlab_project, gitlab_merge_request, gitlab_pipeline, gitlab_job, gitlab_user, gitlab_group, gitlab_wiki, gitlab_tag, gitlab_ci_variable, gitlab_access and more — each taking an action parameter
- An individual surface that registers one MCP tool per GitLab operation, for clients with room for it
- gitlab_mr_review for merge request review, and gitlab_discover_project for finding your way into an unfamiliar project
- gitlab_orbit with its query, schema, tools and DSL companions, for GraphQL work
- Resources, prompt templates, completions for projects, users, groups, branches and tags, and interactive creation wizards
- Self-managed instances through GITLAB_URL, including skipping TLS verification for a self-signed certificate
Requirements
A GitLab Personal Access Token in GITLAB_TOKEN; GITLAB_URL only if you are not on gitlab.com. Ships as a static binary for Windows, Linux and macOS on amd64 and arm64, or as a container image. TOOL_SURFACE picks the shape, CAPABILITY_SURFACE trims resources and prompts, and which actions exist depends on your GitLab edition.
Setup effort
One command plus a key — claude mcp add gitlab --env GITLAB_TOKEN=<YOUR_GITLAB_TOKEN> -- gitlab-mcp-server
USE CASES
Deciding whether a merge request is safe to merge
Ask about it by number and get the review work done against the diff and its pipeline status.
Working out why the last pipeline failed
Read the pipeline and the failing job without switching to the GitLab UI.
Triaging what is open and assigned to you
The dynamic surface finds the right action and runs it, so you do not have to know the tool name.
Drafting release notes between two tags
Pull what changed across the range and turn it into notes in the same conversation.
Keeping the startup context small on a big instance
Leave the dynamic surface on and set the capability surface to minimal — two tools and no preloaded resources.
Asking something the REST API answers badly
Go through the GraphQL path, with the schema and DSL helpers available for building the query.
40 tools
Listed in project docs. Your client may show a different list.
gitlab_execute_actiongitlab_projectgitlab_branchgitlab_taggitlab_releasegitlab_merge_requestgitlab_mr_reviewgitlab_repositorygitlab_groupgitlab_issuegitlab_pipelinegitlab_jobgitlab_usergitlab_wikigitlab_environmentgitlab_ci_variablegitlab_templategitlab_admingitlab_accessgitlab_packagegitlab_snippetgitlab_feature_flagsgitlab_model_registrygitlab_ci_cataloggitlab_custom_emojigitlab_searchgitlab_runnergitlab_discover_projectgitlab_interactive_issue_creategitlab_interactive_mr_creategitlab_interactive_project_creategitlab_interactive_release_creategitlab_orbitgitlab_orbit_statusgitlab_orbit_schemagitlab_orbit_toolsgitlab_orbit_dslgitlab_orbit_querygitlab_orbit_graph_statusBEFORE YOU INSTALL
What to know first
Tools you get
40 tools named in the project's documentation.
Requires
GITLAB_TOKEN in your environment
Where it runs
All 3 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Setup
macOS/Linux (Homebrew)
brew install jmrplens/tap/gitlab-mcp-serverLinux/macOS (script)
curl -fsSL https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.sh | shWindows (winget)
winget install --id jmrplens.gitlab-mcp-server -eWindows (PowerShell)
irm https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.ps1 | iexclaude mcp add
claude mcp add gitlab --env GITLAB_TOKEN=<YOUR_GITLAB_TOKEN> -- gitlab-mcp-serverMCP Clients
Claude Desktop, Cursor
{
"mcpServers": {
"gitlab": {
"command": "<YOUR_PATH_TO_GITLAB_MCP_SERVER>",
"env": {
"GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>"
}
}
}
}VS Code
{
"servers": {
"gitlab": {
"type": "stdio",
"command": "<YOUR_PATH_TO_GITLAB_MCP_SERVER>",
"env": {
"GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>"
}
}
}
}