FROM node:20-slim

# Install Python 3 + uv (for uvx-based MCP servers like Google Workspace, Zotero, MCP Research)
# Also install curl for uv installer, git which some npx packages need,
# and libatomic1 which rocksdb-native's prebuild links against
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 python3-venv curl git libatomic1 \
    && rm -rf /var/lib/apt/lists/* \
    && curl -LsSf https://astral.sh/uv/install.sh | sh

# Add uv/uvx to PATH
ENV PATH="/root/.local/bin:${PATH}"

WORKDIR /app

# Install Node dependencies
COPY package*.json ./
RUN npm ci --omit=dev

# Copy server code and scripts needed at runtime
COPY servers/ servers/
COPY scripts/init-db.js scripts/init-db.js
COPY scripts/server-registry.js scripts/server-registry.js
COPY scripts/generate-mcp-config.js scripts/generate-mcp-config.js

# Initialize database
RUN mkdir -p data && node scripts/init-db.js

# Ensure npm/npx cache is writable for runtime package downloads
RUN mkdir -p /root/.npm && chmod -R 755 /root/.npm

# Expose gateway port
EXPOSE 3001

ENV CROW_TRANSPORT=http
ENV CROW_GATEWAY_PORT=3001
ENV CROW_DB_PATH=/app/data/crow.db

CMD ["node", "servers/gateway/index.js"]
