Skip to main content
Glama

Columbia MCP Server

by smithery-ai
deploy.sh4.25 kB
#!/bin/bash # deploy.sh - Production deployment script for MCP servers 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 ENV_FILE=".env.production" COMPOSE_FILE="docker/docker-compose.prod.yml" BACKUP_DIR="backups" LOG_DIR="logs" # 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 --env-file) ENV_FILE="$2" shift 2 ;; --compose-file) COMPOSE_FILE="$2" shift 2 ;; *) log_error "Unknown argument: $1" exit 1 ;; esac done # Validate requirements validate_requirements() { log_info "Validating deployment requirements..." # Check Docker if ! command -v docker >/dev/null 2>&1; then log_error "Docker is not installed" exit 1 fi # Check Docker Compose if ! command -v docker-compose >/dev/null 2>&1; then log_error "Docker Compose is not installed" exit 1 fi # Check environment file if [ ! -f "$ENV_FILE" ]; then log_error "Environment file not found: $ENV_FILE" exit 1 fi # Check compose file if [ ! -f "$COMPOSE_FILE" ]; then log_error "Docker Compose file not found: $COMPOSE_FILE" exit 1 } # Validate environment variables ./docker/scripts/validate-env.sh --env-file "$ENV_FILE" } # Create backup create_backup() { log_info "Creating backup..." # Create backup directory if it doesn't exist mkdir -p "$BACKUP_DIR" # Create timestamp for backup TIMESTAMP=$(date +%Y%m%d_%H%M%S) # Backup Redis data if docker-compose -f "$COMPOSE_FILE" ps redis >/dev/null 2>&1; then log_info "Backing up Redis data..." docker-compose -f "$COMPOSE_FILE" exec redis redis-cli SAVE docker cp $(docker-compose -f "$COMPOSE_FILE" ps -q redis):/data/dump.rdb "$BACKUP_DIR/redis_$TIMESTAMP.rdb" fi # Backup environment file cp "$ENV_FILE" "$BACKUP_DIR/env_$TIMESTAMP" log_info "Backup completed: $BACKUP_DIR/*_$TIMESTAMP" } # Deploy services deploy_services() { log_info "Starting deployment..." # Pull latest images log_info "Pulling latest images..." docker-compose -f "$COMPOSE_FILE" pull # Build custom images log_info "Building custom images..." docker-compose -f "$COMPOSE_FILE" build # 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" docker-compose -f "$COMPOSE_FILE" ps exit 1 fi } # Monitor deployment monitor_deployment() { log_info "Monitoring deployment..." # Create log directory if it doesn't exist mkdir -p "$LOG_DIR" # Start monitoring docker-compose -f "$COMPOSE_FILE" logs -f > "$LOG_DIR/deployment_$(date +%Y%m%d_%H%M%S).log" & MONITOR_PID=$! # Wait for initial stability sleep 30 # Check container status docker-compose -f "$COMPOSE_FILE" ps # Kill monitoring process kill $MONITOR_PID } # Cleanup cleanup() { log_info "Cleaning up..." # Remove unused images docker image prune -f # Remove unused volumes docker volume prune -f # Keep only last 5 backups cd "$BACKUP_DIR" && ls -t | tail -n +6 | xargs -r rm } # Main deployment process main() { log_info "Starting deployment process..." # Validate requirements validate_requirements # Create backup create_backup # Deploy services deploy_services # Monitor deployment monitor_deployment # Cleanup cleanup log_info "Deployment completed successfully!" } # Run main function main

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