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
JavaScript
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();