#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" if [[ -f .env ]]; then set -a # shellcheck source=/dev/null source .env set +a fi if [[ -f .venv/bin/activate ]]; then # shellcheck source=/dev/null source .venv/bin/activate fi LOG_DIR="logs" mkdir -p "$LOG_DIR" PID_FILE="$LOG_DIR/server.pid" LOG_FILE="$LOG_DIR/server.log" if [[ -f "server.pid" ]]; then rm -f "server.pid" fi if [[ -f "$PID_FILE" ]]; then PID=$(cat "$PID_FILE") if kill -0 "$PID" >/dev/null 2>&1; then echo "Server already running (PID $PID)." exit 1 else echo "Stale PID file, removing." rm -f "$PID_FILE" fi fi nohup python3 -m uvicorn virtuoso_mcp:app --host 0.0.0.0 --port 8501 >"$LOG_FILE" 2>&1 & PID=$! echo "$PID" >"$PID_FILE" echo "Server started (PID $PID). Logs: $LOG_FILE"