claude-open-project.mjsβ’5.11 kB
// Simulazione: Claude apre il progetto Visum
import { spawn } from 'child_process';
console.log("π€ CLAUDE: 'Certo! Apro il progetto Visum per te'");
console.log("β".repeat(60));
const projectPath = "H:\\go\\italferr2025\\Campoleone\\100625_Versione_base_v0.3_sub_ok_priv.ver";
console.log("π€ User richiesta:");
console.log(` Apri il progetto: ${projectPath}`);
async function claudeOpenProject() {
console.log("\nπ§ Claude pensa: 'UserΓ² l'MCP per aprire questo progetto in Visum...'");
// Simula la richiesta MCP di Claude
const child = spawn('node', ['enhanced-visum-mcp.mjs'], {
stdio: ['pipe', 'pipe', 'pipe'],
cwd: process.cwd()
});
let output = '';
let stderr = '';
child.stdout.on('data', (data) => {
output += data.toString();
});
child.stderr.on('data', (data) => {
stderr += data.toString();
if (data.toString().includes('ready for Claude')) {
console.log("β
MCP Server connesso!");
}
});
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "open_project",
arguments: {
projectPath: projectPath
}
}
};
console.log("π€ Claude invia richiesta MCP: open_project");
console.log(` π Percorso: ${projectPath}`);
child.stdin.write(JSON.stringify(request) + '\n');
child.stdin.end();
return new Promise((resolve) => {
child.on('close', () => {
try {
const lines = output.trim().split('\n');
const jsonLine = lines.find(line => line.startsWith('{'));
if (jsonLine) {
const response = JSON.parse(jsonLine);
resolve({ success: true, response });
} else {
resolve({ success: false, error: 'No JSON response', output, stderr });
}
} catch (error) {
resolve({ success: false, error: error.message, output, stderr });
}
});
setTimeout(() => {
child.kill();
resolve({ success: false, error: 'Timeout dopo 30 secondi' });
}, 30000); // Timeout piΓΉ lungo per apertura progetto
});
}
async function simulateClaudeResponse() {
console.log("\nπ Claude esegue: tool open_project...");
const result = await claudeOpenProject();
console.log("\nπ₯ Risposta MCP ricevuta!");
if (result.success && result.response.result) {
const content = result.response.result.content?.[0]?.text;
if (content?.includes("β
")) {
console.log("π€ Claude: 'π Perfetto! Ho aperto il progetto con successo!'");
console.log("π Dettagli progetto:");
// Estrai informazioni dal contenuto della risposta
const fileMatch = content.match(/File:\*\* (.+)/);
const statusMatch = content.match(/Status:\*\* (.+)/);
const sizeMatch = content.match(/Size:\*\* (.+)/);
if (fileMatch) console.log(` π File: ${fileMatch[1]}`);
if (statusMatch) console.log(` β
Status: ${statusMatch[1]}`);
if (sizeMatch) console.log(` π Dimensione: ${sizeMatch[1]}`);
console.log("\nπ€ Claude: 'Il progetto Campoleone Γ¨ ora caricato in Visum!'");
console.log("π― Cosa posso fare ora:");
console.log(" π Analizzare la rete di trasporto");
console.log(" π Verificare le linee del trasporto pubblico");
console.log(" π Eseguire calcoli e simulazioni");
console.log(" π Generare report e statistiche");
} else if (content?.includes("β")) {
console.log("π€ Claude: 'β Mi dispiace, ho avuto un problema nell'aprire il progetto'");
console.log("π Possibili cause:");
console.log(" β’ File non trovato nel percorso specificato");
console.log(" β’ Visum non Γ¨ connesso correttamente");
console.log(" β’ Formato file non supportato");
const errorMatch = content.match(/Error:\*\* (.+)/);
if (errorMatch) {
console.log(` π¬ Errore: ${errorMatch[1]}`);
}
}
return content?.includes("β
");
} else {
console.log("π€ Claude: 'β C'Γ¨ stato un problema di comunicazione con Visum'");
console.log(`π» Errore tecnico: ${result.error}`);
return false;
}
}
async function runSimulation() {
const success = await simulateClaudeResponse();
console.log("\n" + "β".repeat(60));
console.log("π RIEPILOGO OPERAZIONE");
console.log("β".repeat(60));
if (success) {
console.log("π β
SUCCESSO!");
console.log("π€ Richiesta: Aprire progetto Visum");
console.log("π€ Claude: β
Progetto aperto correttamente");
console.log("π File: Campoleone (Italferr 2025)");
console.log("π§ MCP Tool: open_project funzionante");
} else {
console.log("β PROBLEMA");
console.log("π€ Richiesta: Aprire progetto Visum");
console.log("π€ Claude: β Errore nell'apertura");
console.log("π§ Necessario debug MCP/Visum");
}
return success;
}
runSimulation().then((success) => {
console.log(`\nπ Simulazione completata: ${success ? 'SUCCESS' : 'FAILED'}`);
}).catch(console.error);