Skip to main content
Glama

Visum Thinker MCP Server

MIT License
test-gui-connection.pyโ€ข5.69 kB
import sys import time sys.path.append(r"H:\Program Files\PTV Vision\PTV Visum 2025\Exe") def test_connection_to_running_visum(): """ Test se possiamo connetterci a Visum giร  in esecuzione """ print("=== TEST CONNESSIONE A VISUM GIร€ APERTO ===") try: import win32com.client print("๐Ÿ” Tentativo 1: GetActiveObject (standard)") try: visum = win32com.client.GetActiveObject("Visum.Visum") print("โœ… SUCCESSO! Connesso a istanza attiva con GetActiveObject") # Test accesso dati nodes = visum.Net.Nodes.Count links = visum.Net.Links.Count print(f" Rete: {nodes:,} nodi, {links:,} link") if nodes > 0: print("โœ… Progetto caricato e accessibile!") return True, "GetActiveObject" else: print("โš ๏ธ Connesso ma rete vuota") return False, "GetActiveObject - empty" except Exception as e: print(f"โŒ GetActiveObject fallito: {e}") print("\n๐Ÿ” Tentativo 2: GetActiveObject con ProgID alternativo") try: visum = win32com.client.GetActiveObject("Visum.Application") print("โœ… Connesso con Visum.Application") nodes = visum.Net.Nodes.Count print(f" Nodi: {nodes:,}") return True, "Visum.Application" except Exception as e: print(f"โŒ Visum.Application fallito: {e}") print("\n๐Ÿ” Tentativo 3: Dispatch con istanza esistente") try: visum = win32com.client.Dispatch("Visum.Visum") print("โœ… Dispatch riuscito") nodes = visum.Net.Nodes.Count print(f" Nodi: {nodes:,}") if nodes > 0: return True, "Dispatch - existing" else: return False, "Dispatch - new instance" except Exception as e: print(f"โŒ Dispatch fallito: {e}") print("\n๐Ÿ” Tentativo 4: Enumerazione processi COM") try: import pythoncom pythoncom.CoInitialize() # Prova a enumerare oggetti COM attivi rot = pythoncom.GetRunningObjectTable() print("โœ… Running Object Table accessibile") # Enumera oggetti enum = rot.EnumRunning() count = 0 while True: try: monikers = enum.Next(1) if not monikers: break moniker = monikers[0] name = moniker.GetDisplayName(None, None) print(f" Oggetto COM: {name}") if "visum" in name.lower(): print(f" ๐ŸŽฏ Trovato oggetto Visum: {name}") try: obj = rot.GetObject(moniker) print(" โœ… Oggetto acquisito!") return True, f"ROT - {name}" except: print(" โŒ Non riesco ad acquisire l'oggetto") count += 1 if count > 20: # Limita la ricerca break except: break print(f" Enumerati {count} oggetti COM, nessun Visum trovato") except Exception as e: print(f"โŒ Enumerazione ROT fallita: {e}") return False, "All methods failed" except Exception as e: print(f"โŒ ERRORE GENERALE: {e}") return False, f"Error: {e}" def test_workflow_simulation(): """ Simula il workflow: apri -> connetti -> disconnetti -> riconnetti """ print("\n" + "="*60) print("SIMULAZIONE WORKFLOW UTENTE") print("="*60) print("๐Ÿ“‹ ISTRUZIONI PER L'UTENTE:") print("1. Apri Visum manualmente") print("2. Carica il progetto Campoleone nella GUI") print("3. Premi INVIO qui per testare la connessione") input("\nโณ Premi INVIO quando Visum รจ aperto con progetto caricato...") # Test connessione success, method = test_connection_to_running_visum() if success: print(f"\n๐ŸŽฏ SUCCESSO! Connessione riuscita con metodo: {method}") print("\n๐Ÿ“‹ WORKFLOW POSSIBILE:") print("โœ… 1. Utente apre Visum GUI") print("โœ… 2. Utente carica progetto") print("โœ… 3. Claude si connette per analisi") print("โœ… 4. Claude chiude connessione") print("โœ… 5. Claude si riconnette per analisi successive") else: print(f"\nโŒ FALLITO: {method}") print("\n๐Ÿ“‹ ALTERNATIVA NECESSARIA:") print("๐Ÿ”„ 1. Claude crea istanza COM propria") print("๐Ÿ”„ 2. Claude carica progetto via codice") print("๐Ÿ”„ 3. Claude mantiene istanza persistente") print("๐Ÿ”„ 4. Utente puรฒ comunque vedere Visum se visibile=True") if __name__ == "__main__": # Prima test senza GUI aperta print("FASE 1: Test senza Visum aperto") success, method = test_connection_to_running_visum() if not success: print("\n" + "="*50) print("COME PREVISTO: Nessuna istanza attiva da acquisire") print("="*50) # Ora simula workflow con GUI test_workflow_simulation() else: print(f"\nSORPRESA! Connessione riuscita anche senza GUI: {method}")

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