Windows (winget)
The package is jmrplens.gitlab-mcp-server in the community repository, microsoft/winget-pkgs. It is a portable package: the installer is the release executable itself, with no setup program, so winget copies it into its packages folder and creates a gitlab-mcp-server alias on your PATH. The x64 installer is gitlab-mcp-server-windows-amd64.exe and the arm64 one gitlab-mcp-server-windows-arm64.exe, both downloaded from the GitHub Release, and the SHA-256 values in the manifest are the entries in that release’s checksums.txt, so what winget installs is byte for byte the release asset.
Install
Section titled “Install”winget install --id jmrplens.gitlab-mcp-server -e-e asks for an exact match on the identifier. winget picks the installer for your architecture, verifies its hash, copies it into place and registers the package in Apps & Features.
Where it lands
Section titled “Where it lands”- Executable: a per-package folder under
%LOCALAPPDATA%\Microsoft\WinGet\Packages\for the default user scope, or%PROGRAMFILES%\WinGet\Packages\with--scope machine. - Alias: a link named after the manifest’s command,
gitlab-mcp-server, in%LOCALAPPDATA%\Microsoft\WinGet\Links\(user) or%PROGRAMFILES%\WinGet\Links\(machine). winget appends thatLinksfolder to PATH if it is not there yet, which is what makes the command available everywhere.winget install --rename <name>(-r) picks a different alias.
Verify
Section titled “Verify”winget show --id jmrplens.gitlab-mcp-server -ewinget list --id jmrplens.gitlab-mcp-server -egitlab-mcp-server --versionwinget show prints the package metadata and the installer winget selected for this machine, including its URL and SHA-256, which you can compare with checksums.txt on the release page; --versions lists every version published to winget. winget list prints the installed version and, when winget knows a newer one, an Available column (--upgrade-available filters on that). gitlab-mcp-server --version answers gitlab-mcp-server 2.7.5 (commit: <commit>) for the current release.
The description winget prints is package metadata carried forward between submissions and can lag behind the software; treat this page and the repository README as the reference for what the binary does.
Version lag versus GitHub Releases
Section titled “Version lag versus GitHub Releases”Publishing to winget is a pull request. The release workflow opens one against microsoft/winget-pkgs with the new manifests (through winget-releaser, right after the GitHub release is out), and Microsoft’s validation pipeline and moderators check and merge it. Until that merge, winget upgrade does not know the new version, even though the GitHub Release, Homebrew, npm, PyPI, NuGet and the container images already have it. That submission step is also allowed to fail without failing the release, so a version can miss winget entirely: 2.7.2 never landed there, while 2.7.5, the current release, is published. If you need a version winget does not have yet, the install script or a direct download gets it right away; just do not keep both copies on PATH.
Configure your client
Section titled “Configure your client”The alias is on PATH, so the bare command works once your client has been restarted:
{ "mcpServers": { "gitlab": { "command": "gitlab-mcp-server", "env": { "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx" } } }}If a client still cannot find it, use the full path that (Get-Command gitlab-mcp-server).Source prints, with the backslashes doubled in JSON. Add "GITLAB_URL": "https://gitlab.example.com" to env for a self-managed instance. With Claude Code the step is claude mcp add gitlab -- gitlab-mcp-server, unchanged from every other channel, and the token goes in %USERPROFILE%\.gitlab-mcp-server.env (the ~/.gitlab-mcp-server.env of the other pages) rather than on that command line:
Set-Content -Path "$env:USERPROFILE\.gitlab-mcp-server.env" -Value 'GITLAB_TOKEN=glpat-xxxx'claude mcp add gitlab -- gitlab-mcp-serverThe per-client tabs are on the Quick Start.
Upgrade and uninstall
Section titled “Upgrade and uninstall”winget manages upgrades; the binary never updates itself.
winget upgrade --id jmrplens.gitlab-mcp-server -eupdate is an alias of upgrade. For a portable package, winget downloads the new executable to a temporary location and replaces the existing file, then updates the alias and the Apps & Features entry. If the executable is in use, winget reports that the application is running and stops, so close your MCP client and run the upgrade again; --force only overrides the modified-file check on a portable package and terminates nothing.
winget uninstall --id jmrplens.gitlab-mcp-server -eremove and rm are aliases. Uninstalling removes the executable, its alias and the Apps & Features entry, and deletes the package folder if it is empty; --purge deletes everything in that folder, --preserve keeps files the package created. Both flags apply to portable packages only. Remove the gitlab entry from your client’s configuration afterwards.