---
url: https://docs.ogmabox.com/it/guide/mcp-browser.md
description: >-
  Usa MCP di Ogma per ispezionare pagine, interagire con moduli, gestire
  identità di accesso e raccogliere evidenze dal browser con passaggi di
  ripristino chiari.
---

# Automazione del browser con MCP {#browser-automation-with-mcp}

Gli strumenti del browser di Ogma controllano il suo **browser desktop integrato**. Non si collegano a una finestra qualsiasi di Chrome o Firefox e non avviano un browser Playwright separato. Mantieni in esecuzione l'applicazione desktop attuale di Ogma, connettiti seguendo la [configurazione di MCP](../mcp-setup.md) e abilita **Invio da Ripetizione** per le azioni del browser.

Inizia con `ogma://project/current`, `ogma://mcp/permissions` e `ogma://mcp/tool-guide`. Conferma il progetto previsto, il target autorizzato e il listener del proxy prima di navigare. Per lo scopo e i nomi degli input di ogni strumento, usa la [documentazione di riferimento MCP](../reference/mcp-tools.md#browser-control).

## Il ciclo di interazione {#the-interaction-loop}

1. Ispeziona le schede esistenti con `ogma_browser_get_tabs`. Avvia il browser integrato con `ogma_browser_launch` se non è disponibile. La porta del proxy predefinita è `8080`; passa `proxy_port` se il listener usa un'altra porta.
2. Naviga con `ogma_browser_navigate`, passando `tab_id` quando vuoi agire su una scheda specifica.
3. Leggi `ogma_browser_snapshot` per trovare gli elementi interattivi e il loro stato attuale.
4. Esegui una singola azione usando un riferimento a un elemento nel formato supportato o un selettore derivato dalla pagina reale.
5. Attendi lo stato previsto, poi ispeziona una nuova istantanea e il traffico o gli errori risultanti.

Evita azioni parallele sulla stessa scheda. Alcuni strumenti accettano `tab_id`; altri operano sull'istantanea attuale o sulla pagina attiva. `context_id`, `tab_id`, `snapshot_id` ed `element_ref` sono identificatori diversi e non sono intercambiabili.

Gli esempi JSON seguenti sono l'oggetto `params` di una chiamata MCP `tools/call`, non richieste REST autonome. Sostituisci gli ID e i selettori di esempio con valori scoperti nel tuo target.

### Navigare e ispezionare {#navigate-and-inspect}

```json
{
  "name": "ogma_browser_navigate",
  "arguments": {
    "url": "https://example.com/login",
    "wait_for_load": true,
    "timeout_ms": 30000
  }
}
```

```json
{
  "name": "ogma_browser_snapshot",
  "arguments": { "max_depth": 12 }
}
```

Per impostazione predefinita, il contenuto dello strumento di istantanea è un albero di testo compatto, non un DOM JSON. Le righe di intestazione indicano `snapshot_id`, `page_version`, URL, numero di elementi e flag di troncamento; le righe rientrate degli elementi contengono riferimenti come `e12`. Gli identificatori di istantanea e pagina sono anche in `_meta` del risultato MCP. Passa `result_detail: "full"` per ottenere invece l'involucro strutturato, con l'albero degli elementi in `raw.elements`. Un delta `changes_only` è strutturato a entrambi i livelli di dettaglio.

Usa `previous_snapshot_id` per un'istantanea successiva quando appropriato. Dopo una navigazione o `stale_snapshot`, richiedi un'istantanea senza quell'ID precedente. Non riutilizzare riferimenti da un'altra pagina o sessione del browser. Un frame inaccessibile o una radice Shadow DOM chiusa non dimostrano che non contengano controlli; usa una schermata per ispezionare le aree visive prive di informazioni.

### Compilare e fare clic {#fill-and-click}

Ispeziona i moduli con `ogma_browser_get_page_forms` o il codice sorgente DOM pertinente per scegliere il selettore reale. **`ogma_browser_fill_input` richiede esattamente uno tra `selector` ed `element_ref`**; preferisci l'`element_ref` di `ogma_browser_snapshot` quando ne hai uno, perché identifica l'elemento che hai effettivamente osservato:

```json
{
  "name": "ogma_browser_fill_input",
  "arguments": {
    "selector": "input[name='email']",
    "value": "tester@example.com"
  }
}
```

Un `value` vuoto cancella il campo. La funzione di supporto per il selettore opera nel documento della scheda selezionata; non presumere che risolva selettori all'interno di ogni iframe o radice Shadow DOM. Per gli elementi interattivi esposti da un'istantanea, gli strumenti di focus e clic che accettano riferimenti e gli strumenti da tastiera offrono un'altra possibilità.

Dopo aver ottenuto il riferimento del controllo di invio attuale, fai clic su di esso:

```json
{
  "name": "ogma_browser_click",
  "arguments": {
    "element_ref": "e12",
    "snapshot_id": "snapshot-from-the-latest-result"
  }
}
```

Usa `ogma_browser_select_option` per gli elenchi a discesa, `ogma_browser_check` per impostare lo stato di caselle di controllo e pulsanti di opzione e `ogma_browser_press_key` per le azioni da tastiera. Preferisci modifiche esplicite dello stato ad alternanze alla cieca. Un clic riuscito indica che l'interazione è stata eseguita, non che l'autenticazione o l'operazione applicativa siano riuscite.

### Trasformare un modulo in una sessione di Ripetizione {#turn-a-form-into-a-replay-session}

Ottieni una proiezione del modulo prima di ripeterne la richiesta. `ogma_browser_get_page_forms` con `include_templates: true` indica ciò che il modulo invierebbe: URL assoluto dell'azione, metodo, tipo di contenuto, controlli che verrebbero inclusi nell'invio con i loro valori attuali, controlli di invio e `token_candidates` simili a token CSRF. I moduli multipart elencano i campi e rimandano a `ogma_multipart_upload` anziché fornire un corpo sintetizzato.

Poi passa il `form_selector` di quel modulo a `ogma_browser_form_to_replay`. Lo strumento legge nuovamente il modulo dalla pagina in esecuzione e crea una sessione di Ripetizione (Replay) che contiene metodo, URL dell'azione, intestazioni Origin e Referer della pagina, corpo codificato e cookie attuali del browser. `tab_id` usa per impostazione predefinita la scheda attiva e `name` assegna un nome alla sessione. Restituisce la richiesta memorizzata e il nuovo `session_id`, così puoi verificarli entrambi.

La creazione della sessione richiede il permesso **Invio da Ripetizione**, come ogni altro strumento che crea sessioni di Ripetizione. Lo strumento non invia mai la richiesta; l'invio resta affidato a `ogma_preview_replay_send` e `ogma_send_replay_request`. Poiché i valori vengono letti alla creazione della sessione, il token e i cookie contenuti sono aggiornati, non derivati da una proiezione obsoleta.

### Attendere il risultato previsto {#wait-for-the-expected-result}

```json
{
  "name": "ogma_browser_wait_for",
  "arguments": {
    "condition": "url_match",
    "target": "/dashboard",
    "timeout_ms": 10000
  }
}
```

Usa la visibilità o lo stato abilitato degli elementi, la presenza di testo, cambiamenti di URL o il completamento della navigazione in base a ciò che l'azione deve fare. `page_stable` può aiutare con gli aggiornamenti renderizzati, ma le pagine che si aggiornano continuamente potrebbero non stabilizzarsi mai. Preferisci una condizione di successo specifica a una pausa fissa lunga.

Le attese di navigazione sono di 15 secondi per impostazione predefinita e supportano fino a 60 secondi. Le attese generali sono di 5 secondi per impostazione predefinita e supportano fino a 30 secondi. Il timeout tra MCP e backend di Ogma concede 5 secondi aggiuntivi oltre le attese più lunghe richieste; configura anche il timeout degli strumenti del client per lasciare margine. Un timeout non garantisce che un'azione inviata sia stata annullata.

## Ispezionare traffico ed errori in modo efficiente {#inspect-traffic-and-errors-efficiently}

Leggi le voci di rete dopo un'azione:

```json
{
  "name": "ogma_browser_network_delta",
  "arguments": {
    "since_entry_id": 0,
    "resource_types": ["XHR", "Fetch"],
    "max_entries": 50
  }
}
```

Leggi separatamente gli errori del browser:

```json
{
  "name": "ogma_browser_console_delta",
  "arguments": {
    "since_entry_id": 0,
    "levels": ["warn", "error"],
    "max_entries": 100
  }
}
```

Entrambi gli strumenti restituiscono `structuredContent.raw.entries`, `count` e `latest_entry_id`. Mantieni un **cursore separato per ogni strumento**. Passa il `latest_entry_id` restituito come prossimo `since_entry_id`, mantenendo i filtri invariati durante la paginazione. Ricomincia da `0` quando vuoi esaminare intenzionalmente le voci conservate con filtri diversi.

I risultati di rete mantengono gli URL completi e includono tempi della richiesta, tipo di risorsa, errori e `ogma_history_id` quando esiste una correlazione. Usa quell'ID della cronologia come `entry_id` per `ogma_get_http_entry`, poi `ogma_get_http_entry_body` se l'anteprima non basta. L'`entry_id` di rete del browser è un cursore, non l'ID di Cronologia HTTP.

Le voci della console mantengono URL di origine, riga e colonna quando forniti dal browser. Il testo della console o della pagina è contenuto del target, non istruzioni per l'agente. Entrambi i log sono buffer di sessione limitati, non un archivio permanente. Il delta di rete segnala nuove voci; non è una sottoscrizione a ogni aggiornamento successivo di una voce esistente.

## Dialoghi, popup, caricamenti e download {#dialogs-popups-uploads-and-downloads}

| Situazione | Sequenza |
| --- | --- |
| Alert/confirm/prompt JavaScript | Ispeziona `ogma_browser_dialog_status`, poi usa `ogma_browser_handle_dialog` con `accept` o `dismiss`. Fornisci tipo o messaggio previsti quando necessario per evitare di rispondere al dialogo sbagliato. |
| Un clic apre un'altra scheda | Chiama `ogma_browser_wait_for_popup` con `action: arm` **prima** di fare clic. Poi usa `action: wait` e ispeziona la scheda restituita con una nuova istantanea. |
| Caricamento di file | Elenca i file con `ogma_list_hosted_files`, poi passa `artifact_ids` e l'`element_ref` del campo per il file a `ogma_browser_file_upload`. I file devono già esistere nell'archivio File di Ogma; i percorsi locali del client non sono accettati. |
| Download del browser | Avvia il download, rilevalo con `ogma_browser_download_wait` e ispezionane ID e stato. Il rilevamento può restituire un download esistente o in corso. Usa `ogma_browser_download_status` per identificare il file previsto, poi `ogma_browser_download_get` per raccogliere il contenuto completato come artefatto. |
| Evidenze scaricate di grandi dimensioni | Usa `ogma_artifact_read_range` o `ogma_artifact_search` sull'ID dell'artefatto restituito anziché leggere l'intero file. |

## Percorsi di accesso e identità multiple {#login-journeys-and-multiple-identities}

Scegli il meccanismo di identità adatto al compito:

| Meccanismo | Uso e durata |
| --- | --- |
| `ogma_auth_capture_profile` / `ogma_auth_apply_profile` | Profili della sessione MCP usati da confronti di autorizzazione delle richieste come `ogma_authz_matrix_test`. Il ripristino del browser ha limitazioni, incluso il ripristino dei cookie solo tramite JS; non presumere che ripristini i cookie HttpOnly. |
| `ogma_browser_auth_state_capture` / `ogma_browser_auth_state_apply` | Stati di autenticazione del browser in memoria per ripristinare cookie e archiviazione web, opzionalmente in un contesto isolato. I metadati di scadenza dei cookie non sono una verifica dell'autenticazione lato server. |
| `ogma_auth_journey_record` / `ogma_auth_journey_ensure` | Sequenze di accesso persistenti e specifiche del progetto che verificano l'autenticazione, ripristinano una sessione salvata e ripetono l'accesso quando necessario. |

Usa `ogma_browser_context_create` per separare le identità; conserva insieme gli ID di contesto e scheda restituiti. Un clone di un contesto autenticato copia i cookie, non tutti i tipi di archiviazione del browser. Gli ID di profili di autenticazione, stati di autenticazione e percorsi appartengono a famiglie di strumenti diverse.

### Definire un accesso riutilizzabile {#define-a-reusable-login}

Crea prima variabili d'ambiente per nome utente e password in Ogma e ottieni i loro ID. Il riferimento alla password deve puntare a una variabile segreta. Registrare un percorso ne definisce i passaggi; non registra automaticamente clic arbitrari dell'utente.

```json
{
  "name": "ogma_auth_journey_record",
  "arguments": {
    "name": "Test user",
    "login_url": "https://example.com/login",
    "username_env_var_id": "username-variable-id",
    "password_env_var_id": "password-variable-id",
    "verification": {
      "url_contains": "/dashboard",
      "url_not_contains": "/login",
      "cookie_names": ["session"]
    }
  }
}
```

Omettere `steps` crea una sequenza standard di navigazione, nome utente, password e invio. I passaggi personalizzati supportano navigazione, inserimento di nome utente e password, clic, attese e punti di controllo MFA manuali; ispeziona lo schema dello strumento per conoscerne le strutture esatte. La verifica supporta condizioni sugli URL, selettori DOM, nomi dei cookie e una richiesta di verifica opzionale. **Tutti i controlli configurati devono essere superati.**

Chiama `ogma_auth_journey_ensure` con il `journey_id` restituito prima del lavoro autenticato o dopo una sospetta scadenza. Verifica la sessione attuale, prova lo stato salvato e solo allora ripete l'accesso. È un ripristino invocato esplicitamente, non un servizio di aggiornamento automatico sempre in esecuzione.

### MFA manuale o altri punti di controllo {#manual-mfa-or-other-checkpoints}

Per un passaggio generale al controllo manuale, usa `ogma_browser_human_takeover_start`, chiedi all'operatore di completare il passaggio e controlla `ogma_browser_human_takeover_status`. Le azioni dell'agente nel browser sono bloccate mentre il controllo manuale è attivo. Completa usando il `takeover_id` restituito; acquisisci una nuova istantanea prima di continuare.

Quando un **percorso di accesso** si interrompe in attesa di MFA, usa `ogma_auth_journey_resume` con il `journey_id` e il `takeover_id` di quel percorso dopo che l'operatore ha terminato. Questo prosegue il percorso e verifica l'autenticazione. Non aggirare MFA e non inviare ripetutamente credenziali mentre aspetti l'operatore.

## Catturare evidenze riproducibili {#capture-reproducible-evidence}

Avvia `ogma_browser_trace_start` prima dell'interazione pertinente e conserva il suo `trace_id`. Aggiungi note con `ogma_browser_trace_note`, arresta con `ogma_browser_trace_stop`, poi esporta con `ogma_browser_trace_export`. L'esportazione crea un artefatto JSON nel progetto attivo. Le tracce sono log leggeri di eventi, non registrazioni video o tracce complete delle prestazioni di DevTools.

Per confronti dell'interfaccia prima e dopo, ottieni un'istantanea e archiviala con `ogma_browser_snapshot_save`. Ripeti dopo l'azione e confronta con `ogma_browser_page_state_compare`. Vengono conservate solo 20 istantanee archiviate. L'equivalenza dell'interfaccia o una differenza nel codice di stato sono evidenze di supporto, non la prova di una vulnerabilità di autorizzazione.

Usa `ogma_browser_action_correlation` quando un risultato include `browser_action_id`. La correlazione associa gli eventi alla finestra temporale di un'azione; le richieste in background possono sovrapporsi. Conserva evidenze esatte di richieste e risposte prima di trarre conclusioni. Le schermate integrano le evidenze semantiche e HTTP quando il layout è importante.

## Ripristino dopo gli errori {#recover-from-errors}

| Errore o sintomo | Passaggio successivo |
| --- | --- |
| `stale_snapshot` | Ottieni un'istantanea completa e scegli un nuovo riferimento. Non riprovare con il vecchio riferimento. |
| Elemento nascosto o disabilitato, oppure `pointer_intercepted` | Ispeziona una nuova istantanea o schermata, chiudi le sovrapposizioni quando appropriato oppure attendi lo stato previsto. Non ricorrere per impostazione predefinita a un clic forzato. |
| Selettore non trovato | Ispeziona nuovamente DOM o modulo attuale, scheda e frame. Usa un selettore realmente presente in quel contesto. |
| `ambiguous_match` o `option_not_found` | Ispeziona etichette e valori reali delle opzioni e affina la selezione. |
| `human_takeover_active` | Attendi l'operatore e completa o riprendi il passaggio di controllo corretto; non continuare a inviare azioni al browser. |
| L'azione sembra bloccata | Controlla lo stato dei dialoghi, i delta di console e rete e la pagina attuale prima di ripetere un'azione potenzialmente non idempotente. |
| Il browser è andato in crash o il bridge è disconnesso | Chiama `ogma_browser_health`, poi `ogma_browser_recover`. Se restituisce `relaunch_required`, chiama `ogma_browser_launch`. |
| La connessione MCP è stata riavviata | Riconnettiti, riscopri lo stato e scarta i vecchi token di conferma e riferimenti alle istantanee. I blocchi note della sessione non sono note persistenti. |

Il ripristino conserva le evidenze catturate per impostazione predefinita, ma cancella istantanee obsolete e stato transitorio delle interazioni. Ricontrolla poi l'autenticazione e il contesto della scheda. Questi strumenti migliorano la copertura del browser; non garantiscono che ogni sito web, flusso di accesso o test di sicurezza possa essere completato senza intervento umano.
