simple-init-service
Version:
MCP server for semantic codebase search using Transformers.js
93 lines (79 loc) • 2.4 kB
JavaScript
const { spawn } = require('child_process');
const path = require('path');
console.log('=== Teste de Comunicação MCP ===');
console.log('Iniciando servidor MCP via NPX...');
// Testar diretamente o servidor MCP
const child = spawn('npx', ['mcp-codebase-search', '--stdio'], {
stdio: ['pipe', 'pipe', 'inherit'], // stdin/stdout como pipes, stderr inherit
cwd: __dirname,
shell: true // Usar shell para resolver o npx
});
let responseBuffer = '';
// Escutar saída do servidor
child.stdout.on('data', (data) => {
responseBuffer += data.toString();
console.log('Dados recebidos:', data.toString());
// Tentar parsear mensagens JSON completas
const lines = responseBuffer.split('\n');
for (let i = 0; i < lines.length - 1; i++) {
const line = lines[i].trim();
if (line) {
try {
const response = JSON.parse(line);
console.log('Resposta do servidor:', JSON.stringify(response, null, 2));
} catch (e) {
console.log('Linha não é JSON válido:', line);
}
}
}
responseBuffer = lines[lines.length - 1];
});
child.on('spawn', () => {
console.log('Processo NPX iniciado com sucesso');
});
// Escutar erros
child.on('error', (error) => {
console.error('Erro no processo:', error);
});
// Escutar saída
child.on('exit', (code, signal) => {
console.log(`Processo encerrado com código: ${code}, sinal: ${signal}`);
if (code !== 0) {
console.log('Processo encerrou com erro');
}
});
child.on('error', (err) => {
console.log('Erro no processo NPX:', err);
});
// Aguardar um pouco e enviar mensagem de inicialização
setTimeout(() => {
console.log('Enviando mensagem de inicialização...');
const initMessage = {
jsonrpc: '2.0',
id: 1,
method: 'initialize',
params: {
protocolVersion: '2024-11-05',
capabilities: {
tools: {}
},
clientInfo: {
name: 'test-client',
version: '1.0.0'
}
}
};
try {
child.stdin.write(JSON.stringify(initMessage) + '\n');
console.log('Mensagem enviada com sucesso');
} catch (err) {
console.log('Erro ao enviar mensagem:', err);
}
// Aguardar resposta e encerrar
setTimeout(() => {
console.log('Encerrando teste...');
child.kill('SIGTERM');
}, 5000);
}, 3000);
console.log('Aguardando inicialização do servidor...');