Skip to main content
Glama

Visum Thinker MCP Server

MIT License
SESSION_2025-10-10_IMPROVEMENTS.mdβ€’11.9 kB
# πŸ“… Sessione 2025-10-10: Miglioramenti MCP Tools Riepilogo completo dei miglioramenti implementati oggi per i tool MCP di gestione procedure Visum. ## 🎯 Obiettivi Raggiunti ### 1. βœ… Correzione Tool `visum_create_procedure` **Problema:** Il tool restituiva la posizione richiesta (es: 20) ma Visum creava la procedura in una posizione diversa (es: 580), causando errori nei passi successivi. **Soluzione Implementata:** - Modificato codice Python per contare le operations esistenti - Determinare la posizione effettiva dopo `AddOperation()` - Restituire sia `requested_position` che `actual_position` - Aggiunto warning chiaro: "⚠️ IMPORTANTE: Usa la posizione **580**" **Codice Chiave:** ```python # Prima (errato) new_op = visum.Procedures.Operations.AddOperation(20) result = {"position": 20} # ❌ Posizione sbagliata! # Dopo (corretto) existing_count = len([op for op in operations_container.GetAll]) new_op = visum.Procedures.Operations.AddOperation(20) new_count = len([op for op in operations_container.GetAll]) actual_position = new_count # βœ… Posizione reale! result = { "requested_position": 20, "actual_position": actual_position } ``` ### 2. βœ… Numerazione Segments in `visum_list_demand_segments` **Problema:** L'utente doveva copiare manualmente i codici segments lunghi (es: `C_CORRETTA_AM,C_CORRETTA_IP1,...`). **Soluzione Implementata:** - Aggiunta numerazione da 1 a 36 - Output formattato con numeri davanti a ogni segment - 4 opzioni chiare per la selezione **Output Prima:** ``` Segments: C_CORRETTA_AM, C_CORRETTA_IP1, ... ``` **Output Dopo:** ``` Mode C (Car β†’ TSys CAR): 1. C_CORRETTA_AM 2. C_CORRETTA_IP1 ... 24. C_NESTED_S Mode H (HGV β†’ TSys HGV): 25. H_CORRETTA_AM ... 36. H_INIZIALE_S πŸ’‘ Come procedere: Opzione 1 - Tutti: "tutti" Opzione 2 - Modo: "solo C" Opzione 3 - Numeri: "1-10,15" Opzione 4 - Codici: "C_CORRETTA_AM,..." ``` ### 3. βœ… Input Flessibili in `visum_configure_dsegset` **Problema:** Tool supportava solo DSEGSET esplicito (stringa lunga e complessa). **Soluzione Implementata:** - Supporto per 4 formati di input - Logica di risoluzione automatica - Validazione e gestione errori **Formati Supportati:** | Formato | Parametro | Esempio | Risultato | |---------|-----------|---------|-----------| | Keyword ALL | `dsegset: "ALL"` | `"ALL"` | Tutti i 36 segments | | Filtro Modo | `filterMode: "C"` | `"C"` | 24 segments modo C | | Selezione Numerica | `segmentNumbers: "1-10"` | `"1-10,15"` | Segments 1-10 + 15 | | Codici Espliciti | `dsegset: "C_CORRETTA_AM,..."` | Stringa completa | Segments specificati | **Codice di Risoluzione:** ```python if segment_numbers: # Fetch all segments all_segments = [...] # Parse numbers: "1-5,10" β†’ [1,2,3,4,5,10] selected_indices = parse_range(segment_numbers) # Map to codes resolved_dsegset = ",".join([all_segments[i-1] for i in selected_indices]) elif filter_mode: # Filter by mode filtered = [seg for seg in all_segments if seg.MODE == filter_mode] resolved_dsegset = ",".join(filtered) elif dsegset == "ALL": # Get all PRT segments all_prt = get_all_prt_segments() resolved_dsegset = ",".join(all_prt) else: # Use explicit dsegset resolved_dsegset = dsegset ``` ### 4. βœ… Script `mcp-quick-call.js` per Test Rapidi **Problema:** I comandi MCP via `echo | node build/index.js` rimanevano appesi perchΓ© il server MCP continua ad ascoltare stdin (comportamento corretto per un server). **Soluzione Implementata:** - Script wrapper Node.js - Avvia server come processo figlio - Invia comando - Aspetta risposta - **Termina automaticamente** il server - Timeout di 30 secondi **Uso:** ```powershell # Prima (rimaneva appeso, Ctrl+C manuale) echo '{"jsonrpc":"2.0",...}' | node build/index.js # Dopo (termina automaticamente) node mcp-quick-call.js visum_create_procedure '{\"projectId\":\"...\",\"procedureType\":\"PrT_Assignment\"}' ``` ### 5. βœ… Test End-to-End Automatico **File:** `test-workflow.py` **FunzionalitΓ :** 1. Lista demand segments 2. Crea procedura PrT Assignment 3. Estrae automaticamente `actual_position` 4. Configura con selezione numerica (1-10) 5. Riconfigura con filtro modo (H) 6. Verifica tutte le operazioni **Output:** ``` ================================================================================ TEST WORKFLOW COMPLETO: Create PrT Assignment + Configure DSEGSET ================================================================================ πŸ“‹ Step 1: Lista demand segments disponibili βœ… Segments elencati con successo 🎯 Step 2: Crea nuova procedura PrT Assignment βœ… Procedura creata alla posizione 580 βš™οΈ Step 3: Configura DSEGSET con segments 1-10 sulla posizione 580 βœ… DSEGSET configurato con 10 segments βš™οΈ Step 4: Test filtro modo - configura solo modo H sulla posizione 580 βœ… DSEGSET riconfigurato con 12 segments modo H ================================================================================ πŸŽ‰ WORKFLOW COMPLETO TESTATO CON SUCCESSO! ================================================================================ ``` ## πŸ“š Documentazione Creata ### 1. **CLAUDE_WORKFLOW_GUIDE.md** (7KB) - πŸ€– Guida completa per AI assistants - Pattern di interazione con utente - 8 esempi di conversazione - Gestione errori comuni - Checklist per Claude - Pseudo-codice completo **Sezioni:** - Workflow Completo (diagramma flow) - Tool Disponibili (3 tool dettagliati) - Pattern di Interazione (3 pattern) - Esempi di Conversazione (3 esempi completi) - Gestione Errori (3 errori comuni) - Best Practices (5 best practices) ### 2. **QUICKSTART_PRT_WORKFLOW.md** (4KB) - πŸš€ Quick start per sviluppatori - Workflow in 3 passi - 3 esempi pratici - Pattern per AI assistants - Errori comuni e soluzioni - Tips & tricks ### 3. **MCP_QUICK_CALL.md** (3KB) - πŸ§ͺ Guida per test manuali - Problema e soluzione - Esempi di comandi - Workflow completo di test - Note per PowerShell - Alternative ### 4. **Aggiornamento .github/copilot-instructions.md** - βœ… Sezione "Interactive Workflow for AI Assistants" - βœ… Warning critici evidenziati - βœ… Quick example con codice - βœ… Reference a CLAUDE_WORKFLOW_GUIDE.md ## πŸ”§ File Modificati ### TypeScript (src/index.ts) **Modifiche a `visum_create_procedure`:** ```typescript // Linee 2166-2178: Aggiunto conteggio operations esistenti existing_count = len([op for op in operations_container.GetAll]) new_op = visum.Procedures.Operations.AddOperation(${position}) new_count = len([op for op in operations_container.GetAll]) actual_position = new_count // Linee 2210-2216: Restituisce both positions result = { "requested_position": ${position}, "actual_position": actual_position, ... } // Linee 2227-2235: Output migliorato con warning **Posizione Effettiva:** ${result.result.actual_position} **Posizione Richiesta:** ${result.result.requested_position} ⚠️ **IMPORTANTE:** Usa la posizione **${result.result.actual_position}** per configurare! ``` **Modifiche a `visum_list_demand_segments`:** ```python # Aggiunto numbered_segments array numbered_segments = [] for idx, (code, mode) in enumerate(zip(segment_codes, segment_modes), 1): numbered_segments.append({ "number": idx, "code": code, "mode": mode }) # Output formattato con numeri for seg in numbered_segments: print(f" {seg['number']}. {seg['code']}") ``` **Modifiche a `visum_configure_dsegset`:** ```typescript // Linee 2400-2450: Aggiunto supporto per 4 input formats segmentNumbers: z.string().optional(), filterMode: z.string().optional(), dsegset: z.string().optional(), // Logica di risoluzione if segment_numbers: # Parse "1-10,15" notation # Map to segment codes elif filter_mode: # Filter by mode C/H elif dsegset == "ALL": # Get all PRT segments else: # Use explicit dsegset ``` ### Script Files **Creati:** 1. `mcp-quick-call.js` - Wrapper per terminazione automatica 2. `test-workflow.py` - Test end-to-end automatico 3. `mcp-call.ps1` - PowerShell wrapper (alternativa) ### Documentation Files **Creati:** 1. `CLAUDE_WORKFLOW_GUIDE.md` - Guida AI assistants (7KB) 2. `QUICKSTART_PRT_WORKFLOW.md` - Quick start (4KB) 3. `MCP_QUICK_CALL.md` - Guida test manuali (3KB) **Aggiornati:** 1. `.github/copilot-instructions.md` - Sezione interactive workflow 2. `package.json` - Aggiunto script `"call"` ## πŸ“Š Statistiche ### Codice - **File modificati:** 2 (index.ts, package.json) - **Linee aggiunte TypeScript:** ~150 - **Linee aggiunte Python:** ~80 - **Linee aggiunte JavaScript:** ~110 ### Documentazione - **File creati:** 3 (CLAUDE, QUICKSTART, MCP_QUICK_CALL) - **File aggiornati:** 1 (copilot-instructions) - **Totale parole:** ~5,000 - **Totale caratteri:** ~35,000 ### Test - **Test manuali:** 15+ chiamate MCP - **Test automatici:** 1 script completo (4 steps) - **Procedure create:** 5 (posizioni 576-580) - **Configurazioni DSEGSET:** 8 (vari formati) ## 🎯 Risultati ### βœ… Workflow Completo Funzionante ``` Test Completo Eseguito: β”œβ”€β”€ Step 1: Lista segments β†’ βœ… 36 segments trovati β”œβ”€β”€ Step 2: Crea procedura β†’ βœ… Posizione 580 β”œβ”€β”€ Step 3: Configura 1-10 β†’ βœ… 10 segments configurati └── Step 4: Riconfigura modo H β†’ βœ… 12 segments configurati Exit Code: 0 βœ… ``` ### βœ… Tool Verification | Tool | Status | Test | |------|--------|------| | visum_create_procedure | βœ… | Restituisce actual_position correttamente | | visum_list_demand_segments | βœ… | Numerazione 1-36 funzionante | | visum_configure_dsegset | βœ… | 4 formati input testati | | mcp-quick-call.js | βœ… | Terminazione automatica verificata | | test-workflow.py | βœ… | Test end-to-end passato | ### βœ… Documentazione Completa - [x] Guida per AI assistants (CLAUDE_WORKFLOW_GUIDE.md) - [x] Quick start per sviluppatori (QUICKSTART_PRT_WORKFLOW.md) - [x] Guida test manuali (MCP_QUICK_CALL.md) - [x] Istruzioni Copilot aggiornate - [x] API documentation esistente (VISUM_PROCEDURES_API.md) - [x] Workflow step-by-step esistente (WORKFLOW_PRT_ASSIGNMENT.md) ## πŸš€ Prossimi Passi ### Per Utenti 1. Leggi `QUICKSTART_PRT_WORKFLOW.md` 2. Esegui `python test-workflow.py` per verificare setup 3. Usa `node mcp-quick-call.js` per test rapidi ### Per AI Assistants 1. Leggi `CLAUDE_WORKFLOW_GUIDE.md` completamente 2. Segui i pattern di interazione descritti 3. Usa sempre `actual_position` dopo create_procedure 4. Mostra le 4 opzioni all'utente prima di configurare ### Per Sviluppatori 1. Consulta `VISUM_PROCEDURES_API.md` per API details 2. Usa `npm run build` prima di testare modifiche 3. Esegui `test-workflow.py` per regression testing 4. Vedi `WORKFLOW_PRT_ASSIGNMENT.md` per workflow completo ## πŸ“ Lessons Learned ### 1. Visum API Behavior - `AddOperation(position)` ignora il parametro position in alcune versioni - Procedura viene sempre aggiunta alla fine - Necessario contare operations per determinare posizione effettiva ### 2. User Experience - Numerazione rende molto piΓΉ facile la selezione - 4 opzioni coprono tutti i casi d'uso - Feedback immediato Γ¨ essenziale ### 3. Testing - Script wrapper risolve problema MCP server che rimane attivo - Test automatici prevengono regressioni - Encoding UTF-8 necessario per emoji in output ### 4. Documentation - AI assistants hanno bisogno di esempi completi - Pattern di conversazione aiutano a capire workflow - Checklist prevengono errori comuni ## πŸŽ‰ Conclusione Tutti gli obiettivi della sessione sono stati raggiunti: βœ… Tool corretti e testati βœ… Workflow interattivo implementato βœ… Documentazione completa creata βœ… Test automatici funzionanti βœ… Script per test rapidi disponibili Il sistema Γ¨ pronto per l'uso in produzione con Claude Desktop o altri client MCP! --- **Data Sessione:** 2025-10-10 **Durata:** ~4 ore **Commits:** Pronto per commit **Status:** βœ… Production Ready

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