# Local development only. Compose merges this automatically whenever # COMPOSE_FILE is unset — which is why the Pi's .env sets COMPOSE_FILE to # deploy/docker-compose.pi.yml instead (docs/PI.md): there, Caddy reaches the # container over the shared Docker network and no host port is published. services: postgres: ports: # Loopback only. Lets `npm test` reach it via TEST_DATABASE_URL and lets # the stdio server use the same index as the HTTP one. - "127.0.0.1:55432:5432" schulcloud-mcp: environment: # The bundled postgres service, reachable by name on the compose network. DATABASE_URL: postgresql://schulcloud:${POSTGRES_PASSWORD:-schulcloud}@postgres:5432/schulcloud # On demand by default while developing. Set CRAWL_INTERVAL_MS in .env to # crawl on a timer instead — what_changed can only report what happened # between crawls, so against a real account on-demand leaves it empty. CRAWL_INTERVAL_MS: ${CRAWL_INTERVAL_MS:-0} ports: # Bound to loopback: this exposes the account's data, and the bearer token # is the only thing in front of it. # MCP_HOST_PORT moves it when 8080 is already taken on this machine. - "127.0.0.1:${MCP_HOST_PORT:-8080}:8080"