# /bin/sh: ./gitlab-mcp-server: not found (Alpine/musl)

**TL;DR:** The binary is built for glibc; Alpine uses musl, so the loader is missing and the shell reports not found. Switch to a glibc-based image, or use the published ghcr.io image with --transport stdio. Do not chase the filename; the file is there, the dynamic linker is not.

## The error

```
/bin/sh: ./gitlab-mcp-server: not found
```

## Fix it

1. Confirm you are on Alpine or another musl-based distro.
   Expected: cat /etc/os-release shows Alpine.
2. Option A: switch your container base to a glibc distro (debian-slim works).
   Expected: The binary executes normally.
3. Option B: run the published ghcr.io image with --transport stdio instead of the local binary.
   Expected: The server starts over stdio without the musl problem.

## When this applies

The gitlab-mcp-server binary exists and is executable, but running it on Alpine prints not found. Common in minimal Docker images.

## When this does NOT apply

If the file truly does not exist, download it first. Permission denied is a chmod issue, not this one.

## Tool compatibility

jmrplens/gitlab-mcp-server, Alpine-based containers

## Also seen as

- gitlab-mcp-server not found Alpine
- gitlab MCP binary will not execute in docker
- musl gitlab-mcp-server

## Why it happens

The release binary is dynamically linked against glibc. On musl systems the expected loader path does not exist, and the kernel reports the file as not found, which the shell repeats verbatim.

## Edge cases

- Static builds would avoid this but are not published; use the image.
- The same failure hits any glibc binary on Alpine, a useful pattern to recognize.
- If you must stay on Alpine, install gcompat, but the glibc image is more reliable.