drosatos's picture
Deploy ChatGPT MCP Server
9434d3d
#!/bin/bash
# Deploy to Hugging Face Spaces
# Usage: ./scripts/deploy-hf.sh
set -e
HF_SPACE="${HF_SPACE:-MCP-1st-Birthday/eu-ai-act-compliance-agent}"
echo "🚀 Deploying to HF Spaces: $HF_SPACE"
# Derive PUBLIC_URL from HF_SPACE (org/repo -> org-repo.hf.space)
# Convert to lowercase and replace / with -
PUBLIC_URL="https://$(echo "$HF_SPACE" | tr '[:upper:]' '[:lower:]' | tr '/' '-').hf.space"
echo "📡 Public URL: $PUBLIC_URL"
# Check HF CLI
if ! command -v huggingface-cli &> /dev/null; then
echo "Installing huggingface_hub..."
pip install huggingface_hub
fi
# Login check
huggingface-cli whoami || { echo "❌ Run: huggingface-cli login"; exit 1; }
# Create temp dir with full repo
TEMP_DIR=$(mktemp -d)
echo "📦 Preparing deployment in $TEMP_DIR"
# Get repo root directory
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# Copy everything except node_modules, .git, dist, .venv
rsync -av --exclude='node_modules' --exclude='.git' --exclude='dist' --exclude='.venv' --exclude='.turbo' "$REPO_ROOT/" "$TEMP_DIR/"
cd "$TEMP_DIR"
# Move Space files to root (from apps/eu-ai-act-agent)
cp apps/eu-ai-act-agent/Dockerfile ./
cp apps/eu-ai-act-agent/README.md ./
# Update PUBLIC_URL in Dockerfile to match the actual HF Space URL
sed -i.bak "s|PUBLIC_URL=https://.*\.hf\.space|PUBLIC_URL=$PUBLIC_URL|g" Dockerfile
rm -f Dockerfile.bak
echo "✅ Updated PUBLIC_URL in Dockerfile"
# Remove git and push to HF
rm -rf .git
git init -b main
git add -A
git commit -m "Deploy"
# Push to HF Space
git remote add hf "https://huggingface.co/spaces/$HF_SPACE"
git push hf main --force
echo "✅ Deployed: https://huggingface.co/spaces/$HF_SPACE"
# Cleanup
cd -
rm -rf "$TEMP_DIR"