Skip to content

Docker

The project publishes a Debian slim based MCP server image to GitHub Container Registry:

ghcr.io/mnbro/listmonk-mcp-bridge:latest

The image runs as a non-root user and starts the MCP server over stdio. It does not contain credentials or a Listmonk instance.

Run

Pass credentials as environment variables. Prefer inheriting secrets from the host or your secret manager instead of writing secret values directly into shell history.

docker run --rm -i \
  --env LISTMONK_MCP_URL=https://listmonk.example.com \
  --env LISTMONK_MCP_USERNAME \
  --env LISTMONK_MCP_PASSWORD \
  ghcr.io/mnbro/listmonk-mcp-bridge:latest

MCP Client Config

{
  "mcpServers": {
    "listmonk-mcp-bridge": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env",
        "LISTMONK_MCP_URL=https://listmonk.example.com",
        "--env",
        "LISTMONK_MCP_USERNAME",
        "--env",
        "LISTMONK_MCP_PASSWORD",
        "ghcr.io/mnbro/listmonk-mcp-bridge:latest"
      ]
    }
  }
}

Build Locally

docker build -t listmonk-mcp-bridge:local .

Use :latest for the current master build or :vX.Y.Z for a release. The :sha-... tags identify the source commit; pin an image digest (@sha256:...) when you need immutable image contents.

Automatic Security Rebuilds

The existing Container workflow rebuilds :latest and :master every day at 05:43 UTC, as well as after code changes. Each build pulls the current python:3.13-slim-bookworm image and refreshes Debian packages in an uncached base stage shared by the builder and runtime. This picks up published Debian fixes even before the Python image maintainers rebuild their image.

The build checks the installed command as the non-root runtime user before publishing. Scheduled and manual rebuilds also get a :rebuild-<run-id>-<attempt> tag; they do not overwrite existing release or commit tags. GitHub schedules can be delayed, so use Run workflow on Container when an urgent rebuild is needed.

Pull the refreshed image and recreate your container to apply the fixes to an existing installation. Running containers do not update themselves.

Running Listmonk

This image contains only the MCP server. If you need a local Listmonk instance for development, see Listmonk Docker Setup.