Skip to main content
Glama

Visum Thinker MCP Server

MIT License
test-realistic-solutions.pyβ€’5.92 kB
import sys import time import os import tempfile import json sys.path.append(r"H:\Program Files\PTV Vision\PTV Visum 2025\Exe") print("=== TEST SOLUZIONI ALTERNATIVE REALISTICHE ===") print("Visum GUI aperto, COM non accessibile") print("Testing workarounds...\n") # SOLUZIONE 1: VAL Script Export print("πŸ” SOLUZIONE 1: VAL Script per Export Dati") print("Creo script VAL che Visum puΓ² eseguire per esportare dati...") val_script = ''' // VAL Script per export dati rete // Script generato da MCP per analisi // Export basic network statistics Com AddProcedureStep("ExportNetworkStats", 1) // Define output file VISUM_MCP_OUTPUT = "H:\\visum-thinker-mcp-server\\mcp_export.json" // Get network data nodes_count = Nodes.Count links_count = Links.Count zones_count = Zones.Count // Export to temp file as JSON-like format PUTFILE(VISUM_MCP_OUTPUT) "{" PUTFILE(VISUM_MCP_OUTPUT) '"timestamp": "' + TIMESTR(NOW) + '",' PUTFILE(VISUM_MCP_OUTPUT) '"nodes": ' + STR(nodes_count) + ',' PUTFILE(VISUM_MCP_OUTPUT) '"links": ' + STR(links_count) + ',' PUTFILE(VISUM_MCP_OUTPUT) '"zones": ' + STR(zones_count) + ',' // Sample link data PUTFILE(VISUM_MCP_OUTPUT) '"sample_links": [' sample_count = 0 FOR link IN Links DO IF sample_count < 5 THEN PUTFILE(VISUM_MCP_OUTPUT) '{"no": ' + STR(link\No) + ', "length": ' + STR(link\Length) + ', "lanes": ' + STR(link\NumLanes) + '}' sample_count = sample_count + 1 IF sample_count < 5 THEN PUTFILE(VISUM_MCP_OUTPUT) ',' ENDIF ENDFOR PUTFILE(VISUM_MCP_OUTPUT) ']' PUTFILE(VISUM_MCP_OUTPUT) '}' // Signal completion PUTFILE("H:\\visum-thinker-mcp-server\\mcp_ready.flag") "EXPORT_COMPLETE" ''' val_file = "h:\\visum-thinker-mcp-server\\mcp_network_export.val" with open(val_file, 'w') as f: f.write(val_script) print(f"βœ… Script VAL creato: {val_file}") print("πŸ“‹ ISTRUZIONI PER UTENTE:") print("1. In Visum GUI: vai a 'Procedures' > 'Execute VAL Script'") print("2. Carica e esegui: mcp_network_export.val") print("3. Lo script esporterΓ  i dati per MCP") # SOLUZIONE 2: File Watcher per modifiche progetto print(f"\nπŸ” SOLUZIONE 2: File Watcher") project_file = r"H:\go\italferr2025\Campoleone\100625_Versione_base_v0.3_sub_ok_priv.ver" if os.path.exists(project_file): stat = os.stat(project_file) mod_time = time.ctime(stat.st_mtime) size_mb = stat.st_size / (1024 * 1024) print(f"πŸ“‚ File progetto: {os.path.basename(project_file)}") print(f" Ultima modifica: {mod_time}") print(f" Dimensione: {size_mb:.1f} MB") # Simula monitoraggio print("πŸ”„ Monitoraggio modifiche...") time.sleep(2) new_stat = os.stat(project_file) if new_stat.st_mtime != stat.st_mtime: print("βœ… File modificato - ricaricamento necessario") else: print("βœ… File non modificato - dati consistenti") # SOLUZIONE 3: Temp Export Approach print(f"\nπŸ” SOLUZIONE 3: Export Temporaneo") temp_dir = tempfile.gettempdir() export_file = os.path.join(temp_dir, "visum_mcp_export.txt") print(f"πŸ“ Directory temp: {temp_dir}") print("πŸ’‘ STRATEGIA:") print("1. Utente esporta dati da Visum GUI in formato standard") print("2. MCP legge file esportato") print("3. Analisi su dati reali e aggiornati") print("4. Utente puΓ² esportare quando necessario") # SOLUZIONE 4: Clipboard Integration print(f"\nπŸ” SOLUZIONE 4: Clipboard Data Exchange") try: import win32clipboard # Test clipboard access win32clipboard.OpenClipboard() if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_TEXT): data = win32clipboard.GetClipboardData() print(f"πŸ“‹ Clipboard corrente: {data[:100] if data else 'Empty'}...") else: print("πŸ“‹ Clipboard vuoto") win32clipboard.CloseClipboard() print("πŸ’‘ WORKFLOW CLIPBOARD:") print("1. Utente seleziona dati in Visum e copia (Ctrl+C)") print("2. MCP legge automaticamente da clipboard") print("3. Parsing e analisi dati copiati") print("4. Risultati immediati") except ImportError: print("❌ win32clipboard non disponibile") except Exception as e: print(f"❌ Clipboard test fallito: {e}") # SOLUZIONE 5: Socket/Named Pipe Communication print(f"\nπŸ” SOLUZIONE 5: Custom IPC") import socket try: # Test socket locale sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 0)) # Porta automatica port = sock.getsockname()[1] sock.listen(1) print(f"🌐 Socket MCP creato su porta: {port}") print("πŸ’‘ STRATEGIA IPC:") print("1. MCP avvia server socket locale") print("2. Script VAL in Visum invia dati via HTTP/socket") print("3. Comunicazione bidirezionale real-time") print("4. Dati sempre sincronizzati") sock.close() except Exception as e: print(f"❌ Socket test fallito: {e}") print(f"\n" + "="*60) print("🎯 MIGLIORI SOLUZIONI ALTERNATIVE") print("="*60) print("\nπŸ₯‡ TOP 1: VAL Script Export") print("βœ… Accesso completo ai dati Visum") print("βœ… Dati sempre aggiornati (real-time)") print("βœ… Performance eccellenti") print("βœ… Controllo completo utente") print("❌ Richiede azione utente per export") print("\nπŸ₯ˆ TOP 2: File Watcher + Auto Export") print("βœ… Monitoring automatico modifiche") print("βœ… Trigger export quando necessario") print("βœ… Dati sincronizzati") print("❌ Setup piΓΉ complesso") print("\nπŸ₯‰ TOP 3: Clipboard Integration") print("βœ… Immediato e semplice") print("βœ… Workflow naturale (Ctrl+C)") print("βœ… Zero setup") print("❌ Limitato ai dati visualizzati") print(f"\nπŸ’‘ RACCOMANDAZIONE:") print("Combinazione VAL Script + File Watcher") print("- Script VAL per export completo") print("- File watcher per trigger automatico") print("- Migliore compromesso efficienza/usabilitΓ ") print(f"\n=== ANALISI COMPLETATA ===") print("Scegliamo e implementiamo la soluzione migliore?")

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