UNPKG

ipcom-marketing-ai

Version:

Zero-config MCP server for AI-powered marketing tools. Features automatic setup, standalone mode, Interactive Buyer Persona Generator with bilingual support (EN/PT-BR), and enterprise-grade content analysis with 2025 frameworks.

138 lines (118 loc) • 4.53 kB
#!/usr/bin/env node /** * Post-install script for ipcom-marketing-ai * Automatically configures MCP for Claude Code if available */ import { spawn, execSync } from 'child_process'; import path from 'path'; import fs from 'fs'; import os from 'os'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); console.log('\nšŸš€ OSP Marketing Tools - Post-install Setup'); console.log('='.repeat(50)); // Check if running in CI or non-interactive environment if (process.env.CI || process.env.NO_INTERACTIVE || !process.stdout.isTTY) { console.log('āš ļø Non-interactive environment detected. Skipping auto-setup.'); console.log('šŸ“ To configure manually, run: ipcom-marketing-ai configure'); process.exit(0); } // Find Python function findPython() { const pythonCommands = ['python3', 'python', 'py']; for (const cmd of pythonCommands) { try { const result = execSync(`${cmd} --version`, { encoding: 'utf8', stdio: 'pipe' }); if (result.includes('Python')) { return cmd; } } catch (e) { // Continue trying } } return null; } // Check if Claude Code might be installed function isClaudeCodeLikely() { const home = os.homedir(); const possiblePaths = [ path.join(home, 'Library', 'Application Support', 'Claude'), path.join(home, '.claude'), path.join(home, '.config', 'claude'), path.join(process.env.APPDATA || '', 'Claude'), ]; for (const p of possiblePaths) { if (fs.existsSync(p)) { return true; } } return false; } // Main setup async function setup() { console.log('\nšŸ“‹ Checking environment...'); // Find Python const pythonCmd = findPython(); if (!pythonCmd) { console.log('āš ļø Python not found. MCP configuration requires Python.'); console.log('šŸ“ Install Python from: https://www.python.org/downloads/'); console.log('\nāœ… You can still use standalone mode:'); console.log(' npx ipcom-marketing-ai demo'); return; } console.log(`āœ“ Python found: ${pythonCmd}`); // Check for Claude Code if (!isClaudeCodeLikely()) { console.log('ā„¹ļø Claude Code not detected.'); console.log('\nāœ… Available modes:'); console.log(' • Standalone: npx ipcom-marketing-ai demo'); console.log(' • Configure later: npx ipcom-marketing-ai configure'); return; } console.log('āœ“ Claude Code installation detected'); console.log('\nšŸ”§ Attempting automatic MCP configuration...'); // Path to setup script const setupScript = path.join(__dirname, '..', 'setup-mcp.py'); if (!fs.existsSync(setupScript)) { console.log('āš ļø Setup script not found. Please run manually:'); console.log(' npx ipcom-marketing-ai configure'); return; } // Run setup script silently const setup = spawn(pythonCmd, [setupScript, '--silent'], { stdio: 'inherit' }); setup.on('close', (code) => { if (code === 0) { console.log('\nāœ… MCP configuration successful!'); console.log('\nšŸ“ Next steps:'); console.log(' 1. Restart Claude Code'); console.log(' 2. Tools will be available automatically'); console.log('\nšŸ’” Alternative modes:'); console.log(' • Standalone demo: npx ipcom-marketing-ai demo'); console.log(' • Reconfigure: npx ipcom-marketing-ai configure'); } else { console.log('\nāš ļø Automatic configuration failed.'); console.log('\nšŸ“ Manual options:'); console.log(' • Configure manually: npx ipcom-marketing-ai configure'); console.log(' • Use standalone mode: npx ipcom-marketing-ai demo'); } console.log('\nšŸ™ Thank you for installing OSP Marketing Tools!'); console.log('šŸ“§ Support: contato@openpartners.com.br'); console.log('='.repeat(50)); }); setup.on('error', (err) => { console.error('āŒ Error running setup:', err.message); console.log('\nšŸ“ Please configure manually:'); console.log(' npx ipcom-marketing-ai configure'); }); } // Run setup setup().catch(err => { console.error('āŒ Setup error:', err); process.exit(1); });