exa-mcp-server Docker & Self-Hosted Deployment

GitHub

Exa MCP for web search and web crawling!

1. Pull Image (DOCKERHUB) docker pull exa-labs/exa-mcp-server:latest
2. Docker Run (1-Click Launch) docker run -d --name exa-mcp-server -p 8000:8000 --restart always exa-labs/exa-mcp-server:latest
3. Podman Run podman run -d --name exa-mcp-server -p 8000:8000 --restart always exa-labs/exa-mcp-server:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/exa-labs/exa-mcp-server:latest
5. ORAS Pull (OCI Artifact) oras pull exa-labs/exa-mcp-server:latest
Dockerfile
FROM node:22-bookworm-slim AS build

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --ignore-scripts
COPY api ./api
COPY src ./src
COPY tsconfig.json ./
RUN npm run build:runtime

FROM node:22-bookworm-slim AS runtime

ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=8000

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force
COPY --from=build /app/dist ./dist
COPY skills ./skills

RUN groupadd --system --gid 10001 exa \
  && useradd --system --uid 10001 --gid 10001 --home-dir /app exa
USER 10001:10001

EXPOSE 8000
CMD ["node", "dist/src/runtime-server.js"]