Volver al blog

Automatización del Navegador a través de MCP: Controla un Navegador en la Nube con Scrapeless

Ethan Brown
Ethan Brown

Advanced Bot Mitigation Engineer

22-Jul-2026

Resumen:

  • El servidor Scrapeless MCP expone 16 herramientas browser_* que controlan un navegador en la nube alojado, por lo que un script puede hacer clic, desplazarse, navegar y leer páginas renderizadas sin Chromium local.
  • browser_create devuelve un id de sesión, y cada llamada posterior, browser_goto, browser_get_text, browser_close, lleva ese id para actuar en el mismo navegador.
  • Las herramientas renderizan JavaScript: navegar por una página de citas renderizadas por el cliente y leerla devuelve 10 citas renderizadas.
  • Este es el contrapartida de scrape_markdown: usa la herramienta de contenido para una página que puedes obtener en una sola llamada, y las herramientas de navegador cuando la página necesita interacción o espera.
  • No se involucra ninguna clave de proveedor de modelo, porque las herramientas de navegador se llaman directamente a través de la sesión MCP.
  • Comienza en el plan gratuito de Scrapeless y controla tu primer navegador en la nube.

Algunas páginas no entregan su contenido en una sola solicitud. Los datos aparecen después de un clic, un desplazamiento o una espera a que se ejecute un script, y una obtención única devuelve la estructura antes de que ocurra cualquiera de estos. El servidor Scrapeless MCP responde a esto con un conjunto de herramientas de navegador que controlan un verdadero navegador en la nube a través del Protocolo de Contexto del Modelo, por lo que tu código emite acciones de alto nivel y el navegador se ejecuta en la infraestructura de Scrapeless.

Esta guía se conecta al servidor, enumera las herramientas de navegador y maneja una sesión desde la creación hasta la lectura renderizada y un cierre limpio, todo verificado contra el servidor en vivo y el navegador en vivo. No hay ningún modelo en el bucle, por lo que nada aquí es un vacío.

El Servidor Scrapeless MCP ofrece 21 herramientas, y 16 de ellas son controles del navegador: creación y desmantelamiento, navegación, clics, escritura, desplazamiento, pulsaciones de teclas, capturas de pantalla y esperas. Controlan un navegador en la nube Scrapeless alojado, que es el mismo tipo de control programático que una pila de automatización local obtiene de el Protocolo DevTools de Chrome, excepto que el navegador es remoto y no hay nada que instalar. El post de Scrapeless Scraping Browser cubre ese navegador en la nube y su modelo de concurrencia en profundidad.

Estas se encuentran junto a las herramientas de contenido. scrape_markdown devuelve una página en una sola llamada y es la elección correcta cuando una obtención es suficiente. Las herramientas browser_* son para las páginas que necesitan una sesión: interactuar, esperar y luego leer.

Requisitos previos

  • Python 3.10 o superior.
  • Una clave de API de Scrapeless desde el panel, exportada como SCRAPELESS_API_KEY.
  • Sin navegador local. Las herramientas controlan un navegador en la nube en Scrapeless.

Instalación

Instala la biblioteca del cliente MCP.

bash Copy
pip install mcp

Establece tu clave Scrapeless en la terminal. Usa la clave real en tiempo de ejecución y mantén el marcador fuera de tu fuente.

bash Copy
export SCRAPELESS_API_KEY="sk_your_key_here"

Abre una conexión HTTP streamable al servidor, inicializa la sesión y lista las herramientas. Filtrando al prefijo browser_ muestra el vocabulario de interacción que ofrece el navegador en la nube.

python Copy
import asyncio
import os

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client


async def main() -> None:
    async with streamablehttp_client(
        "https://api.scrapeless.com/mcp", headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]}
    ) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            names = sorted(tool.name for tool in (await session.list_tools()).tools)
            browser_tools = [name for name in names if name.startswith("browser_")]
            print("total de herramientas:", len(names))
            print("herramientas de navegador:", len(browser_tools))
            print(", ".join(browser_tools))


asyncio.run(main())

El servidor informa de 21 herramientas, 16 de ellas controles del navegador.

text Copy
total de herramientas: 21
herramientas de navegador: 16
browser_click, browser_close, browser_create, browser_get_html, browser_get_text, browser_go_back, browser_go_forward, browser_goto, browser_press_key, browser_screenshot, browser_scroll, browser_scroll_to, browser_snapshot, browser_type, browser_wait, browser_wait_for

La capa de transporte y el mensaje siguen la especificación del Protocolo de Contexto del Modelo, que se basa en la especificación JSON-RPC 2.0.

Las herramientas del navegador son con estado, por lo que el patrón es crear, actuar, leer, cerrar. browser_create devuelve un id de sesión en su texto; captúralo y pásalo a cada llamada posterior. El ejemplo navega a una página de citas renderizadas con JavaScript y lee el texto renderizado.

python Copy
import asyncio
import os
import re

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client


def text_of(result) -> str:
    return "\n".join(block.text for block in result.content if getattr(block, "type", None) == "text")


async def main() -> None:
    async with streamablehttp_client(
        "https://api.scrapeless.com/mcp", headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]}
    ) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            created = text_of(await session.call_tool("browser_create", {}))
            session_id = re.search(r"ID:\s*([a-z0-9-]+)", created).group(1)
            print("sesión creada:", bool(session_id))

            await session.call_tool("browser_goto", {"sessionId": session_id, "url": "https://quotes.toscrape.com/js/"})
            text = text_of(await session.call_tool("browser_get_text", {"sessionId": session_id}))
            print("citas renderizadas:", text.count("Tags:"))
            print("contiene una cita:", "El mundo tal como lo hemos creado" in text)

            await session.call_tool("browser_close", {"sessionId": session_id})
            print("sesión cerrada: True")


asyncio.run(main())

La página de citas obtiene su contenido con JavaScript, y el navegador en la nube lo ejecuta, por lo que browser_get_text devuelve las citas renderizadas en lugar de un contenedor vacío.

text Copy
sesión creada: True
citas renderizadas: 10
contiene una cita: True
sesión cerrada: True

Las 10 citas renderizadas son la prueba de que el navegador ejecutó el JavaScript de la página; una simple búsqueda de la misma URL devuelve cero. A partir de aquí, browser_click, browser_type y browser_scroll extienden la sesión a páginas que necesitan interacción antes de que aparezca el contenido, y browser_close libera el navegador en la nube cuando se ha completado el trabajo.

Conclusión

Las herramientas del navegador MCP de Scrapeless convierten un navegador en la nube en un conjunto de acciones de alto nivel que cualquier cliente MCP puede llamar. Conéctate, lista las 16 herramientas del navegador, crea una sesión, navega, lee el texto renderizado y cierra, todo sin un navegador local y sin un modelo en el bucle. Opta por scrape_markdown cuando una sola llamada obtenga la página, y para las herramientas del navegador cuando la página necesite una sesión para entregar su contenido. Comienza con los scripts anteriores y agrega los clics, tipos y desplazamientos que tu objetivo requiera.

Crea una cuenta gratuita en Scrapeless para obtener una clave API, y revisa los precios de Scrapeless cuando planees un trabajo recurrente.

FAQ

P: ¿Las herramientas del navegador MCP de Scrapeless necesitan un navegador local?

No. Las herramientas browser_* controlan un navegador en la nube alojado en Scrapeless, por lo que un script controla un navegador real sin necesidad de instalar Chromium localmente. Esa es la diferencia con una pila de automatización local: el navegador se ejecuta de forma remota y emites acciones a través de la sesión MCP.

P: ¿Cómo mantienen estado las herramientas del navegador entre llamadas?

browser_create devuelve un id de sesión, y cada llamada subsiguiente pasa ese id en su argumento sessionId. El id vincula browser_goto, browser_get_text y las herramientas de interacción al mismo navegador, que es cómo un flujo de múltiples pasos actúa en una página en lugar de comenzar de nuevo en cada llamada.

P: ¿En qué se diferencia esto de scrape_markdown?

scrape_markdown obtiene y devuelve una página en una sola llamada, que es ideal cuando el contenido está disponible para leer. Las herramientas del navegador abren una sesión con estado para páginas que necesitan clics, escritura, desplazamiento o una espera antes de que el contenido exista, y devuelven el resultado renderizado que la herramienta de contenido no puede alcanzar en esas páginas.

P: ¿Las herramientas del navegador renderizan JavaScript?

Sí. El navegador en la nube ejecuta los scripts de la página, por lo que navegar por una página renderizada por el cliente y llamar a browser_get_text devuelve el contenido renderizado, que en la ejecución verificada fue de 10 citas de una página de citas en JavaScript. Una simple búsqueda de la misma página no devuelve ninguna de ellas.

P: ¿Qué herramientas del navegador están disponibles?

El servidor expone 16: browser_create, browser_close, browser_goto, browser_go_back, browser_go_forward, browser_get_text, browser_get_html, browser_click, browser_type, browser_press_key, browser_scroll, browser_scroll_to, browser_screenshot, browser_snapshot, browser_wait y browser_wait_for. Juntas cubren navegación, interacción, espera y lectura.

P: ¿Necesito una clave de proveedor de modelo para usar las herramientas del navegador?
No. Las herramientas del navegador se llaman directamente a través de la sesión MCP con solo la clave de API de Scrapeless, ya que no hay un modelo que decida qué herramienta llamar. Una clave de proveedor de modelo solo importaría si entregaras estas herramientas a un marco de agente y dejaras que un modelo las controlara.

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar