Skrapr
Una herramienta inteligente de web scraping que utiliza IA y automatización del navegador para extraer datos estructurados de sitios web.
Documentación
Skrapr - Servidor MCP
🎉 ¡Versión en la nube disponible! Completa este formulario para obtener acceso.
Skrapr es una herramienta inteligente de web scraping que combina capacidades de IA con automatización de navegador para extraer datos estructurados de sitios web.
En resumen:
url del sitio web + esquema JSON = datos estructurados del sitio web
Esta herramienta es una alternativa entre la herramienta de solicitud HTTP (volcado) y las herramientas de scraping (fuerza bruta).
Cómo funciona
flowchart LR
agent["Your AI Agent"] l1@--> | scrape_with_schema | skrapr["Skrapr"]
subgraph server [Skrapr MCP Server]
skrapr l2@--> | use tool | playwright["Playwright MCP"]
end
playwright l3@--> |navigates| website["Website"]
skrapr l4@--> | think with | openai["Azure OpenAI"]
skrapr l5@-.-> | json data | agent
classDef customer stroke:#00f, stroke-width: 2
classDef external stroke:#63af3e,stroke-width: 2,stroke-dasharray: 4
classDef group fill:#ffffa455, stroke:#ff7c7c, stroke-width: 2
agent:::customer
agent:::someclass
website:::external
openai:::external
server:::group
classDef animate stroke-dasharray: 20,stroke-dashoffset: 900,animation: dash 25s linear infinite;
class l1 animate
l2@{ animate: true }
l3@{ animate: true }
l4@{ animate: true }
l5@{ animate: true }
Herramientas disponibles
- scrape_with_schema:
- Título: Extraer datos de un sitio web basado en un esquema JSON
- Descripción: Navegar y extraer datos del sitio web proporcionado que coincidan con la estructura del Esquema JSON proporcionado.
- Parámetros:
- url: La URL del sitio web del cual extraer datos.
- jsonSchema: El Esquema JSON que describe la estructura de datos a extraer.
- instruction: Instrucciones opcionales para guiar cómo se debe realizar el scraping.
- Solo lectura: true
Ejemplo
Una vez configurado, puedes usar las capacidades de Skrapr directamente en cualquier cliente MCP (Claude Desktop, n8n, librechat, ...).
Por ejemplo, puedes pedirle a Claude:
Extrae información de productos de todas las categorías en https://example.com/products.
Quiero nombre, descripción y precio de cada producto.
El modelo creará un esquema similar y lo pasará a Skrapr:
{
"type":"object",
"properties":{
"products":{
"type":"array",
"items":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"price":{
"type":"string"
},
"description":{
"type":"string"
}
}
}
}
}
}
Skrapr navegará el sitio web, página por página, hasta que haya encontrado todos los datos que necesita.
Después del scraping, recibirás la siguiente respuesta:
{
"products": [
{
"name": "Product 1",
"price": "10",
"description": "Description of product 1"
},
{
"name": "Product 2",
"price": "20",
"description": "Description of product 2"
}
]
}
Primeros pasos con el Host MCP
Para una integración típica con un Host MCP (Claude Desktop), así es como configurarlo:
Con .NET:
{
"mcpServers": {
"skrapr": {
"command": "dotnet",
"args": [
"run",
"--project",
"path/to/Skrapr/Skrapr.csproj"
"-e", "AzureOpenAi__ApiKey=your-api-key",
"-e", "AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/",
"-e", "AzureOpenAi__DeploymentName=your-deployment-name",
"-e", "PlaywrightMcp__IsLocal=true",
]
}
}
}
Con Docker:
-
Construye la imagen de Docker:
docker build -t skrapr . -
Ejecuta el contenedor:
docker run \ -p 80:80 \ -e AzureOpenAi__ApiKey=your-api-key \ -e AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/ \ -e AzureOpenAi__DeploymentName=your-deployment-name \ -e PlaywrightMcp__IsLocal=true \ skrapr -
El servidor MCP estará disponible en
http://localhost:5000. -
Puedes configurar tu Host MCP
{ "mcpServers": { "skrapr": { "url": "http://localhost:5000/sse" } } }
Con la versión en la nube
Estoy alojando una instancia de Skrapr en la nube con todo configurado.
Si estás interesado en probarla, contáctame aquí para obtener acceso a la versión beta.
{
"mcpServers": {
"skrapr": {
"url": "https://[ask-for-url]/sse"
}
}
}
Configuración de Playwright
Playwright puede ejecutarse localmente o de forma remota.
Local
Configurar la variable de entorno PlaywrightMcp__IsLocal=true hará que Playwright se ejecute localmente.
Necesitas tener Node.js instalado para que funcione.
Usa npx @playwright/mcp para ejecutar Playwright.
Remoto
Configurar la variable de entorno PlaywrightMcp__Endpoint usará Playwright en un host remoto.
¿Cómo funciona por dentro?
Agente de IA
Skrapr utiliza un agente de IA internamente con el objetivo de:
- Comprender la estructura y el contenido del sitio web
- Navegar autónomamente por el sitio web
- Tomar decisiones estratégicas de navegación para localizar la información solicitada
- Producir un resultado JSON estructurado basado en un esquema JSON proporcionado.
Stack técnico
Utiliza:
- Semantic Kernel de Microsoft para construir el agente
- Playwright MCP para exponer herramientas de navegación de sitios web
- Azure OpenAI para capacidades de IA y extracción de datos según esquemas JSON definidos por el usuario
Gracias a MCP (Model Context Protocol), puedes conectar Skrapr a cualquier agente sin importar el lenguaje.
¿Por qué Skrapr?
Al construir un Agente de IA, es posible que quieras que el agente extraiga información fácilmente de sitios web.
Actualmente, los modelos de IA no pueden navegar sitios web de forma nativa.
Existen herramientas simples de solicitud HTTP, sin embargo, tienen algunas limitaciones:
- Sin ejecución de JavaScript: no pueden leer contenido dinámico
- La información puede no estar presente en la página cargada, sino en una subpágina
También existen herramientas de scraping, pero:
- Cargan demasiada información (scraping aleatorio)
- Tardan demasiado tiempo en hacer scraping