#!/bin/bash # Entrypoint script for Hugging Face Spaces deployment # Launches MCP Toolbox and Gradio multi-agent assistant set -e echo "==================================================" echo "🚀 Starting PortfolioMind Multi-Agent Assistant" echo "==================================================" # Validate required environment variables echo "📋 Validating configuration..." REQUIRED_VARS=( "GOOGLE_API_KEY" "CHROMA_API_KEY" "CHROMA_TENANT" "CHROMA_DATABASE" "ALPHA_VANTAGE_API_KEY" ) MISSING_VARS=() for var in "${REQUIRED_VARS[@]}"; do if [ -z "${!var}" ]; then MISSING_VARS+=("$var") fi done if [ ${#MISSING_VARS[@]} -gt 0 ]; then echo "❌ Missing required environment variables:" for var in "${MISSING_VARS[@]}"; do echo " - $var" done echo "" echo "Please configure these in Hugging Face Space Settings > Variables and Secrets" exit 1 fi echo "✅ All required environment variables are set" echo "" # Start MCP Toolbox if Cloud SQL is configured if [ -n "$GCP_PROJECT_ID" ] && [ -n "$CLOUD_SQL_INSTANCE" ]; then echo "" echo "🚀 Starting MCP Toolbox (Cloud SQL) on port 5000..." echo "==================================================" # Configure GCP credentials if provided as JSON string if [ -n "$GCP_SERVICE_ACCOUNT_JSON" ]; then echo " ✓ Configuring GCP credentials from environment variable..." mkdir -p /app/credentials echo "$GCP_SERVICE_ACCOUNT_JSON" > /app/credentials/gcp-key.json export GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/gcp-key.json echo " ✓ GCP credentials configured" fi # Substitute environment variables in tools.yaml echo " → Preparing tools.yaml with environment variables..." envsubst < /app/tools.yaml > /tmp/tools.yaml # Start MCP Toolbox server in background echo " → Starting MCP Toolbox server..." /usr/local/bin/toolbox \ --tools-file /tmp/tools.yaml \ --address 0.0.0.0 \ --port 5000 > /tmp/toolbox.log 2>&1 & TOOLBOX_PID=$! echo " ✓ MCP Toolbox started (PID: $TOOLBOX_PID)" # Give it a moment to start sleep 3 echo " ✅ MCP Toolbox should be ready!" else echo "" echo "⚠ Skipping MCP Toolbox - Cloud SQL not configured" echo " Set GCP_PROJECT_ID and CLOUD_SQL_INSTANCE to enable Finance Tracker" fi echo "" echo "🎯 Starting Gradio application on port 7860..." echo "==================================================" echo "" # Set Python path to include /app export PYTHONPATH=/app:$PYTHONPATH # Suppress gRPC verbose logging export GRPC_VERBOSITY=ERROR # Launch Gradio app with native MCP support cd /app exec python -u ui/gradio_app.py