#!/usr/bin/env bash
set -euo pipefail
# Ensure we have a valid working directory even if caller's CWD was deleted
cd "${HOME:-/}" >/dev/null 2>&1 || cd / || true
# Repo-level health check wrapper (prefers installed runtime if present)
if command -v readlink >/dev/null 2>&1; then
SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")"
else
SCRIPT_PATH="${BASH_SOURCE[0]}"
fi
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
INSTALL_DIR="${INSTALL_DIR:-$HOME/MCPServer}"
if [ -f "$INSTALL_DIR/.env" ]; then
set -a
# shellcheck source=/dev/null
source "$INSTALL_DIR/.env" || true
set +a
fi
HOST=${MCP_HOST:-localhost}
PORT=${MCP_PORT:-3000}
MCP_URL="http://$HOST:$PORT"
LOG_FILE="${LOG_FILE:-$INSTALL_DIR/logs/mcp-server.log}"
echo "MCP Server Health Check ($INSTALL_DIR)"
echo "====================================="
echo -n "Service Status: "
PIDFILE="$INSTALL_DIR/run/mcp-server.pid"
if [ -f "$PIDFILE" ]; then
PID=$(cat "$PIDFILE" 2>/dev/null || echo "")
if [ -n "$PID" ] && kill -0 "$PID" >/dev/null 2>&1; then
echo "RUNNING (pid=$PID)"
else
echo "NOT RUNNING (stale or empty pid)"
fi
else
echo "NOT RUNNING"
fi
echo -n "Port $PORT Listening: "
if command -v ss >/dev/null 2>&1; then
if ss -tln | grep -q ":$PORT"; then
echo "YES"
else
echo "NO"
fi
elif command -v netstat >/dev/null 2>&1; then
if netstat -tln | grep -q ":$PORT"; then
echo "YES"
else
echo "NO"
fi
else
echo "UNKNOWN (no ss/netstat)"
fi
echo -n "HTTP Health Check: "
if command -v curl >/dev/null 2>&1; then
HTTP_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$MCP_URL/health" 2>/dev/null || echo "000")
echo "$HTTP_RESPONSE"
else
echo "curl not installed"
fi
echo ""
echo "Recent Logs (last 10 lines):"
if [ -f "$LOG_FILE" ]; then
tail -n 10 "$LOG_FILE" || true
else
echo "No log file found at $LOG_FILE"
fi