Volver al blog

AutoGen + Scrapeless: Da a tus agentes herramientas web en tiempo real a través de MCP

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

22-Jul-2026

TL;DR:

  • AutoGen carga las herramientas del Servidor MCP Scrapeless con mcp_server_tools y entrega las 21 a un agente, desde scrape_markdown hasta un conjunto completo del navegador.
  • La conexión es un objeto, StreamableHttpServerParams, que lleva el punto final y el encabezado x-api-token; no se necesita un cliente de modelo para cargar o llamar a las herramientas.
  • Cada herramienta llega como un StreamableHttpMcpToolAdapter, por lo que puedes llamar a una directamente con run_json({...}, CancellationToken()) antes de conectarla a un agente.
  • Solo AssistantAgent.run necesita una clave de proveedor de modelo; cargar las herramientas y llamar a scrape_markdown no lo requieren.
  • Una llamada a scrape_markdown devuelve la página objetivo como Markdown, lista para que el agente razone sobre ella.
  • Comienza en el plan gratuito de Scrapeless y da a tus agentes de AutoGen herramientas web reales.

AutoGen es el marco de Microsoft para aplicaciones de múltiples agentes, y sus agentes son solo tan capaces como las herramientas que poseen. Desde el principio, ninguna de esas herramientas accede a la web en vivo. El Protocolo de Contexto de Modelo cierra esa brecha: dirige AutoGen a un servidor MCP y cada herramienta que expone se convierte en una herramienta de AutoGen que tu agente puede llamar, con la misma interfaz que cualquier herramienta de función.

Esta guía conecta AutoGen al Servidor MCP Scrapeless, carga sus 21 herramientas, llama a una de verdad y adjunta el conjunto a un AssistantAgent, todo verificado contra el servidor en vivo. El único paso que necesita una clave de proveedor de modelo es la llamada de generación del agente, y esta publicación es explícita sobre dónde cae esa línea.

Por qué Scrapeless MCP

El Servidor MCP Scrapeless expone herramientas de web-scraping y de navegador que un agente puede llamar directamente, por lo que no tienes que construir ni alojar la capa de scraping tú mismo. Una conexión sirve 21 herramientas: scrape_markdown y scrape_html para contenido, google_search y google_trends para datos de búsqueda, scrape_screenshot para capturas, y un conjunto completo de browser_* que controla un navegador en la nube. AutoGen convierte cada una de ellas en una herramienta nativa a través de mcp_server_tools, sin necesidad de escribir código de adaptador.

Las herramientas browser_* controlan el navegador en la nube de Scrapeless, por lo que un agente puede navegar por una página interactiva y leer lo que se renderiza, todo en la infraestructura de Scrapeless. Para el mismo servidor conectado a un marco diferente, la publicación LangChain + Scrapeless MCP cubre el lado de LangChain.

Requisitos previos

  • Python 3.10 o posterior.
  • Una clave API de Scrapeless del panel de control, exportada como SCRAPELESS_API_KEY.
  • Una clave de proveedor de modelo (como OPENAI_API_KEY) solo para la ejecución del agente. Cargar y llamar a las herramientas no necesita una.

Instalación

Instala AutoGen con la opción adicional de MCP y el paquete de agente.

bash Copy
pip install "autogen-ext[mcp]" autogen-agentchat

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

bash Copy
export SCRAPELESS_API_KEY="sk_your_key_here"

Cargar las herramientas

StreamableHttpServerParams nombra el punto final y lleva la clave API en el encabezado x-api-token. mcp_server_tools ejecuta el apretón de manos y devuelve las herramientas del servidor como herramientas de AutoGen.

python Copy
import asyncio
import os

from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools


async def main() -> None:
    params = StreamableHttpServerParams(
        url="https://api.scrapeless.com/mcp",
        headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
    )
    tools = await mcp_server_tools(params)
    names = sorted(tool.name for tool in tools)
    print("Número de herramientas:", len(names))
    print("Herramientas:", ", ".join(names))


asyncio.run(main())

El servidor en vivo devuelve 21 herramientas, cargadas solo con la clave de Scrapeless configurada.

text Copy
Número de herramientas: 21
Herramientas: 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, google_search, google_trends, scrape_html, scrape_markdown, scrape_screenshot

La capa de transporte y mensaje sigue la especificación del Protocolo de Contexto de Modelo, que se basa en la especificación JSON-RPC 2.0. Para un servidor local, AutoGen también incluye StdioServerParams; el servidor Scrapeless es un punto final HTTP alojado, por lo que esta guía utiliza los parámetros HTTP en streaming.

Llamar a una herramienta

Cada herramienta cargada es un StreamableHttpMcpToolAdapter, y puedes llamar a una directamente antes de entregársela a un agente. run_json toma los argumentos y un token de cancelación y devuelve el resultado de la herramienta.

python Copy
import asyncio
import os

from autogen_core import CancellationToken
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools


async def main() -> None:
    params = StreamableHttpServerParams(
        url="https://api.scrapeless.com/mcp",
        headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
    )
    tools = await mcp_server_tools(params)
    scrape_markdown = next(tool for tool in tools if tool.name == "scrape_markdown")
    result = await scrape_markdown.run_json({"url": "https://quotes.toscrape.com/"}, CancellationToken())
    text = result if isinstance(result, str) else str(result)
    print("caracteres markdown:", len(text))
    print("contiene una cita:", "El mundo tal como lo hemos creado" in text)


asyncio.run(main())

La llamada devuelve la página como Markdown, y la verificación del contenido confirma que hay una cita real presente.

text Copy
caracteres markdown: 4424
contiene una cita: True

Esta es la forma en que el agente recibe el contenido de la página sobre el que puede razonar. La referencia de herramientas AutoGen MCP documenta los parámetros y el adaptador en su totalidad.

Adjunta las Herramientas a un Agente

Pasa las herramientas a un AssistantAgent junto con un cliente de modelo, y el agente las llama cuando las necesita. Este es el paso que necesita una clave de proveedor de modelo.

Nota: AssistantAgent.run necesita una clave de proveedor de modelo como OPENAI_API_KEY, que no está configurada aquí. Cargar las 21 herramientas y la llamada directa a scrape_markdown anterior se ejecuta sin ella. Este bloque se muestra con su forma exacta; solo el paso de retorno del modelo es una brecha de requisito.

python Copy
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient


async def run_agent(tools) -> None:
    model_client = OpenAIChatCompletionClient(model="gpt-4o")
    agent = AssistantAgent("web_agent", model_client=model_client, tools=tools)
    result = await agent.run(
        task="Usa scrape_markdown para obtener https://quotes.toscrape.com/ y lista las tres primeras citas con autores."
    )
    print(result.messages[-1].content)

En tiempo de ejecución, el modelo lee la tarea, llama a scrape_markdown con la URL, recibe el Markdown que la llamada directa ya demostró y escribe la respuesta. Las herramientas son los mismos objetos, ya sea que el modelo las llame o tú lo hagas.

Conclusión

AutoGen más el Servidor MCP de Scrapeless es un camino corto desde un agente básico a uno que lee la web en vivo. mcp_server_tools carga las 21 herramientas, run_json prueba que una funciona, y un argumento tools en el AssistantAgent las adjunta todas. Solo el paso de generación del agente necesita una clave de modelo, así que puedes cargar y probar toda la superficie de herramientas primero. Comienza desde los scripts anteriores, delimita las herramientas a lo que el agente necesita y deja que el modelo dirija.

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

FAQ

Q: ¿Necesita AutoGen un cliente de modelo para cargar herramientas MCP?

No. mcp_server_tools ejecuta el apretón de manos y devuelve las herramientas con solo la clave API de Scrapeless configurada, y cada herramienta se puede llamar directamente con run_json. Se requiere un cliente de modelo solo cuando adjoins las herramientas a un AssistantAgent y llamas a run, porque es en ese momento cuando el modelo decide qué herramientas llamar.

Q: ¿Cómo llamar a una herramienta MCP sin un agente?

Cada herramienta de mcp_server_tools es un StreamableHttpMcpToolAdapter con un método run_json. Pasa un diccionario de argumentos y un CancellationToken, y devuelve el resultado de la herramienta. Esta es la forma más rápida de confirmar la conexión e inspeccionar la salida de una herramienta antes de conectarla a un agente.

Q: ¿Cómo conectarme a un servidor MCP por stdio en lugar de HTTP?

Intercambia los parámetros. Usa StdioServerParams con el comando del servidor en lugar de StreamableHttpServerParams con una URL, luego pásalo a la misma llamada de mcp_server_tools. El Servidor MCP de Scrapeless es un punto final HTTP hospedado, así que esta guía utiliza los parámetros HTTP transmisibles.

Q: ¿Cómo darle a un agente solo algunas de las herramientas?

mcp_server_tools devuelve una lista, así que filtra antes de pasársela al AssistantAgent. Pasarle a un agente solo scrape_markdown y google_search es más seguro que el conjunto completo de 21 herramientas cuando la tarea solo necesita contenido y búsqueda.

Q: ¿Qué herramientas proporciona el servidor Scrapeless?

Veintiuna: scrape_markdown, scrape_html, scrape_screenshot, google_search, google_trends, y un conjunto de 16 herramientas browser_* para navegación, clics, escritura, desplazamiento y espera en un navegador en la nube. Juntas cubren la extracción de contenido, búsqueda e interacción completa con el navegador.

P: ¿Está el raspado a través de las herramientas sujeto a las reglas del objetivo?

Sí. Las herramientas obtienen páginas públicas, y tú sigues siendo responsable de cumplir con los términos de cada objetivo y sus directrices del Protocolo de Exclusión de Robots. Mantén el volumen limitado y los datos públicos, y limita el agente a las herramientas que realmente necesita la tarea.

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