Referencia del servidor MCP¶
El servidor MCP de Scrapling ofrece diecisiete herramientas para extraer datos e interactuar con el navegador mediante Model Context Protocol (MCP). Integra Scrapling en asistentes y agentes de IA para extraer datos mediante conversaciones, con funciones para evitar la detección de bots.
Inicia el servidor MCP con este comando:
O importa la clase del servidor directamente:
from scrapling.core.ai import ScraplingMCPServer
server = ScraplingMCPServer()
server.serve(http=False, host="127.0.0.1", port=8000)
Para usar tu propio ejecutable de navegador compatible con Chromium, pasa executable_path:
Modelo de respuesta¶
Las herramientas de obtención de páginas y solicitudes HTTP devuelven esta estructura, con una respuesta por llamada. Las herramientas de gestión de sesiones usan los modelos siguientes. browser_screenshot devuelve una imagen de la página o de un elemento, junto con la URL actual, como bloques de imagen y texto. browser_extract y browser_actions devuelven texto plano. Las dos herramientas de red devuelven JSON estructurado mediante los modelos siguientes. browser_evaluate devuelve el resultado como JSON dentro de un bloque de texto.
scrapling.core.ai.server.ResponseModel
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai.server.ResponseModel[ResponseModel]
click scrapling.core.ai.server.ResponseModel href "" "scrapling.core.ai.server.ResponseModel"
Estructura con la información de la respuesta a una solicitud.
Modelos de solicitudes de red¶
browser_network_requests devuelve NetworkRequestsModel con requests, next_cursor, has_more y dropped_count. Cada NetworkRequestInfo contiene id, url, method, resource_type y status. Para continuar, pasa next_cursor como after_id. has_more indica si hay más coincidencias en el historial actual.
browser_network_request devuelve NetworkRequestModel con request_id, part, data y note. Los resúmenes y las cabeceras son objetos. El contenido completo guardado se devuelve como una cadena, incluso si la respuesta contiene JSON. note explica si faltan datos del contenido o si las cabeceras están incompletas.
scrapling.core.ai._network_formatting.NetworkRequestInfo
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai._network_formatting.NetworkRequestInfo[NetworkRequestInfo]
click scrapling.core.ai._network_formatting.NetworkRequestInfo href "" "scrapling.core.ai._network_formatting.NetworkRequestInfo"
Resumen de una solicitud guardada del navegador.
scrapling.core.ai.server.NetworkRequestsModel
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai.server.NetworkRequestsModel[NetworkRequestsModel]
click scrapling.core.ai.server.NetworkRequestsModel href "" "scrapling.core.ai.server.NetworkRequestsModel"
Resúmenes de solicitudes guardadas y datos de paginación.
scrapling.core.ai._network_formatting.NetworkRequestModel
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai._network_formatting.NetworkRequestModel[NetworkRequestModel]
click scrapling.core.ai._network_formatting.NetworkRequestModel href "" "scrapling.core.ai._network_formatting.NetworkRequestModel"
Una parte completa de una solicitud guardada, con una nota opcional.
Modelos de sesiones¶
Clases de modelos para gestionar sesiones:
scrapling.core.ai.server.SessionInfo
¶
Clases base: SessionCreatedModel
flowchart TD
scrapling.core.ai.server.SessionInfo[SessionInfo]
scrapling.core.ai.server.SessionCreatedModel[SessionCreatedModel]
scrapling.core.ai.server.SessionCreatedModel --> scrapling.core.ai.server.SessionInfo
click scrapling.core.ai.server.SessionInfo href "" "scrapling.core.ai.server.SessionInfo"
click scrapling.core.ai.server.SessionCreatedModel href "" "scrapling.core.ai.server.SessionCreatedModel"
Información de una sesión de navegador abierta.
created_at
class-attribute
instance-attribute
¶
is_alive
class-attribute
instance-attribute
¶
settings
class-attribute
instance-attribute
¶
settings = Field(
default_factory=dict,
description="The effective settings this session was created with.",
)
session_id
class-attribute
instance-attribute
¶
session_type
class-attribute
instance-attribute
¶
scrapling.core.ai.server.SessionCreatedModel
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai.server.SessionCreatedModel[SessionCreatedModel]
click scrapling.core.ai.server.SessionCreatedModel href "" "scrapling.core.ai.server.SessionCreatedModel"
Respuesta que se devuelve al crear una sesión.
scrapling.core.ai.server.SessionClosedModel
¶
Clases base: BaseModel
flowchart TD
scrapling.core.ai.server.SessionClosedModel[SessionClosedModel]
click scrapling.core.ai.server.SessionClosedModel href "" "scrapling.core.ai.server.SessionClosedModel"
Respuesta que se devuelve al cerrar una sesión.
Clase del servidor MCP¶
La clase principal del servidor MCP ofrece las siguientes herramientas:
make_request: Obtiene una URL por HTTP con imitación de navegador y cierre automático del cliente. Admite GET, POST, PUT y DELETE.-
browser_fetch_once: Obtiene una URL con un navegador sigiloso, ejecuta JavaScript, gestiona Cloudflare y cierra el navegador. Usa una sesión persistente si necesitas realizar acciones después o consultar el historial de red. -
browser_extract: Lee la página actual o un elemento como una instantánea para IA, HTML, Markdown o texto, sin recargar. Conserva los resultados de formularios y acciones. Las instantáneas incluyen roles, nombres, referencias, posiciones y tamaños de los elementos. La búsqueda con expresiones regulares devuelve las líneas coincidentes, el contexto cercano y los nodos padre. -
browser_actions: Encadena movimientos del ratón, acciones al pasar el cursor, clics, desplazamientos, llenado de campos, atajos de teclado, respuestas a diálogos y esperas en una llamada. Acepta o descarta alertas y confirmaciones, o escribe en diálogos de entrada. Puedes llenar una búsqueda, enviarla, esperar y abrir un resultado sin una llamada por paso.Los movimientos y clics admiten selectores, referencias de instantáneas o coordenadas. La herramienta espera a los elementos y los lleva a la vista. Admite movimientos por pasos, clics izquierdo, derecho y central, doble clic y desplazamiento en paneles anidados.
Mantén pulsado un botón del ratón para arrastrar elementos o mover controles deslizantes. La IA puede revisar la página mientras mantiene el botón pulsado, ajustar la posición con más movimientos y soltarlo al llegar al destino.
Selecciona campos mediante selectores o referencias de instantáneas. Escribe texto, marca o desmarca casillas, selecciona botones de opción y elige una o varias opciones de listas nativas por su etiqueta. Sustituye o borra el texto, o escribe en la posición del cursor. Los atajos usan el foco actual. El modo lento añade pausas aleatorias entre los caracteres y las acciones.
Espera al contenido o a que desaparezcan los indicadores de carga mediante selectores o referencias de instantáneas. También puedes esperar a eventos de carga, a que termine la actividad de red o durante un tiempo fijo.
-
browser_evaluate: Ejecuta JavaScript en la página actual para extraer datos personalizados, calcular resultados, leer el estado de la aplicación o modificar el contenido. Admite scripts asíncronos y devuelve sus resultados como JSON. browser_observe: Ayuda al agente a entender el movimiento y los cambios mediante una breve secuencia de imágenes de la página actual.browser_network_requests: Busca solicitudes de navegador completadas entre pestañas, navegaciones y acciones. Encuentra llamadas API, errores HTTP y redirecciones guardadas. Oculta los recursos estáticos de forma predeterminada para reducir los resultados. Omite las solicitudes fallidas o incompletas. Devuelve datos estructurados con paginación.browser_network_request: Lee el resumen, las cabeceras, los datos enviados o el contenido de texto de una solicitud guardada como JSON estructurado, sin repetirla. Devuelve la parte elegida completa. Las respuestas guardadas siguen disponibles después de cambiar de página, incluidas las respuestas HTTP 4xx y 5xx. Las entradas aparecen cuando termina la captura. Consultar el historial o cerrar la sesión no espera a las capturas pendientes, que pueden perderse al navegar o cerrar. Los bytes proceden de Playwright y pueden ser distintos de los enviados por el servidor. El texto usa la decodificación UTF-8 de Playwright cuando es válida; en otro caso, usa el charset declarado. Solo se lee y guarda el contenido con unContent-Typede texto compatible. Para los tipos binarios, ausentes o desconocidos, se conservan los metadatos y las cabeceras sin leer el contenido. Esto no cambia la carga de la página. El historial tiene límites de tamaño. Una nota opcional explica si el contenido no es texto, es demasiado grande o no se puede leer. Lee los datos que necesitas antes de cerrar la sesión MCP.browser_fetch: Obtiene una página mediante una sesión de navegador sigiloso abierta y extrae HTML, Markdown, texto o una instantánea estructurada. Las instantáneas pueden cubrir toda la página o un elemento, e incluyen referencias, posiciones y tamaños para interactuar después.
scrapling.core.ai.server.ScraplingMCPServer
¶
Crea un servidor MCP de Scrapling.
| PARÁMETRO | DESCRIPCIÓN |
|---|---|
executable_path
|
Ruta global opcional a un ejecutable compatible con Chromium para las herramientas de navegador. Si no se indica, se usa la variable de entorno SCRAPLING_EXECUTABLE_PATH cuando está definida.
TIPO:
|
auth_token
|
Token compartido opcional que los clientes deben enviar como
TIPO:
|
Código fuente en scrapling/core/ai/server.py
browser_open
async
¶
browser_open(
session_id=None,
headless=True,
real_chrome=False,
timezone_id=None,
locale=None,
useragent=None,
proxy=None,
cdp_url=None,
new_context=True,
executable_path=None,
cookies=None,
hide_canvas=False,
block_webrtc=False,
allow_webgl=True,
additional_args=None,
)
Open a reusable local or remote browser session. Pass per-request options to browser_fetch.
Código fuente en scrapling/core/ai/server.py
browser_save_state
async
¶
Guarda las cookies del navegador, el almacenamiento local e IndexedDB como JSON compatible con Playwright. No incluye sessionStorage.
Código fuente en scrapling/core/ai/server.py
browser_load_state
async
¶
Sustituye las cookies del navegador, el almacenamiento local e IndexedDB por los datos de un archivo JSON compatible con Playwright.
No cambia sessionStorage ni las pestañas abiertas. Carga o recarga las páginas para usar el inicio de sesión restaurado.
Código fuente en scrapling/core/ai/server.py
open_request_session
async
¶
Abre una sesión HTTP reutilizable para session_make_request y conserva las cookies, las conexiones y la configuración de las solicitudes.
Código fuente en scrapling/core/ai/server.py
close_session
async
¶
Cierra una sesión y libera sus recursos.
Código fuente en scrapling/core/ai/server.py
list_sessions
async
¶
Muestra las sesiones registradas, su estado y su configuración activa.
Código fuente en scrapling/core/ai/server.py
browser_network_requests
async
¶
browser_network_requests(
session_id,
url_pattern=None,
include_static=False,
after_id=0,
limit=50,
)
List completed requests across page changes, with IDs and pagination. Recording starts when the browser session opens and closing does not wait for running captures.
Código fuente en scrapling/core/ai/server.py
browser_network_request
async
¶
Lee una parte completa de una solicitud guardada sin volver a enviarla, con datos estructurados y notas sobre su disponibilidad.
Código fuente en scrapling/core/ai/server.py
browser_extract
async
¶
browser_extract(
session_id,
extraction_type="snapshot",
target=None,
depth=None,
boxes=True,
search=None,
main_content_only=True,
)
Lee la página actual o un elemento como snapshot, HTML, Markdown o texto, sin navegar. Devuelve texto simple. La búsqueda en snapshots conserva las referencias, las rutas de antecesores y tres líneas de contexto cercano.
Código fuente en scrapling/core/ai/server.py
browser_actions
async
¶
Chain all kinds of browser actions. Do actions without multiple calls or plan ahead to execute a sequence of actions. Run mouse, field, key, dialog, and wait actions on the current page in order. Load waits observe the current document; wait for a result element for delayed navigation. Stops on the first error, identifying its action; partial effects remain. No retries. Element mouse targets auto-wait and scroll into view; coordinates and wheel do not wait for navigation or scrolling. mouse_down holds across calls for observation and further moves; mouse_up releases, including after errors. For drag and drop, move over the target twice before releasing. Cancelled/timed-out clicks attempt release.
Código fuente en scrapling/core/ai/server.py
browser_evaluate
async
¶
Ejecuta JavaScript en la página actual, espera las promesas y devuelve texto JSON sin snapshot. Devuelve valores compatibles con JSON; null y undefined se convierten en null. Si hay un fallo, no se deshacen los cambios del script. Cancelar detiene la espera, pero puede que no detenga el script.
Código fuente en scrapling/core/ai/server.py
browser_screenshot
async
¶
browser_screenshot(
session_id,
image_type="png",
full_page=False,
quality=None,
timeout=30000,
selector=None,
ref=None,
)
Captura la página actual o un elemento sin navegar y devuelve la imagen y la URL actual. Al capturar un elemento, espera a que esté disponible y lo desplaza a la vista. Usa browser_actions para otras esperas antes de la captura.
Código fuente en scrapling/core/ai/server.py
browser_observe
async
¶
Inspect browser page motion through a short sequence of timestamped viewport images. The page keeps running during and after capture. Use this tool when you get any challenge that require timed actions like games, appearing/disappearing CAPTCHAs, or interacting with any moving elements.
Código fuente en scrapling/core/ai/server.py
make_request
async
staticmethod
¶
make_request(
url,
method="GET",
impersonate="chrome",
extraction_type="markdown",
css_selector=None,
main_content_only=True,
params=None,
data=None,
json=None,
headers=None,
cookies=None,
timeout=30,
follow_redirects="safe",
max_redirects=30,
retries=3,
retry_delay=1,
proxy=None,
proxy_auth=None,
auth=None,
verify=True,
http3=False,
stealthy_headers=True,
)
Realiza una solicitud HTTP sin JavaScript. Sirve para sitios con protección baja o media.
Código fuente en scrapling/core/ai/server.py
718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 | |
browser_fetch_once
async
¶
browser_fetch_once(
url,
extraction_type="markdown",
css_selector=None,
main_content_only=True,
headless=True,
google_search=True,
real_chrome=False,
wait=0,
proxy=None,
timezone_id=None,
locale=None,
extra_headers=None,
useragent=None,
hide_canvas=False,
executable_path=None,
timeout=30000,
disable_resources=False,
wait_selector=None,
cookies=None,
network_idle=False,
wait_selector_state="attached",
block_webrtc=False,
allow_webgl=True,
solve_cloudflare=False,
additional_args=None,
pierce_shadow=False,
)
Obtiene una página con un navegador con protección contra detección y ejecución de JavaScript.
Código fuente en scrapling/core/ai/server.py
796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 | |
browser_fetch
async
¶
browser_fetch(
url,
session_id,
extraction_type="markdown",
css_selector=None,
main_content_only=True,
wait=0,
timeout=30000,
google_search=True,
network_idle=False,
load_dom=True,
disable_resources=False,
wait_selector=None,
wait_selector_state="attached",
extra_headers=None,
blocked_domains=None,
solve_cloudflare=False,
pierce_shadow=False,
)
Obtiene una URL en una sesión abierta de navegador con protección contra detección. Las opciones solo se aplican a esta solicitud.
Código fuente en scrapling/core/ai/server.py
session_make_request
async
¶
session_make_request(
url,
session_id,
method="GET",
extraction_type="markdown",
css_selector=None,
main_content_only=True,
params=None,
data=None,
json=None,
headers=None,
cookies=None,
timeout=30,
follow_redirects="safe",
max_redirects=30,
retries=3,
retry_delay=1,
auth=None,
verify=True,
http3=False,
stealthy_headers=True,
)
Realiza una solicitud HTTP con las cookies, conexiones, identidad de navegador y proxy de la sesión. Las opciones se aplican a esta solicitud.
Código fuente en scrapling/core/ai/server.py
serve
¶
Inicia el servidor MCP.
| PARÁMETRO | DESCRIPCIÓN |
|---|---|
http
|
Usa el transporte streamable-http en lugar de stdio.
TIPO:
|
host
|
Host en el que escucha cuando
TIPO:
|
port
|
Puerto en el que escucha cuando
TIPO:
|
allowed_hosts
|
Nombres de host que se aceptan. Activa la protección contra DNS rebinding.
TIPO:
|
allow_unauthenticated
|
Inicia el transporte streamable-http sin token. De forma predeterminada requiere autenticación; esta opción la desactiva de forma explícita.
TIPO:
|