Skip to main content
Glama

Visum Thinker MCP Server

MIT License
create-complete-prt-procedure.jsโ€ข7.15 kB
import net from 'net'; const pythonCode = ` # ============================================================================ # CREA PROCEDURA PRT ASSIGNMENT COMPLETA IN CODA A TUTTE LE PROCEDURE # ============================================================================ # 1. AGGIUNGI DOPO LA POSIZIONE 21 (IN CODA) import sys # AddOperation(pos) aggiunge PRIMA della posizione specificata # Per aggiungere in coda dopo la 21, usiamo posizione 21 che inserisce DOPO la 20 # Ma vogliamo dopo la 21, quindi... forse AddOperation aggiunge IN quella posizione? # Proviamo con il secondo parametro (gruppo) = None esplicito new_position = 21 print(f"Aggiunta operazione dopo posizione {new_position}", file=sys.stderr) # 2. CREA NUOVA OPERAZIONE - AddOperation(position, group) # Dalla documentazione: AddOperation aggiunge un'operazione # Se position = 22 e ci sono 21 ops, dovrebbe aggiungere in coda # Ma l'errore dice "valid 1 to 21" - forse il range รจ inclusivo? # Proviamo con position 21 + group None operation = visum.Procedures.Operations.AddOperation(21, None) operation.SetAttValue("OPERATIONTYPE", 101) # PrT Assignment print(f"Operazione creata in posizione {new_position} (tipo 101)", file=sys.stderr) # 3. ACCEDI AI PARAMETRI PRT ASSIGNMENT (proprieta corretta!) params = operation.PrTAssignmentParameters print(f"Parametri PrT Assignment accessibili!", file=sys.stderr) # 4. CONFIGURA PARAMETRI DI BASE # Non configuriamo VRCODE e TSYSSET perche potrebbero non esistere in questo progetto # Useremo solo i parametri equilibrium # Configura tipo di assignment # OperationTypeAssignmentPrT = 101 include vari sotto-tipi # Per Equilibrium assignment, accedi ai parametri specifici try: equilibrium_params = operation.PrTEquilibriumAssignmentParameters # Parametri equilibrium equilibrium_params.SetAttValue("NUMITER", 50) # Numero iterazioni equilibrium_params.SetAttValue("PRECISIONDEMAND", 0.01) # Precisione print(f"Parametri Equilibrium configurati (50 iter, prec 0.01)", file=sys.stderr) config_type = "Equilibrium Assignment" except: print(f"Equilibrium params non disponibili, uso config base", file=sys.stderr) config_type = "Base PrT Assignment" # 5. VERIFICA CONFIGURAZIONE operation_type = operation.AttValue("OPERATIONTYPE") operation_name = "PrT Assignment (auto-created)" print(f"Operazione configurata: {operation_name}", file=sys.stderr) # 6. FASI 1 e 2 COMPLETATE - NON ESEGUIAMO print(f"Procedura PrT Assignment creata e configurata!", file=sys.stderr) print(f"FASE 1: Creazione operazione - COMPLETATA", file=sys.stderr) print(f"FASE 2: Configurazione parametri - COMPLETATA", file=sys.stderr) print(f"FASE 3: Esecuzione - SALTATA (da fare manualmente o via API)", file=sys.stderr) # 7. VERIFICA FINALE # Verifichiamo che l'operazione sia stata davvero creata verification = None try: created_op = visum.Procedures.Operations.ItemByKey(new_position) verification = { "exists": True, "type": created_op.AttValue("OPERATIONTYPE"), "params_accessible": True } print(f"Verifica: operazione {new_position} esiste con tipo {verification['type']}", file=sys.stderr) except Exception as e: verification = { "exists": False, "error": str(e) } print(f"Verifica fallita: {e}", file=sys.stderr) # 8. RITORNA RISULTATO COMPLETO result = { "status": "ok", "phase_1_creation": "completed", "phase_2_configuration": "completed", "phase_3_execution": "skipped", "created": True, "position": new_position, "operation_type": operation_type, "operation_name": operation_name, "config_type": config_type, "params_accessible": True, "params_type": str(type(params)), "verification": verification, "note": "Procedura creata in coda. Eseguire manualmente da Visum o via visum.Procedures.Execute()" } `; const client = new net.Socket(); let welcomeReceived = false; console.log('๐Ÿš€ CREAZIONE PROCEDURA PRT ASSIGNMENT COMPLETA'); console.log('=' .repeat(60)); client.connect(7901, '::1', () => { console.log('โœ… Connesso al server TCP sulla porta 7901\n'); }); client.on('data', (data) => { const response = JSON.parse(data.toString()); if (!welcomeReceived && response.type === 'project_welcome') { console.log('๐Ÿ“Š Welcome message ricevuto'); console.log(` Progetto: ${response.projectName}`); console.log(` Nodi: ${response.network.nodes}, Links: ${response.network.links}\n`); welcomeReceived = true; // Invia comando Python const request = { type: 'query', requestId: Date.now(), description: 'Crea e configura procedura PrT Assignment completa', code: pythonCode }; console.log('๐Ÿ“ค Invio comando per creare procedura PrT Assignment...\n'); client.write(JSON.stringify(request) + '\n'); } else { console.log('=' .repeat(60)); console.log('๐Ÿ“Š RISULTATO OPERAZIONE\n'); if (response.success) { const res = response.result; console.log('โœ… SUCCESSO!\n'); console.log('๐Ÿ“‹ FASI COMPLETATE:'); console.log(` โœ… FASE 1 (Creazione): ${res.phase_1_creation}`); console.log(` โœ… FASE 2 (Configurazione): ${res.phase_2_configuration}`); console.log(` โญ๏ธ FASE 3 (Esecuzione): ${res.phase_3_execution}`); console.log('\n๐Ÿ“Š DETTAGLI OPERAZIONE:'); console.log(` ๐Ÿ“ Posizione: ${res.position} (in coda a tutte le procedure)`); console.log(` ๐Ÿ”ง Tipo operazione: ${res.operation_type} (${res.config_type})`); console.log(` ๐Ÿ“ Nome: ${res.operation_name}`); console.log(` โš™๏ธ Parametri accessibili: ${res.params_accessible ? 'โœ… SI' : 'โŒ NO'}`); console.log(` ๏ฟฝ Tipo parametri: ${res.params_type}`); if (res.verification) { console.log('\n๐Ÿ” VERIFICA:'); console.log(` Operazione esiste: ${res.verification.exists ? 'โœ… SI' : 'โŒ NO'}`); if (res.verification.exists) { console.log(` Tipo verificato: ${res.verification.type}`); } } console.log('\n๐Ÿ’ก NOTA:'); console.log(` ${res.note}`); console.log('\n๐ŸŽ‰ PROCEDURA PRT ASSIGNMENT CREATA E CONFIGURATA!'); console.log('๐ŸŽฏ API FUNZIONANTE: operation.PrTAssignmentParameters'); } else { console.log('โŒ ERRORE!\n'); console.log(`Messaggio: ${response.error}`); } console.log(`\nโฑ๏ธ Tempo esecuzione: ${response.executionTimeMs}ms`); console.log(`โฑ๏ธ Tempo risposta: ${response.responseTimeMs}ms`); console.log('=' .repeat(60)); client.destroy(); } }); client.on('close', () => { console.log('\n๐Ÿ”Œ Connessione chiusa'); }); client.on('error', (err) => { console.error('โŒ Errore:', err.message); });

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