Skip to main content
Glama

Columbia MCP Server

by smithery-ai
rollback.sh3.77 kB
#!/bin/bash # rollback.sh - Rollback script for MCP servers in case of deployment failures set -e # Color codes for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Default values BACKUP_DIR="backups" COMPOSE_FILE="docker/docker-compose.prod.yml" ROLLBACK_POINT="" # Helper functions log_info() { echo -e "${GREEN}[INFO] $1${NC}" } log_warn() { echo -e "${YELLOW}[WARN] $1${NC}" } log_error() { echo -e "${RED}[ERROR] $1${NC}" } # Parse arguments while [[ $# -gt 0 ]]; do case $1 in --backup) ROLLBACK_POINT="$2" shift 2 ;; --compose-file) COMPOSE_FILE="$2" shift 2 ;; *) log_error "Unknown argument: $1" exit 1 ;; esac done # List available backups list_backups() { log_info "Available backups:" ls -lt "$BACKUP_DIR" | grep -E 'redis_|env_' | awk '{print $9}' | cut -d'_' -f2 | sort -u } # Validate backup point validate_backup() { if [ -z "$ROLLBACK_POINT" ]; then log_error "No backup point specified. Available backups:" list_backups exit 1 fi if [ ! -f "$BACKUP_DIR/redis_$ROLLBACK_POINT.rdb" ] || [ ! -f "$BACKUP_DIR/env_$ROLLBACK_POINT" ]; then log_error "Invalid backup point: $ROLLBACK_POINT" list_backups exit 1 } } # Stop services stop_services() { log_info "Stopping services..." docker-compose -f "$COMPOSE_FILE" down } # Restore data restore_data() { log_info "Restoring data from backup point: $ROLLBACK_POINT" # Restore Redis data log_info "Restoring Redis data..." docker-compose -f "$COMPOSE_FILE" up -d redis sleep 5 docker cp "$BACKUP_DIR/redis_$ROLLBACK_POINT.rdb" $(docker-compose -f "$COMPOSE_FILE" ps -q redis):/data/dump.rdb docker-compose -f "$COMPOSE_FILE" restart redis # Restore environment file log_info "Restoring environment configuration..." cp "$BACKUP_DIR/env_$ROLLBACK_POINT" .env.production } # Start services start_services() { log_info "Starting services..." docker-compose -f "$COMPOSE_FILE" up -d # Wait for services to be healthy log_info "Waiting for services to be healthy..." sleep 10 # Check service health docker-compose -f "$COMPOSE_FILE" ps | grep -q "unhealthy" if [ $? -eq 0 ]; then log_error "Some services are unhealthy after rollback" docker-compose -f "$COMPOSE_FILE" ps exit 1 fi } # Verify rollback verify_rollback() { log_info "Verifying rollback..." # Check Redis connection docker-compose -f "$COMPOSE_FILE" exec redis redis-cli PING | grep -q "PONG" if [ $? -ne 0 ]; then log_error "Redis verification failed" exit 1 fi # Check MCP server health curl -s http://localhost:3000/health | grep -q "ok" if [ $? -ne 0 ]; then log_error "MCP server health check failed" exit 1 fi log_info "Rollback verification completed successfully" } # Cleanup cleanup() { log_info "Cleaning up..." # Remove any temporary files rm -f tmp.* # Prune unused Docker resources docker system prune -f } # Main rollback process main() { log_info "Starting rollback process..." # Validate backup point validate_backup # Stop services stop_services # Restore data restore_data # Start services start_services # Verify rollback verify_rollback # Cleanup cleanup log_info "Rollback completed successfully!" log_info "System restored to backup point: $ROLLBACK_POINT" } # Run main function with error handling if ! main; then log_error "Rollback failed!" exit 1 fi

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/smithery-ai/COLUMBIA-MCP-SERVERS'

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