FROM python:3.13-slim # System dependencies for uv and potential wheel builds RUN apt-get update && \ apt-get install -y --no-install-recommends git ca-certificates curl && \ rm -rf /var/lib/apt/lists/* # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # Clone the upstream MCP server repository # Use INFRAHUB_MCP_VERSION to pin a specific tag/branch at build time # When left empty, the repo's default branch is used ARG INFRAHUB_MCP_VERSION="" RUN if [ -n "${INFRAHUB_MCP_VERSION}" ]; then \ git clone --depth 1 --branch "${INFRAHUB_MCP_VERSION}" \ https://github.com/opsmill/infrahub-mcp.git /app; \ else \ git clone --depth 1 \ https://github.com/opsmill/infrahub-mcp.git /app; \ fi WORKDIR /app # Install Python dependencies via uv RUN uv sync --frozen --no-dev # Default environment variables # INFRAHUB_API_TOKEN should be passed at runtime (not baked into the image) ENV INFRAHUB_ADDRESS=http://localhost:8000 ENV MCP_HOST=0.0.0.0 ENV MCP_PORT=8001 EXPOSE 8001 # Run the MCP server in SSE mode (network-accessible) ENTRYPOINT ["uv", "run", "fastmcp", "run", "src/infrahub_mcp/server.py:mcp", "--transport", "sse"]