Code Sandbox MCP

#!/bin/sh set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Check if we're in a terminal that supports colors if [ -t 1 ] && command -v tput >/dev/null 2>&1 && [ "$(tput colors)" -ge 8 ]; then HAS_COLORS=1 else HAS_COLORS=0 # Reset color variables if colors are not supported RED='' GREEN='' YELLOW='' NC='' fi # Function to print colored output print_status() { local color=$1 local message=$2 if [ "$HAS_COLORS" = "1" ]; then printf "%b%s%b\n" "$color" "$message" "$NC" else printf "%s\n" "$message" fi } # Detect OS and architecture OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) # Convert architecture to our naming scheme case "$ARCH" in x86_64) ARCH="amd64" ;; aarch64) ARCH="arm64" ;; arm64) ARCH="arm64" ;; *) print_status "$RED" "Unsupported architecture: $ARCH" exit 1 ;; esac # Convert OS to our naming scheme case "$OS" in linux) OS="linux" ;; darwin) OS="darwin" ;; *) print_status "$RED" "Unsupported operating system: $OS" exit 1 ;; esac # Check if Docker is installed if ! command -v docker >/dev/null 2>&1; then print_status "$RED" "Error: Docker is not installed" print_status "$YELLOW" "Please install Docker first:" echo " - For Linux: https://docs.docker.com/engine/install/" echo " - For macOS: https://docs.docker.com/desktop/install/mac/" exit 1 fi # Check if Docker daemon is running if ! docker info >/dev/null 2>&1; then print_status "$RED" "Error: Docker daemon is not running" print_status "$YELLOW" "Please start Docker and try again" exit 1 fi print_status "$GREEN" "Downloading latest release..." # Get the latest release URL LATEST_RELEASE_URL=$(curl -s https://api.github.com/repos/Automata-Labs-team/code-sandbox-mcp/releases/latest | grep "browser_download_url.*code-sandbox-mcp-$OS-$ARCH" | cut -d '"' -f 4) if [ -z "$LATEST_RELEASE_URL" ]; then print_status "$RED" "Error: Could not find release for $OS-$ARCH" exit 1 fi # Create installation directory INSTALL_DIR="$HOME/.local/share/code-sandbox-mcp" mkdir -p "$INSTALL_DIR" # Download to a temporary file first TEMP_FILE="$INSTALL_DIR/code-sandbox-mcp.tmp" print_status "$GREEN" "Installing to $INSTALL_DIR/code-sandbox-mcp..." if ! curl -L "$LATEST_RELEASE_URL" -o "$TEMP_FILE"; then print_status "$RED" "Error: Failed to download the binary" rm -f "$TEMP_FILE" exit 1 fi chmod +x "$TEMP_FILE" # Try to stop the existing process if it's running if [ -f "$INSTALL_DIR/code-sandbox-mcp" ]; then pkill -f "$INSTALL_DIR/code-sandbox-mcp" >/dev/null 2>&1 || true sleep 1 # Give it a moment to shut down fi # Move the temporary file to the final location if ! mv "$TEMP_FILE" "$INSTALL_DIR/code-sandbox-mcp"; then print_status "$RED" "Error: Failed to install the binary. Please ensure no instances are running and try again." rm -f "$TEMP_FILE" exit 1 fi # Add to Claude Desktop config print_status "$GREEN" "Adding to Claude Desktop configuration..." "$INSTALL_DIR/code-sandbox-mcp" --install print_status "$GREEN" "Installation complete!" echo "You can now use code-sandbox-mcp with Claude Desktop or other AI applications."