Skip to main content
Glama

Radius MCP Server

by inite-ai
monitor-deployment.sh7.38 kB
#!/bin/bash # Deployment monitoring script for Radius MCP Server # Monitors deployment status and health checks set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Default values ENVIRONMENT="dev" NAMESPACE="radius-mcp-server" TIMEOUT=300 # 5 minutes INTERVAL=10 # 10 seconds # Function to print colored output print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Function to show usage show_usage() { echo "Usage: $0 [OPTIONS]" echo "" echo "Options:" echo " -e, --environment ENV Target environment (dev|testing|prod20) [default: dev]" echo " -n, --namespace NS Kubernetes namespace [default: auto-detect]" echo " -t, --timeout SECONDS Timeout in seconds [default: 300]" echo " -i, --interval SECONDS Check interval in seconds [default: 10]" echo " -h, --help Show this help message" echo "" echo "Examples:" echo " $0 -e dev # Monitor development deployment" echo " $0 -e testing -t 600 # Monitor testing with 10min timeout" } # Parse command line arguments while [[ $# -gt 0 ]]; do case $1 in -e|--environment) ENVIRONMENT="$2" shift 2 ;; -n|--namespace) NAMESPACE="$2" shift 2 ;; -t|--timeout) TIMEOUT="$2" shift 2 ;; -i|--interval) INTERVAL="$2" shift 2 ;; -h|--help) show_usage exit 0 ;; *) print_error "Unknown option: $1" show_usage exit 1 ;; esac done # Set namespace based on environment if not specified if [[ "$NAMESPACE" == "radius-mcp-server" ]]; then case $ENVIRONMENT in dev) NAMESPACE="radius-mcp-server-dev" ;; testing) NAMESPACE="radius-mcp-server-testing" ;; prod20) NAMESPACE="radius-mcp-server-prod" ;; esac fi print_status "Monitoring deployment in environment: $ENVIRONMENT" print_status "Namespace: $NAMESPACE" print_status "Timeout: ${TIMEOUT}s, Interval: ${INTERVAL}s" # Check if kubectl is available if ! command -v kubectl &> /dev/null; then print_error "kubectl is not installed or not in PATH" exit 1 fi # Check if namespace exists if ! kubectl get namespace "$NAMESPACE" &> /dev/null; then print_error "Namespace '$NAMESPACE' does not exist" exit 1 fi # Function to check pod status check_pods() { local ready_pods=$(kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | grep -c "Running" || echo "0") local total_pods=$(kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | wc -l) echo "$ready_pods/$total_pods" } # Function to check deployment status check_deployment() { kubectl get deployment -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server -o jsonpath='{.items[0].status.conditions[?(@.type=="Available")].status}' 2>/dev/null || echo "Unknown" } # Function to check service status check_service() { kubectl get service -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | wc -l } # Function to check ingress status check_ingress() { kubectl get ingress -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | wc -l } # Function to get pod logs get_pod_logs() { local pod_name=$(kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | head -1 | awk '{print $1}') if [[ -n "$pod_name" ]]; then kubectl logs -n "$NAMESPACE" "$pod_name" --tail=10 2>/dev/null || echo "No logs available" else echo "No pods found" fi } # Function to check health endpoint check_health() { local service_name=$(kubectl get service -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server --no-headers | head -1 | awk '{print $1}') if [[ -n "$service_name" ]]; then # Try to port-forward and check health local port=$(kubectl get service -n "$NAMESPACE" "$service_name" -o jsonpath='{.spec.ports[0].port}') if kubectl port-forward -n "$NAMESPACE" "service/$service_name" 8080:$port &> /dev/null & then local pf_pid=$! sleep 2 if curl -s -f http://localhost:8080/mcp &> /dev/null; then kill $pf_pid 2>/dev/null || true echo "Healthy" else kill $pf_pid 2>/dev/null || true echo "Unhealthy" fi else echo "Cannot check health" fi else echo "No service found" fi } # Main monitoring loop start_time=$(date +%s) end_time=$((start_time + TIMEOUT)) print_status "Starting deployment monitoring..." while [[ $(date +%s) -lt $end_time ]]; do echo "" print_status "=== Deployment Status Check ===" # Check pods pod_status=$(check_pods) print_status "Pods: $pod_status ready" # Check deployment deployment_status=$(check_deployment) if [[ "$deployment_status" == "True" ]]; then print_success "Deployment: Available" else print_warning "Deployment: $deployment_status" fi # Check service service_count=$(check_service) print_status "Services: $service_count" # Check ingress ingress_count=$(check_ingress) print_status "Ingress: $ingress_count" # Check health health_status=$(check_health) if [[ "$health_status" == "Healthy" ]]; then print_success "Health: $health_status" else print_warning "Health: $health_status" fi # Check if deployment is complete if [[ "$pod_status" =~ ^[1-9][0-9]*/[1-9][0-9]*$ ]] && [[ "$deployment_status" == "True" ]] && [[ "$health_status" == "Healthy" ]]; then print_success "Deployment is healthy and ready!" # Show final status echo "" print_status "=== Final Status ===" kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server echo "" kubectl get service -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server echo "" kubectl get ingress -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server exit 0 fi # Show recent logs if deployment is not ready if [[ "$pod_status" != "1/1" ]]; then echo "" print_status "=== Recent Pod Logs ===" get_pod_logs fi print_status "Waiting ${INTERVAL}s before next check..." sleep $INTERVAL done print_error "Deployment monitoring timed out after ${TIMEOUT}s" print_error "Deployment may not be ready or there may be issues" # Show final status echo "" print_status "=== Final Status ===" kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server echo "" kubectl get service -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server echo "" kubectl get ingress -n "$NAMESPACE" -l app.kubernetes.io/name=radius-mcp-server exit 1

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/inite-ai/radius-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server