simple-init-service
Version:
MCP server for semantic codebase search using Transformers.js
71 lines (58 loc) • 1.8 kB
JavaScript
const { spawn, execSync } = require('child_process');
const path = require('path');
const command = process.argv[2];
function startProcess(scriptName, args = []) {
const child = spawn('node', [path.join(__dirname, scriptName), ...args], {
stdio: ['inherit', 'inherit', 'inherit'],
detached: false
});
// Encaminhar sinais para o processo filho
process.on('SIGINT', () => {
child.kill('SIGINT');
});
process.on('SIGTERM', () => {
child.kill('SIGTERM');
});
child.on('exit', (code, signal) => {
process.exit(code || 0);
});
child.on('error', (error) => {
console.error('Erro ao iniciar processo:', error);
process.exit(1);
});
// Manter o processo pai vivo
return child;
}
switch (command) {
case 'index':
startProcess('index-codebase.js');
break;
case 'start':
case '--stdio':
case undefined:
// Modo MCP Server (padrão)
const child = spawn('node', [path.join(__dirname, 'mcp-server.cjs'), '--stdio'], {
stdio: 'inherit',
cwd: __dirname
});
child.on('exit', (code) => {
process.exit(code || 0);
});
child.on('error', (err) => {
console.error('Erro ao iniciar servidor MCP:', err);
process.exit(1);
});
// Encaminhar sinais para o processo filho
process.on('SIGINT', () => child.kill('SIGINT'));
process.on('SIGTERM', () => child.kill('SIGTERM'));
return;
break;
default:
console.log('Uso: npx mcp-codebase-search [index|start|--stdio]');
console.log('\nComandos disponíveis:');
console.log(' index - Indexar o projeto atual');
console.log(' start - Iniciar o servidor MCP');
console.log(' --stdio - Iniciar servidor MCP via stdio (padrão)');
process.exit(1);
}