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
JavaScript
/**
* 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);
});