# Use Python 3.11 slim image as base FROM python:3.11-slim # Set working directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ git \ build-essential \ libcairo2-dev \ pkg-config \ python3-dev \ && rm -rf /var/lib/apt/lists/* # Copy socialsim_mcp folder structure (includes december-measurements module) COPY socialsim_mcp /app/socialsim_mcp # Copy MCP service requirements COPY socialsim_mcp/mcp_output/requirements.txt /app/requirements.txt # Create placeholder for infodynamics.jar if it doesn't exist # (The actual JAR file is in .gitignore and not tracked in git) RUN if [ ! -f /app/socialsim_mcp/mcp_output/december-measurements/infodynamics.jar ]; then \ touch /app/socialsim_mcp/mcp_output/december-measurements/infodynamics.jar; \ fi # Install Python dependencies with explicit version check RUN pip install --no-cache-dir -r /app/requirements.txt && \ pip list | grep fastmcp && \ python -c "import fastmcp; print(f'FastMCP version installed: {fastmcp.__version__}')" # Note: FastAPI and Uvicorn are already included as dependencies of fastmcp # DO NOT reinstall them separately as it may upgrade fastmcp to a newer version # Create output directories with write permissions RUN mkdir -p /app/socialsim_mcp/mcp_output/mcp_logs \ /app/socialsim_mcp/mcp_output/output \ && chmod -R 777 /app/socialsim_mcp/mcp_output/mcp_logs \ && chmod -R 777 /app/socialsim_mcp/mcp_output/output # Set environment variables ENV PYTHONUNBUFFERED=1 ENV MCP_TRANSPORT=http # Hugging Face Space uses PORT env var, default to 7860 ENV PORT=7860 ENV MCP_PORT=7860 # Expose port (Hugging Face uses 7860 by default) EXPOSE 7860 # Start MCP service in HTTP mode CMD ["python", "/app/socialsim_mcp/mcp_output/start_mcp.py"]