#!/usr/bin/env bash set -euo pipefail PORT=${PORT:-8506} APP_MODULE=${APP_MODULE:-news_mcp.mcp_server_fastmcp:app} LOGFILE=${LOGFILE:-uvicorn.log} PIDFILE=${PIDFILE:-server.pid} mkdir -p "$(dirname "$LOGFILE")" if [ -f "$PIDFILE" ] && ps -p "$(cat "$PIDFILE" 2>/dev/null)" > /dev/null 2>&1; then echo "Server already running (PID $(cat "$PIDFILE"))" exit 0 fi UVICORN_BIN="${UVICORN_BIN:-}" if [ -z "$UVICORN_BIN" ]; then if [ -x ".venv/bin/uvicorn" ]; then UVICORN_BIN=".venv/bin/uvicorn" else UVICORN_BIN="uvicorn" fi fi export PYTHONPATH="$(pwd):${PYTHONPATH:-}" nohup "$UVICORN_BIN" "$APP_MODULE" --host 0.0.0.0 --port "$PORT" > "$LOGFILE" 2>&1 & echo $! > "$PIDFILE" echo "Uvicorn started on port $PORT (PID $(cat "$PIDFILE"))"