#!/bin/bash # Build Inou Desktop Extension (.mcpb) - Node.js bundled version set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" NODE_BRIDGE_DIR="$PROJECT_DIR/mcp-bridge-node" OUTPUT_DIR="$PROJECT_DIR/portal/static/download" VERSION=$(grep '"version"' "$SCRIPT_DIR/manifest.json" | sed 's/.*: "\(.*\)".*/\1/') echo "=== Building Inou Desktop Extension v$VERSION (Node.js) ===" # Bundle with esbuild echo "Bundling with esbuild..." cd "$NODE_BRIDGE_DIR" npx esbuild index.js --bundle --platform=node --target=node18 --outfile=dist/index.js --format=esm 2>/dev/null # Create temp directory TEMP_DIR=$(mktemp -d) EXTENSION_DIR="$TEMP_DIR/inou-health" mkdir -p "$EXTENSION_DIR/server" # Copy manifest cp "$SCRIPT_DIR/manifest.json" "$EXTENSION_DIR/" # Copy bundled server (single file, no node_modules needed) cp "$NODE_BRIDGE_DIR/dist/index.js" "$EXTENSION_DIR/server/" # Create .mcpb (ZIP archive) echo "Creating .mcpb package..." OUTPUT_FILE="$OUTPUT_DIR/inou.mcpb" mkdir -p "$OUTPUT_DIR" rm -f "$OUTPUT_FILE" cd "$EXTENSION_DIR" zip -r -q "$OUTPUT_FILE" manifest.json server/ # Cleanup rm -rf "$TEMP_DIR" # Show result echo "" echo "Built: $OUTPUT_FILE" ls -lh "$OUTPUT_FILE" echo "" echo "To test: Double-click the .mcpb file or drag into Claude Desktop"