#!/bin/bash
# Post-install script for Foundry MCP Server on macOS
# Runs after PKG installation to configure Claude Desktop and detect Foundry/ComfyUI
set -e
echo "Configuring Foundry MCP Server..."
# Get the current user (the one who ran the installer)
CURRENT_USER=$(stat -f '%Su' /dev/console)
USER_HOME=$(eval echo ~$CURRENT_USER)
# Paths
CLAUDE_CONFIG_DIR="$USER_HOME/Library/Application Support/Claude"
CLAUDE_CONFIG="$CLAUDE_CONFIG_DIR/claude_desktop_config.json"
APP_BUNDLE="/Applications/FoundryMCPServer.app"
MCP_SERVER_BUNDLE="$APP_BUNDLE/Contents/Resources/foundry-mcp-server/backend.bundle.cjs"
MCP_APP_SUPPORT="$USER_HOME/Library/Application Support/FoundryMCPServer"
echo "User: $CURRENT_USER"
echo "Home: $USER_HOME"
# Create MCP Server app support directory for logs
if [ ! -d "$MCP_APP_SUPPORT" ]; then
mkdir -p "$MCP_APP_SUPPORT"
chown "$CURRENT_USER:staff" "$MCP_APP_SUPPORT"
echo "✅ Created MCP Server app support directory"
fi
# Create Claude config directory if it doesn't exist
if [ ! -d "$CLAUDE_CONFIG_DIR" ]; then
mkdir -p "$CLAUDE_CONFIG_DIR"
chown "$CURRENT_USER:staff" "$CLAUDE_CONFIG_DIR"
fi
# Configure Claude Desktop MCP server
if [ -f "$CLAUDE_CONFIG" ]; then
echo "Claude Desktop config already exists, backing up..."
cp "$CLAUDE_CONFIG" "$CLAUDE_CONFIG.backup.$(date +%s)"
fi
# Create or update Claude config
cat > "$CLAUDE_CONFIG" << EOF
{
"mcpServers": {
"foundry-vtt-mcp": {
"command": "node",
"args": [
"$MCP_SERVER_BUNDLE"
],
"env": {
"FOUNDRY_HOST": "localhost",
"FOUNDRY_PORT": "31415"
}
}
}
}
EOF
chown "$CURRENT_USER:staff" "$CLAUDE_CONFIG"
chmod 644 "$CLAUDE_CONFIG"
echo "✅ Claude Desktop configured"
# Detect ComfyUI installation
COMFYUI_PATHS=(
"$USER_HOME/Library/Application Support/ComfyUI"
"/Applications/ComfyUI.app/Contents/Resources/ComfyUI"
"$USER_HOME/ComfyUI"
"/opt/ComfyUI"
"/usr/local/ComfyUI"
)
COMFYUI_FOUND=""
for COMFYUI_PATH in "${COMFYUI_PATHS[@]}"; do
if [ -f "$COMFYUI_PATH/main.py" ]; then
COMFYUI_FOUND="$COMFYUI_PATH"
echo "✅ ComfyUI detected at: $COMFYUI_PATH"
break
fi
done
if [ -z "$COMFYUI_FOUND" ]; then
echo "⚠️ ComfyUI not found"
echo ""
echo "To enable AI map generation, download ComfyUI Desktop from:"
echo "https://www.comfy.org/download"
echo ""
echo "After installing ComfyUI, the MCP server will automatically detect it."
fi
# Detect Foundry VTT installation
FOUNDRY_PATHS=(
"$USER_HOME/Library/Application Support/FoundryVTT"
"$USER_HOME/FoundryVTT"
"/Applications/FoundryVTT"
)
FOUNDRY_FOUND=""
for FOUNDRY_PATH in "${FOUNDRY_PATHS[@]}"; do
if [ -d "$FOUNDRY_PATH/Data/modules" ]; then
FOUNDRY_FOUND="$FOUNDRY_PATH/Data/modules"
echo "✅ Foundry VTT detected at: $FOUNDRY_PATH"
# Check if module is already installed
MODULE_PATH="$FOUNDRY_FOUND/foundry-mcp-bridge"
if [ ! -d "$MODULE_PATH" ]; then
echo "Installing Foundry module..."
# Module will be auto-installed by MCP server on first connection
echo "Module will be auto-installed on first connection to Foundry VTT"
else
echo "✅ Foundry module already installed"
fi
break
fi
done
if [ -z "$FOUNDRY_FOUND" ]; then
echo "ℹ️ Foundry VTT not detected"
echo "The Foundry module will be auto-installed when you first connect."
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📦 Installing ComfyUI (this will take 20-30 minutes)..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "This will download and install:"
echo " - Python 3.11 (system installation)"
echo " - ComfyUI headless server"
echo " - PyTorch with MPS support (Apple Silicon GPU)"
echo " - D&D Battlemaps SDXL Model (6.5GB)"
echo " - SDXL VAE (335MB)"
echo " Total: ~8GB download + 15GB installed"
echo ""
# Run ComfyUI setup script as the current user
SETUP_SCRIPT="$APP_BUNDLE/Contents/Resources/setup-comfyui-headless.js"
if [ -f "$SETUP_SCRIPT" ]; then
# Check if node is available
if command -v node >/dev/null 2>&1; then
echo "Running ComfyUI setup..."
# Run as the user who installed, not as root
su "$CURRENT_USER" -c "node '$SETUP_SCRIPT'" || {
echo "⚠️ ComfyUI setup encountered an error"
echo "You can run the setup manually later:"
echo " cd /Applications/FoundryMCPServer.app/Contents/Resources"
echo " node setup-comfyui-headless.js"
echo ""
echo "Installation log: $USER_HOME/foundry-mcp-install.log"
}
else
echo "⚠️ Node.js not found - cannot run ComfyUI setup automatically"
echo "Please install Node.js from https://nodejs.org/"
echo "Then run: node '$SETUP_SCRIPT'"
fi
else
echo "⚠️ Setup script not found at: $SETUP_SCRIPT"
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🎉 Installation Complete!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "Next steps:"
echo "1. Restart Claude Desktop"
echo "2. Launch Foundry VTT"
echo "3. Enable 'Foundry MCP Bridge' in Module Management"
echo ""
echo "Optional:"
echo "- Check settings in Foundry MCP Bridge module"
echo "- View install log: $USER_HOME/foundry-mcp-install.log"
echo ""
echo "Documentation: https://github.com/adambdooley/foundry-vtt-mcp"
echo ""
exit 0