Skip to main content
Glama

Visum Thinker MCP Server

MIT License
test-direct-connectivity.mjs8.66 kB
// Test diretto statistiche connettività con PowerShell import { spawn } from 'child_process'; console.log("📊 ANALISI CONNETTIVITÀ DIRETTA - RETE CAMPOLEONE"); console.log("═".repeat(60)); async funct console.log("\n🤖 Claude: \"Analisi di connettività completata!\""); console.log("🤖 Claude: \"La rete ha " + conn.level.toLowerCase() + " connettività con " + basic.nodes.toLocaleString() + " nodi.\"");n getConnectivityStats() { console.log("🔍 Ottengo statistiche dettagliate di connettività..."); const projectPath = "H:\\go\\italferr2025\\Campoleone\\100625_Versione_base_v0.3_sub_ok_priv.ver"; const script = ` try { Write-Host "Analizzando connettività rete Campoleone..." # Create Visum COM object and load project $visum = New-Object -ComObject "Visum.Visum" $visum.LoadVersion("${projectPath}") Write-Host "Progetto caricato, analizzando rete..." # Get network object $net = $visum.Net # Basic network statistics $nodeCount = try { $net.Nodes.Count } catch { 0 } $linkCount = try { $net.Links.Count } catch { 0 } $zoneCount = try { $net.Zones.Count } catch { 0 } Write-Host "Nodi: $nodeCount" Write-Host "Link: $linkCount" Write-Host "Zone: $zoneCount" # Public transport statistics $lineCount = try { $net.Lines.Count } catch { 0 } $stopCount = try { $net.StopPoints.Count } catch { 0 } $timeProfileCount = try { $net.TimeProfiles.Count } catch { 0 } $vehicleJourneyCount = try { $net.VehicleJourneys.Count } catch { 0 } Write-Host "Linee: $lineCount" Write-Host "Fermate: $stopCount" Write-Host "Profili temporali: $timeProfileCount" Write-Host "Corse veicoli: $vehicleJourneyCount" # Calculate connectivity metrics $avgLinksPerNode = if ($nodeCount -gt 0) { [math]::Round(($linkCount * 2.0) / $nodeCount, 2) } else { 0 } $connectivityRatio = if ($nodeCount -gt 0) { [math]::Round($linkCount / $nodeCount, 2) } else { 0 } $networkDensity = if ($nodeCount -gt 1) { [math]::Round(($linkCount / (($nodeCount * ($nodeCount - 1)) / 2)) * 100, 6) } else { 0 } Write-Host "Connettività calcolata:" Write-Host " - Media link per nodo: $avgLinksPerNode" Write-Host " - Rapporto connettività: $connectivityRatio" Write-Host " - Densità rete: $networkDensity%" # Determine connectivity level $connectivityLevel = if ($avgLinksPerNode -gt 3) { "Alta" } elseif ($avgLinksPerNode -gt 2) { "Media" } else { "Bassa" } # Get network file info $networkFile = try { $visum.VersionFile } catch { "Unknown" } @{ success = $true projectPath = "${projectPath}" networkFile = $networkFile basicStats = @{ nodes = $nodeCount links = $linkCount zones = $zoneCount } publicTransport = @{ lines = $lineCount stops = $stopCount timeProfiles = $timeProfileCount vehicleJourneys = $vehicleJourneyCount } connectivity = @{ avgLinksPerNode = $avgLinksPerNode connectivityRatio = $connectivityRatio networkDensity = $networkDensity level = $connectivityLevel } analysisDate = (Get-Date).ToString() } | ConvertTo-Json -Depth 4 # Clean up [System.Runtime.InteropServices.Marshal]::ReleaseComObject($visum) | Out-Null } catch { Write-Host "Errore: $($_.Exception.Message)" @{ success = $false error = $_.Exception.Message } | ConvertTo-Json } `; const powershell = spawn('powershell', ['-ExecutionPolicy', 'Bypass', '-Command', script]); let output = ''; let allOutput = ''; powershell.stdout.on('data', (data) => { const text = data.toString(); allOutput += text; // Cerca JSON if (text.includes('{')) { output += text; } // Mostra progress if (text.includes('Nodi:') || text.includes('Link:') || text.includes('Zone:')) { console.log("📊", text.trim()); } else if (text.includes('Linee:') || text.includes('Fermate:')) { console.log("🚌", text.trim()); } else if (text.includes('Media link') || text.includes('Rapporto') || text.includes('Densità')) { console.log("🔗", text.trim()); } else if (text.trim() && !text.includes('{') && !text.includes('}')) { console.log("📡", text.trim()); } }); return new Promise((resolve) => { powershell.on('close', (code) => { console.log(`\n🏁 PowerShell chiuso con codice: ${code}`); try { // Cerca JSON nell'output const jsonStart = allOutput.indexOf('{'); if (jsonStart !== -1) { const jsonStr = allOutput.substring(jsonStart); const endBrace = jsonStr.lastIndexOf('}'); if (endBrace !== -1) { const cleanJson = jsonStr.substring(0, endBrace + 1); const result = JSON.parse(cleanJson); resolve(result); return; } } resolve({ success: false, error: 'No valid JSON found' }); } catch (error) { console.log("⚠️ JSON parse error:", error.message); resolve({ success: false, error: error.message, rawOutput: allOutput }); } }); setTimeout(() => { powershell.kill(); resolve({ success: false, error: 'Timeout dopo 60 secondi' }); }, 60000); }); } async function runConnectivityAnalysis() { console.log("🤖 Claude: \"Eseguirò un'analisi completa di connettività!\""); console.log("⏳ Analisi in corso...\n"); const result = await getConnectivityStats(); console.log("\n" + "═".repeat(60)); console.log("📊 RISULTATI ANALISI CONNETTIVITÀ"); console.log("═".repeat(60)); if (result.success) { console.log("✅ ANALISI COMPLETATA CON SUCCESSO!\n"); const basic = result.basicStats; const pt = result.publicTransport; const conn = result.connectivity; console.log("🏗️ **STATISTICHE BASE DELLA RETE:**"); console.log(`🔗 Nodi: ${basic.nodes.toLocaleString()}`); console.log(`🛣️ Collegamenti: ${basic.links.toLocaleString()}`); console.log(`🏘️ Zone: ${basic.zones.toLocaleString()}`); console.log("\n🚌 **TRASPORTO PUBBLICO:**"); console.log(`🚍 Linee: ${pt.lines.toLocaleString()}`); console.log(`🚏 Fermate: ${pt.stops.toLocaleString()}`); console.log(`⏰ Profili temporali: ${pt.timeProfiles.toLocaleString()}`); console.log(`🚐 Corse veicoli: ${pt.vehicleJourneys.toLocaleString()}`); console.log("\n📈 **METRICHE DI CONNETTIVITÀ:**"); console.log(`🔗 Media collegamenti per nodo: ${conn.avgLinksPerNode}`); console.log(`📊 Rapporto connettività: ${conn.connectivityRatio}`); console.log(`🌐 Densità della rete: ${conn.networkDensity}%`); console.log(`⚡ Livello di connettività: ${conn.level}`); console.log("\n🎯 **VALUTAZIONE CONNETTIVITÀ:**"); if (conn.level === "Alta") { console.log("✅ ECCELLENTE: Rete altamente connessa"); console.log("• Buona ridondanza dei percorsi"); console.log("• Robusta contro interruzioni"); console.log("• Efficiente per il routing"); } else if (conn.level === "Media") { console.log("⚠️ BUONA: Connettività adeguata"); console.log("• Connettività sufficiente"); console.log("• Possibili miglioramenti"); } else { console.log("🔴 BASSA: Rete poco connessa"); console.log("• Vulnerabile a interruzioni"); console.log("• Limitati percorsi alternativi"); } console.log("\n📋 **DETTAGLI TECNICI:**"); console.log(`📁 File progetto: ${result.networkFile || 'Unknown'}`); console.log(`📅 Analizzato: ${result.analysisDate}`); console.log("\n🤖 Claude: \"Analisi di connettività completata!\""); console.log(`🤖 Claude: \"La rete ha ${conn.level.toLowerCase()} connettività con ${basic.nodes.toLocaleString()} nodi.\""); } else { console.log("❌ ANALISI FALLITA"); console.log(`Errore: ${result.error}`); if (result.rawOutput) { console.log("\n📄 Output grezzo (primi 500 caratteri):"); console.log(result.rawOutput.substring(0, 500)); } } console.log("\n🚀 ANALISI CONNETTIVITÀ CAMPOLEONE COMPLETATA!"); } runConnectivityAnalysis().catch(console.error);

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/multiluca2020/visum-thinker-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server