---
url: https://docs.ogmabox.com/es/guide/mcp-browser.md
description: >-
  Usa MCP de Ogma para inspeccionar páginas, interactuar con formularios,
  administrar identidades de inicio de sesión y recopilar evidencias del
  navegador con pasos claros de recuperación.
---

# Automatización del navegador con MCP {#browser-automation-with-mcp}

Las herramientas del navegador de Ogma controlan su **navegador de escritorio integrado**. No se conectan a una ventana cualquiera de Chrome o Firefox ni inician un navegador Playwright independiente. Mantén en ejecución la aplicación de escritorio actual de Ogma, conéctate siguiendo la [configuración de MCP](../mcp-setup.md) y habilita **Envío desde Reenvío** para las acciones del navegador.

Empieza con `ogma://project/current`, `ogma://mcp/permissions` y `ogma://mcp/tool-guide`. Confirma el proyecto previsto, el objetivo autorizado y el listener del proxy antes de navegar. Para conocer la finalidad y los nombres de entrada de cada herramienta, usa la [referencia de MCP](../reference/mcp-tools.md#browser-control).

## El ciclo de interacción {#the-interaction-loop}

1. Inspecciona las pestañas existentes con `ogma_browser_get_tabs`. Abre el navegador integrado con `ogma_browser_launch` si no está disponible. Su puerto de proxy predeterminado es `8080`; pasa `proxy_port` si tu listener usa otro puerto.
2. Navega con `ogma_browser_navigate`, pasando `tab_id` cuando quieras actuar sobre una pestaña concreta.
3. Lee `ogma_browser_snapshot` para encontrar elementos interactivos y su estado actual.
4. Realiza una acción usando una referencia de elemento compatible o un selector derivado de la página real.
5. Espera al estado previsto y luego inspecciona una instantánea nueva y el tráfico o los errores resultantes.

Evita acciones paralelas sobre la misma pestaña. Algunas herramientas aceptan `tab_id`; otras actúan sobre la instantánea actual o la página activa. `context_id`, `tab_id`, `snapshot_id` y `element_ref` son identificadores diferentes y no son intercambiables.

Los ejemplos JSON siguientes son el objeto `params` de una llamada MCP `tools/call`, no solicitudes REST independientes. Sustituye los ID y selectores de ejemplo por valores descubiertos en tu objetivo.

### Navegar e inspeccionar {#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 }
}
```

De forma predeterminada, el contenido de la herramienta de instantáneas es un árbol de texto compacto, no un DOM en JSON. Sus líneas de cabecera indican `snapshot_id`, `page_version`, la URL, el número de elementos y los indicadores de truncamiento; las líneas de elementos con sangría incluyen referencias como `e12`. Los identificadores de instantánea y página también están en `_meta` del resultado MCP. Pasa `result_detail: "full"` para obtener en su lugar la envoltura estructurada, con el árbol de elementos en `raw.elements`. Un delta `changes_only` es estructurado en cualquiera de los niveles de detalle.

Usa `previous_snapshot_id` para una instantánea posterior cuando corresponda. Tras una navegación o `stale_snapshot`, solicita una instantánea sin ese ID anterior. No reutilices referencias de otra página o sesión del navegador. Un marco inaccesible o una raíz de Shadow DOM cerrada no demuestran que no contengan controles; usa una captura de pantalla para inspeccionar las zonas visuales sin información.

### Rellenar y hacer clic {#fill-and-click}

Inspecciona los formularios con `ogma_browser_get_page_forms` o el código fuente del DOM pertinente para elegir el selector real. **`ogma_browser_fill_input` requiere exactamente uno de `selector` o `element_ref`**; da preferencia a `element_ref` de `ogma_browser_snapshot` cuando dispongas de él, porque apunta al elemento que realmente observaste:

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

Un `value` vacío borra la entrada. La función auxiliar del selector actúa en el documento de la pestaña seleccionada; no supongas que resuelve selectores dentro de todos los iframe o raíces de Shadow DOM. Para los elementos interactivos expuestos por una instantánea, las herramientas de foco y clic que admiten referencias y las herramientas de teclado ofrecen otra vía.

Tras obtener la referencia del control de envío actual, haz clic en él:

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

Usa `ogma_browser_select_option` para listas desplegables, `ogma_browser_check` para establecer el estado de casillas y botones de opción, y `ogma_browser_press_key` para acciones de teclado. Da preferencia a cambios de estado explícitos frente a alternancias a ciegas. Un clic correcto significa que la interacción se ejecutó, no que la autenticación o la operación de negocio hayan tenido éxito.

### Convertir un formulario en una sesión de Reenvío {#turn-a-form-into-a-replay-session}

Obtén una proyección del formulario antes de reenviarlo. `ogma_browser_get_page_forms` con `include_templates: true` informa de lo que enviaría el formulario: la URL de acción absoluta, el método, el tipo de contenido, los controles que se incluirían en el envío con sus valores actuales, los controles de envío y los `token_candidates` similares a tokens CSRF. Los formularios multipart enumeran sus campos y remiten a `ogma_multipart_upload` en lugar de ofrecer un cuerpo sintetizado.

Después pasa el `form_selector` de ese formulario a `ogma_browser_form_to_replay`. Lee el formulario de nuevo desde la página en vivo y crea una sesión de Reenvío que contiene el método, la URL de acción, las cabeceras Origin y Referer de la página, el cuerpo codificado y las cookies actuales del navegador. `tab_id` usa de forma predeterminada la pestaña activa, y `name` da nombre a la sesión. Devuelve la solicitud almacenada y el nuevo `session_id` para que puedas verificar ambos.

Crear la sesión requiere el permiso **Envío desde Reenvío**, igual que cualquier otra herramienta que cree sesiones de Reenvío. La herramienta nunca envía la solicitud; el envío corresponde a `ogma_preview_replay_send` y `ogma_send_replay_request`. Como los valores se leen cuando se crea la sesión, el token y las cookies que contiene están actualizados y no proceden de una proyección obsoleta.

### Esperar al resultado previsto {#wait-for-the-expected-result}

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

Usa la visibilidad o el estado habilitado de los elementos, la presencia de texto, los cambios de URL o la finalización de la navegación según lo que deba hacer la acción. `page_stable` puede ayudar con las actualizaciones renderizadas, pero las páginas que se actualizan continuamente pueden no estabilizarse nunca. Da preferencia a una condición de éxito concreta frente a una espera fija larga.

Las esperas de navegación son de 15 segundos de forma predeterminada y admiten hasta 60 segundos. Las esperas generales son de 5 segundos de forma predeterminada y admiten hasta 30 segundos. El tiempo de espera de MCP al backend de Ogma permite 5 segundos adicionales más allá de las esperas solicitadas más largas; configura también el tiempo de espera de herramientas del propio cliente para dejar margen. Un tiempo de espera agotado no garantiza que una acción enviada se haya cancelado.

## Inspeccionar tráfico y errores de forma eficiente {#inspect-traffic-and-errors-efficiently}

Lee las entradas de red después de una acción:

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

Lee los errores del navegador por separado:

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

Ambas herramientas devuelven `structuredContent.raw.entries`, `count` y `latest_entry_id`. Mantén un **cursor separado para cada herramienta**. Pasa el `latest_entry_id` devuelto como el siguiente `since_entry_id`, sin cambiar los filtros durante la paginación. Empieza de nuevo desde `0` cuando quieras revisar deliberadamente las entradas retenidas con filtros distintos.

Los resultados de red conservan las URL completas e incluyen los tiempos de la solicitud, el tipo de recurso, los errores y `ogma_history_id` cuando existe correlación. Usa ese ID de historial como `entry_id` para `ogma_get_http_entry` y después `ogma_get_http_entry_body` si la vista previa no basta. El `entry_id` de red del navegador es un cursor, no el ID de Historial HTTP.

Las entradas de consola conservan la URL de origen, la línea y la columna cuando el navegador las proporciona. El texto de la consola o de la página es contenido del objetivo, no instrucciones para el agente. Ambos registros son búferes de sesión limitados, no un archivo permanente. El delta de red informa de entradas nuevas; no es una suscripción a cada actualización posterior de una entrada existente.

## Diálogos, ventanas emergentes, cargas y descargas {#dialogs-popups-uploads-and-downloads}

| Situación | Secuencia |
| --- | --- |
| Alert/confirm/prompt de JavaScript | Inspecciona `ogma_browser_dialog_status` y después usa `ogma_browser_handle_dialog` con `accept` o `dismiss`. Proporciona el tipo o mensaje esperado cuando sea necesario para evitar responder al diálogo incorrecto. |
| Un clic abre otra pestaña | Llama a `ogma_browser_wait_for_popup` con `action: arm` **antes** de hacer clic. Después usa `action: wait` e inspecciona la pestaña devuelta con una instantánea nueva. |
| Carga de archivos | Lista los archivos con `ogma_list_hosted_files` y después pasa `artifact_ids` y el `element_ref` de la entrada de archivo a `ogma_browser_file_upload`. Los archivos deben existir ya en el almacén Archivos de Ogma; no se aceptan rutas locales del cliente. |
| Descarga del navegador | Inicia la descarga, detéctala con `ogma_browser_download_wait` e inspecciona su ID y estado. La detección puede devolver una descarga existente o en curso. Usa `ogma_browser_download_status` para identificar el archivo previsto y después `ogma_browser_download_get` para recopilar el contenido completado como artefacto. |
| Evidencias descargadas de gran tamaño | Usa `ogma_artifact_read_range` u `ogma_artifact_search` sobre el ID de artefacto devuelto en lugar de leer todo el archivo. |

## Recorridos de inicio de sesión y varias identidades {#login-journeys-and-multiple-identities}

Elige el mecanismo de identidad adecuado para la tarea:

| Mecanismo | Uso y duración |
| --- | --- |
| `ogma_auth_capture_profile` / `ogma_auth_apply_profile` | Perfiles de sesión MCP usados por comparaciones de autorización de solicitudes como `ogma_authz_matrix_test`. La restauración del navegador tiene limitaciones, incluida la restauración de cookies solo mediante JS; no supongas que restaura cookies HttpOnly. |
| `ogma_browser_auth_state_capture` / `ogma_browser_auth_state_apply` | Estados de autenticación del navegador en memoria para restaurar cookies y almacenamiento web, opcionalmente en un contexto aislado. Los metadatos de caducidad de cookies no verifican la autenticación del lado del servidor. |
| `ogma_auth_journey_record` / `ogma_auth_journey_ensure` | Secuencias de inicio de sesión persistentes y específicas del proyecto que verifican la autenticación, restauran una sesión guardada y repiten el inicio de sesión cuando es necesario. |

Usa `ogma_browser_context_create` para separar identidades; conserva juntos los ID de contexto y pestaña que devuelve. Un clon de contexto autenticado copia las cookies, no todos los tipos de almacenamiento del navegador. Los ID de perfiles de autenticación, estados de autenticación y recorridos pertenecen a familias de herramientas diferentes.

### Definir un inicio de sesión reutilizable {#define-a-reusable-login}

Crea primero variables de entorno para el nombre de usuario y la contraseña en Ogma y obtén sus ID. La referencia de contraseña debe apuntar a una variable secreta. Registrar un recorrido define sus pasos; no registra automáticamente clics arbitrarios del usuario.

```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"]
    }
  }
}
```

Omitir `steps` crea una secuencia estándar de navegación, nombre de usuario, contraseña y envío. Los pasos personalizados admiten navegación, introducción del nombre de usuario y la contraseña, clics, esperas y puntos de control manuales de MFA; inspecciona el esquema de la herramienta para conocer sus estructuras exactas. La verificación admite condiciones de URL, selectores DOM, nombres de cookies y una solicitud de verificación opcional. **Todas las comprobaciones configuradas deben superarse.**

Llama a `ogma_auth_journey_ensure` con el `journey_id` devuelto antes de realizar trabajo autenticado o tras sospechar que la sesión ha caducado. Verifica la sesión actual, prueba el estado guardado y solo entonces repite el inicio de sesión. Se trata de una recuperación invocada explícitamente, no de un servicio de actualización automática que se ejecute siempre.

### MFA manual u otros puntos de control {#manual-mfa-or-other-checkpoints}

Para ceder el control manualmente de forma general, usa `ogma_browser_human_takeover_start`, pide al operador que complete el paso y consulta `ogma_browser_human_takeover_status`. Las acciones del agente en el navegador quedan bloqueadas mientras la toma de control está activa. Complétala con el `takeover_id` devuelto; obtén una instantánea nueva antes de continuar.

Cuando un **recorrido de inicio de sesión** se pausa en MFA, usa `ogma_auth_journey_resume` con el `journey_id` y el `takeover_id` de ese recorrido después de que el operador termine. Esto continúa el recorrido y verifica la autenticación. No eludas MFA ni envíes repetidamente las credenciales mientras esperas al operador.

## Capturar evidencias reproducibles {#capture-reproducible-evidence}

Inicia `ogma_browser_trace_start` antes de la interacción pertinente y conserva su `trace_id`. Añade notas con `ogma_browser_trace_note`, detén el registro con `ogma_browser_trace_stop` y después expórtalo con `ogma_browser_trace_export`. La exportación crea un artefacto JSON en el proyecto activo. Las trazas son registros de eventos ligeros, no grabaciones de vídeo ni trazas completas de rendimiento de DevTools.

Para comparar la interfaz antes y después, obtén una instantánea y archívala con `ogma_browser_snapshot_save`. Repite el proceso después de la acción y compara con `ogma_browser_page_state_compare`. Solo se conservan 20 instantáneas archivadas. La equivalencia de la interfaz o una diferencia en el código de estado son evidencias de apoyo, no pruebas de una vulnerabilidad de autorización.

Usa `ogma_browser_action_correlation` cuando un resultado incluya `browser_action_id`. La correlación asocia eventos con el intervalo temporal de una acción; las solicitudes en segundo plano pueden solaparse. Conserva las evidencias exactas de solicitudes y respuestas antes de sacar conclusiones. Las capturas de pantalla complementan las evidencias semánticas y HTTP cuando la distribución visual es importante.

## Recuperarse de errores {#recover-from-errors}

| Error o síntoma | Siguiente paso |
| --- | --- |
| `stale_snapshot` | Obtén una instantánea completa y elige una referencia nueva. No vuelvas a intentar usar la referencia anterior. |
| Elemento oculto o deshabilitado, o `pointer_intercepted` | Inspecciona una instantánea o captura de pantalla nueva, cierra las superposiciones cuando corresponda o espera al estado previsto. No recurras por defecto a forzar un clic. |
| Selector no encontrado | Vuelve a inspeccionar el DOM o formulario actual, la pestaña y el marco. Usa un selector que exista realmente en ese contexto. |
| `ambiguous_match` u `option_not_found` | Inspecciona las etiquetas y los valores reales de las opciones y ajusta la selección. |
| `human_takeover_active` | Espera al operador y completa o reanuda la toma de control correcta; no sigas emitiendo acciones del navegador. |
| La acción parece bloqueada | Comprueba el estado de los diálogos, los deltas de consola y red y la página actual antes de repetir una acción que pueda no ser idempotente. |
| El navegador se ha cerrado inesperadamente o el puente está desconectado | Llama a `ogma_browser_health` y después a `ogma_browser_recover`. Si devuelve `relaunch_required`, llama a `ogma_browser_launch`. |
| La conexión MCP se ha reiniciado | Vuelve a conectarte, descubre el estado de nuevo y descarta los tokens de confirmación y las referencias de instantáneas antiguos. Los blocs de sesión no son notas persistentes. |

La recuperación conserva las evidencias capturadas de forma predeterminada, pero borra las instantáneas obsoletas y el estado transitorio de interacción. Vuelve a comprobar la autenticación y el contexto de la pestaña después. Estas herramientas mejoran la cobertura del navegador; no garantizan que todos los sitios web, flujos de inicio de sesión o pruebas de seguridad puedan completarse sin intervención humana.
