Run the gitaiflow MCP server in Docker and connect it to the Claude Desktop Client over stdio, for environments that cannot run the native binary or the packaged extension.
gitaiflow is a private repository, so this path is for repo collaborators, not a general public install. If you don’t have access, use the Claude Desktop Extension instead — or request access.
Most Claude Desktop Client users should install the Claude Desktop Extension instead.
git clone https://gitlab.com/codefleet-labs/gitaiflow.gitcd gitaiflow
docker build --no-cache -f Dockerfile.mcp -t gitaiflow-mcp:local .
docker run --rm -i \--env-file .mcp.env \-e MCP_TRANSPORT=stdio \-e MCP_WORKSPACE=/workspace \-e MCP_ALLOWED_WORKSPACES=/workspace \-e GITAIFLOW_BINARY=/app/bin/gitaiflow \-v "$HOME/.gitaiflow:/root/.gitaiflow" \-v "$MCP_HOST_WORKSPACE:/workspace" \-v "/path/to/gitaiflow-linux-arm64:/app/bin/gitaiflow:ro" \gitaiflow-mcp:local
{"mcpServers": {"gitaiflow-mcp": {"command": "docker","args": ["run", "-i", "--rm","--env-file", "/absolute/path/to/gitaiflow/.mcp.env","-e", "MCP_TRANSPORT=stdio","-e", "MCP_WORKSPACE=/workspace","-e", "MCP_ALLOWED_WORKSPACES=/workspace","-e", "GITAIFLOW_BINARY=/app/bin/gitaiflow","-v", "/absolute/path/to/home/.gitaiflow:/root/.gitaiflow","-v", "/absolute/path/to/parent-workspace:/workspace","-v", "/absolute/path/to/gitaiflow-linux-arm64:/app/bin/gitaiflow:ro","gitaiflow-mcp:local"]}}}
Claude Desktop uses stdio, so there is no port mapping — the command above is spawned directly by Claude Desktop, the same way it would spawn a native binary.
AI settings still come from ~/.gitaiflow/config.env, mounted into the container exactly as in the Docker MCP setup.
Replace every absolute path with paths on your machine. The /workspace mount must be the parent workspace, not a single repository, if you want to select several repositories by name. Use gitaiflow-linux-amd64 on x86_64.
The Docker mount at /workspace, together with MCP_ALLOWED_WORKSPACES, identifies the parent workspace. The tool path argument selects one Git repository inside it, and the selected directory must itself be a Git repository root.
/workspace — one -v flag, not one per repository. For example, -v "/Users/<user>/projects:/workspace" if projects/ holds paperclip/, VoiceStudio/, and issuetracker/, each with its own .git.paperclip resolves to /workspace/paperclip.