---
title: Docker
slug: litmus-mcp-server/docker
docTags: 
createdAt: 2026-05-11T21:39:05.636Z
---

The official image is published to GitHub Container Registry:

```javascript
ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## SSE-only (MCP server, no Web UI)

The simplest deployment runs only the MCP server on port `8000`:

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

The SSE endpoint is at `http://localhost:8000/sse` and a health check is at `http://localhost:8000/health`.

## With the Web UI

Expose port `9000` and provide at least one LLM API key:

```bash
docker run -d --name litmus-mcp-server \
  -p 8000:8000 -p 9000:9000 \
  -e ANTHROPIC_API_KEY=<key> \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

Open `http://localhost:9000` in your browser. See [Web UI](#) for what's available there.

You can also enter the API key later from the Web UI's setup screen - start without `-e` if you prefer.

## ARM64 (Apple Silicon and others)

The image is built for `linux/amd64`. On ARM64 hosts, pin the platform:

```bash
docker run -d --name litmus-mcp-server \
  --platform linux/amd64 \
  -p 8000:8000 \
  ghcr.io/litmusautomation/litmus-mcp-server:latest
```

## Splitting Web UI and MCP server across hosts

If you deploy the Web UI on one host and the MCP server on another, point the Web UI at the server:

```bash
-e MCP_SSE_URL=http://<mcp-server-host>:8000/sse
```

## Environment variables

| Variable            | Default                     | Purpose                                         |
| ------------------- | --------------------------- | ----------------------------------------------- |
| `ANTHROPIC_API_KEY` | unset                       | Anthropic Claude API key (Web UI).              |
| `OPENAI_API_KEY`    | unset                       | OpenAI API key (Web UI).                        |
| `GEMINI_API_KEY`    | unset                       | Gemini API key (Web UI).                        |
| `MCP_SSE_URL`       | `http://localhost:8000/sse` | Where the Web UI looks for the MCP server.      |
| `ENABLE_STDIO`      | `false`                     | Set `true` for STDIO mode. See [STDIO Mode](#). |

LLM keys are persisted to `/app/.env` once entered through the Web UI, so you typically only need to pass them once.

## Docker Compose

```yaml
services:
  litmus-mcp-server:
    image: ghcr.io/litmusautomation/litmus-mcp-server:latest
    ports:
      - "8000:8000"
      - "9000:9000"
    environment:
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
    volumes:
      - /opt/litmus-mcp/.env:/app/.env
```

The volume mount is recommended; see [Persistent Configuration](#).

## Next

- [Persistent Configuration](#) - keep settings across container replacement.
- [Clients](#) - wire an MCP client into the running server.
- [Headers Reference](#) - what to send with each request.
