Skip to main content
Glama

Visum Thinker MCP Server

MIT License
CLAUDE_WORKFLOW_GUIDE.mdβ€’19.1 kB
# πŸ€– Guida Claude: Workflow Interattivo PrT Assignment Questa guida spiega come **Claude** (o qualsiasi AI assistant) deve usare i tool MCP per creare procedure Visum in modo interattivo con l'utente. ## πŸ“‹ Indice 1. [Workflow Completo](#workflow-completo) 2. [Tool Disponibili](#tool-disponibili) 3. [Pattern di Interazione](#pattern-di-interazione) 4. [Esempi di Conversazione](#esempi-di-conversazione) 5. [Gestione Errori](#gestione-errori) 6. [Best Practices](#best-practices) --- ## 🎯 Workflow Completo ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. UTENTE: "Crea una procedura di assegnazione al trasporto β”‚ β”‚ privato" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 2. CLAUDE: Chiama visum_create_procedure β”‚ β”‚ β€’ Tipo: PrT_Assignment β”‚ β”‚ β€’ Nota la POSIZIONE EFFETTIVA restituita (es: 580) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 3. CLAUDE: "Ho creato la procedura alla posizione 580. β”‚ β”‚ Vuoi configurare i demand segments?" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 4. UTENTE: "SΓ¬, mostrami i segments disponibili" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 5. CLAUDE: Chiama visum_list_demand_segments β”‚ β”‚ β€’ Mostra lista numerata (1-36) β”‚ β”‚ β€’ Spiega le 4 opzioni di selezione β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 6. UTENTE: Sceglie una delle 4 opzioni: β”‚ β”‚ β€’ "Tutti" β†’ dsegset: "ALL" β”‚ β”‚ β€’ "Solo C" β†’ filterMode: "C" β”‚ β”‚ β€’ "1-10,15" β†’ segmentNumbers: "1-10,15" β”‚ β”‚ β€’ "C_CORRETTA_AM,..." β†’ dsegset: "C_CORRETTA_AM,..." β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 7. CLAUDE: Chiama visum_configure_dsegset β”‚ β”‚ β€’ procedurePosition: 580 (quella del passo 2!) β”‚ β”‚ β€’ Parametro appropriato basato su scelta utente β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 8. CLAUDE: "βœ… Configurati N segments. La procedura alla β”‚ β”‚ posizione 580 Γ¨ pronta per l'esecuzione!" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ› οΈ Tool Disponibili ### 1. `visum_create_procedure` **Scopo:** Crea una nuova procedura Visum. **Parametri:** ```typescript { projectId: string, // ID del progetto Visum aperto procedureType: "PrT_Assignment" | "PuT_Assignment" | "Demand_Model" | "Matrix_Calculation", position?: number, // Opzionale, default: 20 (viene ignorato, Γ¨ solo per backward compatibility) parameters?: object // Opzionale, parametri aggiuntivi } ``` **Risposta Importante:** ```json { "actual_position": 580, // ⚠️ QUESTA È LA POSIZIONE REALE! "requested_position": 20, "message": "...created successfully at position 580..." } ``` **⚠️ IMPORTANTE:** - La procedura NON viene creata alla posizione richiesta! - Visum aggiunge la procedura alla FINE (ultima posizione disponibile) - **Devi usare `actual_position` per i passi successivi!** **Esempio di chiamata:** ```json { "name": "visum_create_procedure", "arguments": { "projectId": "100625_Versione_base_v0.3_sub_ok_priv_10176442", "procedureType": "PrT_Assignment" } } ``` --- ### 2. `visum_list_demand_segments` **Scopo:** Elenca tutti i demand segments PrT disponibili con numerazione. **Parametri:** ```typescript { projectId: string, filterMode?: string // Opzionale: "C", "H", ecc. } ``` **Risposta:** - Lista numerata da 1 a N (es: 36 segments) - Segments raggruppati per modo (C, H, etc.) - DSEGSET completo per tutti i segments - 4 opzioni per la selezione **Output Tipico:** ``` 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 i segments: "tutti" Opzione 2 - Solo un modo: "Solo C" Opzione 3 - Selezione numerica: "1,2,3" o "1-10" Opzione 4 - Copia manuale: copia i codici ``` **Esempio di chiamata:** ```json { "name": "visum_list_demand_segments", "arguments": { "projectId": "100625_Versione_base_v0.3_sub_ok_priv_10176442" } } ``` --- ### 3. `visum_configure_dsegset` **Scopo:** Configura i demand segments su una procedura PrT Assignment. **Parametri (Uno dei seguenti):** ```typescript { projectId: string, procedurePosition: number, // ⚠️ Usa actual_position dal passo 1! // OPZIONE 1: Keyword "ALL" dsegset?: "ALL" | "tutti", // OPZIONE 2: Filtro per modo filterMode?: "C" | "H", // OPZIONE 3: Selezione numerica segmentNumbers?: "1,2,3" | "1-10" | "1-10,15,20", // OPZIONE 4: DSEGSET esplicito dsegset?: "C_CORRETTA_AM,C_CORRETTA_IP1,...", // Parametri aggiuntivi opzionali numIterations?: number, precisionDemand?: number } ``` **Mapping Risposta Utente β†’ Parametro:** | Risposta Utente | Parametro da usare | |-----------------|-------------------| | "tutti", "ALL", "usa tutti" | `dsegset: "ALL"` | | "solo C", "Solo modo C" | `filterMode: "C"` | | "1,2,3", "1-10", "1-5,10-15" | `segmentNumbers: "1-10"` | | "C_CORRETTA_AM,..." | `dsegset: "C_CORRETTA_AM,..."` | **Esempio di chiamata:** ```json { "name": "visum_configure_dsegset", "arguments": { "projectId": "100625_Versione_base_v0.3_sub_ok_priv_10176442", "procedurePosition": 580, "segmentNumbers": "1-10" } } ``` --- ## πŸ’¬ Pattern di Interazione ### Pattern 1: Creazione Base ``` UTENTE: "Crea una procedura di assegnazione PrT" CLAUDE FLOW: 1. Chiama visum_create_procedure con tipo PrT_Assignment 2. Estrae actual_position dalla risposta (es: 580) 3. Risponde: "βœ… Ho creato una procedura PrT Assignment alla posizione 580. Vuoi configurare i demand segments ora?" UTENTE: "SΓ¬" CLAUDE FLOW: 4. Chiama visum_list_demand_segments 5. Mostra la lista numerata all'utente 6. Spiega le 4 opzioni di selezione 7. Aspetta la scelta dell'utente UTENTE: "Usa i primi 10" CLAUDE FLOW: 8. Interpreta "primi 10" β†’ segmentNumbers: "1-10" 9. Chiama visum_configure_dsegset con: - procedurePosition: 580 - segmentNumbers: "1-10" 10. Conferma: "βœ… Configurati 10 demand segments sulla procedura 580!" ``` ### Pattern 2: Lista Prima, Poi Crea ``` UTENTE: "Quali demand segments PrT sono disponibili?" CLAUDE FLOW: 1. Chiama visum_list_demand_segments 2. Mostra la lista completa 3. Risponde: "Ho trovato 36 demand segments. Vuoi creare una procedura di assegnazione con alcuni di questi?" UTENTE: "SΓ¬, crea una procedura con solo il modo C" CLAUDE FLOW: 4. Chiama visum_create_procedure 5. Estrae actual_position (es: 581) 6. Chiama subito visum_configure_dsegset con: - procedurePosition: 581 - filterMode: "C" 7. Conferma: "βœ… Creata procedura alla posizione 581 con 24 segments modo C!" ``` ### Pattern 3: Configurazione Avanzata ``` UTENTE: "Crea una procedura PrT con i segments CORRETTA del modo C" CLAUDE FLOW: 1. Chiama visum_create_procedure β†’ posizione 582 2. Chiama visum_list_demand_segments 3. Identifica quali sono i "CORRETTA" del modo C: - 1. C_CORRETTA_AM - 2. C_CORRETTA_IP1 - 3. C_CORRETTA_IP2 - 4. C_CORRETTA_IP3 - 5. C_CORRETTA_PM - 6. C_CORRETTA_S 4. Chiama visum_configure_dsegset con: - procedurePosition: 582 - segmentNumbers: "1-6" 5. Conferma i segments configurati ``` --- ## 🎭 Esempi di Conversazione ### Esempio 1: Workflow Base ``` πŸ‘€ UTENTE: Crea una procedura di assegnazione al trasporto privato πŸ€– CLAUDE: [Chiama: visum_create_procedure con PrT_Assignment] [Riceve: actual_position = 580] Perfetto! Ho creato una procedura PrT Assignment alla posizione 580. Vuoi configurare i demand segments per questa procedura? Se sΓ¬, posso mostrarti i segments disponibili. πŸ‘€ UTENTE: SΓ¬, mostrami i segments πŸ€– CLAUDE: [Chiama: visum_list_demand_segments] [Riceve: 36 segments, 24 modo C + 12 modo H] Ho trovato 36 demand segments disponibili: **Modo C (Car):** segments 1-24 1. C_CORRETTA_AM 2. C_CORRETTA_IP1 ... 24. C_NESTED_S **Modo H (HGV):** segments 25-36 25. H_CORRETTA_AM ... 36. H_INIZIALE_S Come vuoi procedere? **Opzione 1:** "tutti" - Usa tutti e 36 i segments **Opzione 2:** "solo C" o "solo H" - Filtra per modo **Opzione 3:** "1-10" o "1,5,10-15" - Seleziona per numeri **Opzione 4:** Copia e incolla i codici specifici πŸ‘€ UTENTE: Solo modo C πŸ€– CLAUDE: [Chiama: visum_configure_dsegset con filterMode: "C", procedurePosition: 580] [Riceve: 24 segments configurati] βœ… Perfetto! Ho configurato la procedura alla posizione 580 con tutti e 24 i demand segments del modo C (Car). La procedura Γ¨ pronta per l'esecuzione. Puoi trovarla in Visum: Procedures β†’ Operations β†’ Posizione 580 ``` ### Esempio 2: Richiesta Specifica ``` πŸ‘€ UTENTE: Crea assegnazione PrT solo per i primi 5 time slots del modo car πŸ€– CLAUDE: [Chiama: visum_list_demand_segments per capire quali sono] [Identifica: 1-5 = C_CORRETTA_AM, IP1, IP2, IP3, PM] [Chiama: visum_create_procedure] [Riceve: actual_position = 583] [Chiama: visum_configure_dsegset con segmentNumbers: "1-5"] βœ… Ho creato una procedura PrT Assignment alla posizione 583 configurata con i primi 5 time slots del modo Car: 1. C_CORRETTA_AM 2. C_CORRETTA_IP1 3. C_CORRETTA_IP2 4. C_CORRETTA_IP3 5. C_CORRETTA_PM La procedura Γ¨ pronta! ``` ### Esempio 3: Modifica Successiva ``` πŸ‘€ UTENTE: Cambia la procedura 580 per usare solo i segments INIZIALE πŸ€– CLAUDE: [Chiama: visum_list_demand_segments] [Identifica INIZIALE nel modo C: posizioni 7-12] [Chiama: visum_configure_dsegset con: procedurePosition: 580, segmentNumbers: "7-12"] βœ… Ho riconfigurato la procedura alla posizione 580. Ora usa solo i 6 segments INIZIALE del modo C: 7. C_INIZIALE_AM 8. C_INIZIALE_IP1 9. C_INIZIALE_IP2 10. C_INIZIALE_IP3 11. C_INIZIALE_PM 12. C_INIZIALE_S ``` --- ## ⚠️ Gestione Errori ### Errore 1: Posizione non trovata ```json { "error": "OPERATION: ItemByKey failed for position 999" } ``` **Causa:** Stai usando una posizione inesistente. **Soluzione Claude:** ``` ❌ La posizione 999 non esiste. Ricordi la posizione restituita quando hai creato la procedura? Dovrebbe essere un numero tipo 576-580. ``` ### Errore 2: Progetto non aperto ```json { "error": "Project with ID ... not found" } ``` **Soluzione Claude:** ``` ❌ Il progetto Visum non Γ¨ aperto. Vuoi che lo apra? [Usa visum_project_open tool] ``` ### Errore 3: ALL keyword fallisce ```json { "error": "Failed to get all segments" } ``` **Soluzione Claude:** ``` ⚠️ C'Γ¨ stato un problema con la keyword "ALL". Posso usare un metodo alternativo: - Filtro per modo C: configura tutti i 24 segments Car - Filtro per modo H: configura tutti i 12 segments HGV Quale preferisci? ``` --- ## βœ… Best Practices per Claude ### 1. **Sempre Salvare actual_position** ```javascript // ❌ SBAGLIATO: const position = 20; // Posizione richiesta configureDsegset(position); // Questa fallirΓ ! // βœ… CORRETTO: const response = await createProcedure(); const actualPosition = response.result.actual_position; // 580 configureDsegset(actualPosition); // Questa funziona! ``` ### 2. **Mostrare sempre la lista prima** ``` // βœ… BUONO: "Ho trovato 36 segments. Ecco la lista numerata..." [mostra lista] "Come vuoi procedere?" // ❌ CATTIVO: "Configuro tutti i segments automaticamente" [chiama configure senza chiedere] ``` ### 3. **Interpretare le richieste utente** | Richiesta Vaga | Interpretazione | Azione | |----------------|-----------------|---------| | "tutti" | Tutti i segments | `dsegset: "ALL"` o `filterMode` per entrambi | | "primi 10" | Segments 1-10 | `segmentNumbers: "1-10"` | | "solo car" | Modo C | `filterMode: "C"` | | "CORRETTA" | Segments con nome CORRETTA | Identifica numeri e usa `segmentNumbers` | | "AM e PM" | Time slots AM e PM | Identifica numeri (1,5,7,11,...) | ### 4. **Confermare sempre** ``` βœ… "Ho configurato 10 demand segments sulla procedura 580" βœ… "La procedura Γ¨ pronta alla posizione 580" βœ… "Puoi trovarla in Visum: Procedures β†’ Operations β†’ 580" ``` ### 5. **Gestire richieste ambigue** ``` πŸ‘€ UTENTE: "Configura alcuni segments" πŸ€– CLAUDE: ❌ Non procedere automaticamente! βœ… Invece: "Quali segments vuoi configurare? Posso mostrarti la lista numerata per aiutarti a scegliere." ``` --- ## πŸ”„ Workflow Completo Codificato ```typescript // Pseudo-codice per Claude async function handlePrTAssignmentRequest(userRequest: string) { // Step 1: Crea la procedura const createResponse = await mcp.call("visum_create_procedure", { projectId: getCurrentProjectId(), procedureType: "PrT_Assignment" }); const procedurePosition = createResponse.result.actual_position; // Step 2: Conferma e chiedi se configurare await sendMessage(`βœ… Ho creato una procedura PrT Assignment alla posizione ${procedurePosition}. Vuoi configurare i demand segments?`); const userWantsConfigure = await waitForUserResponse(); if (!userWantsConfigure) return; // Step 3: Mostra lista segments const listResponse = await mcp.call("visum_list_demand_segments", { projectId: getCurrentProjectId() }); await sendMessage(formatSegmentList(listResponse)); await sendMessage(`Come vuoi procedere? 1. "tutti" - Tutti i segments 2. "solo C" - Solo modo Car 3. "1-10" - Selezione numerica 4. Copia i codici specifici`); // Step 4: Aspetta scelta utente const userChoice = await waitForUserResponse(); // Step 5: Interpreta la scelta const configParams = interpretUserChoice(userChoice); configParams.projectId = getCurrentProjectId(); configParams.procedurePosition = procedurePosition; // ⚠️ IMPORTANTE! // Step 6: Configura DSEGSET const configResponse = await mcp.call("visum_configure_dsegset", configParams); // Step 7: Conferma finale const segmentCount = extractSegmentCount(configResponse); await sendMessage(`βœ… Configurati ${segmentCount} demand segments sulla procedura ${procedurePosition}! La procedura Γ¨ pronta per l'esecuzione.`); } function interpretUserChoice(choice: string): object { const lower = choice.toLowerCase(); if (lower.includes("tutti") || lower.includes("all")) { return { filterMode: "C" }; // Usa filterMode invece di ALL che ha bug } if (lower.includes("solo c") || lower.includes("car")) { return { filterMode: "C" }; } if (lower.includes("solo h") || lower.includes("hgv")) { return { filterMode: "H" }; } // Check se Γ¨ notazione numerica if (/^\d+(-\d+)?(,\d+(-\d+)?)*$/.test(choice.trim())) { return { segmentNumbers: choice.trim() }; } // Altrimenti assume sia DSEGSET esplicito return { dsegset: choice }; } ``` --- ## πŸ“š Riferimenti - **VISUM_PROCEDURES_API.md** - Documentazione API completa - **WORKFLOW_PRT_ASSIGNMENT.md** - Workflow step-by-step - **MCP_QUICK_CALL.md** - Come testare i tool manualmente - **test-workflow.py** - Script di test automatico --- ## 🎯 Checklist per Claude Prima di procedere, verifica: - [ ] Ho chiamato `visum_create_procedure`? - [ ] Ho salvato la `actual_position` restituita? - [ ] Ho mostrato la lista segments all'utente? - [ ] Ho spiegato le 4 opzioni di selezione? - [ ] Ho interpretato correttamente la scelta utente? - [ ] Sto usando `actual_position` (non 20!) per `visum_configure_dsegset`? - [ ] Ho confermato l'operazione all'utente? - [ ] Ho indicato dove trovare la procedura in Visum? --- **Versione:** 1.0 **Data:** 2025-10-10 **Autore:** Visum Thinker MCP Server **Status:** βœ… Pronto per Produzione

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