UNPKG

context-creator-mcp

Version:

High-performance CLI tool to convert codebases to Markdown for LLM context - MCP Server

75 lines (59 loc) 1.77 kB
#!/usr/bin/env node const { spawn } = require('child_process'); const path = require('path'); const fs = require('fs'); const os = require('os'); function getBinaryName() { const platform = os.platform(); const arch = os.arch(); const archMap = { 'x64': 'x64', 'arm64': 'arm64' }; const platformMap = { 'darwin': 'darwin', 'linux': 'linux', 'win32': 'win32' }; const mappedArch = archMap[arch] || 'x64'; const mappedPlatform = platformMap[platform] || 'linux'; const extension = platform === 'win32' ? '.exe' : ''; return `context-creator-${mappedPlatform}-${mappedArch}${extension}`; } function getBinaryPath() { const binaryName = getBinaryName(); return path.join(__dirname, '..', 'binaries', binaryName); } function main() { const binaryPath = getBinaryPath(); if (!fs.existsSync(binaryPath)) { console.error(`Binary not found: ${binaryPath}`); console.error(`Platform: ${os.platform()}-${os.arch()}`); process.exit(1); } // Make executable on Unix if (os.platform() !== 'win32') { try { fs.chmodSync(binaryPath, '755'); } catch (err) { console.warn('Warning: Could not set permissions:', err.message); } } // Add --rmcp flag for MCP mode if not present const args = process.argv.slice(2); if (!args.includes('--rmcp')) { args.push('--rmcp'); } const child = spawn(binaryPath, args, { stdio: 'inherit', env: process.env }); process.on('SIGINT', () => child.kill('SIGINT')); process.on('SIGTERM', () => child.kill('SIGTERM')); child.on('close', (code) => process.exit(code)); child.on('error', (err) => { console.error('Failed to start context-creator:', err.message); process.exit(1); }); } main();