SnapAPI MCP Server
snapapi-mcp
Servidor MCP (Model Context Protocol) para SnapAPI: toma capturas de pantalla, extrae contenido de páginas web, genera PDFs, graba vídeos y analiza páginas directamente desde herramientas de IA como Claude Desktop, Cursor, Windsurf, Cline y Zed.
¿Qué es esto?
Este paquete ejecuta un servidor MCP local que conecta tu asistente de IA con la API de captura web de SnapAPI. Una vez configurado, tu IA puede:
Tomar capturas de pantalla de cualquier URL (página completa, móvil, modo oscuro, selección de elementos, emulación de dispositivos)
Extraer contenido de páginas web y obtener texto limpio, HTML o listas de enlaces usando un navegador real
Extraer contenido optimizado para el consumo de LLM (Markdown, artículos, metadatos, datos estructurados)
Generar PDFs a partir de URLs o HTML
Grabar vídeos de sesiones de navegador con escenarios de interacción opcionales
Analizar páginas con IA (extraer + analizar en una sola llamada)
Comprobar tu cuota de uso y estadísticas de cuenta
Requisitos previos
Node.js 18 o superior
Una clave de API de SnapAPI: obtén una en app.snapapi.pics
Inicio rápido
Claude Desktop
Añádelo a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Reinicia Claude Desktop después de guardar.
Cursor
Añádelo a ~/.cursor/mcp.json:
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Windsurf
Añádelo a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Cline (VS Code)
Abre la configuración de Cline → MCP Servers → Add Server:
Command:
npxArgs:
-y snapapi-mcpEnvironment:
SNAPAPI_API_KEY=sk_live_tu_clave_aqui
VS Code (soporte nativo para MCP)
Añádelo a .vscode/mcp.json en tu espacio de trabajo (o en tu configuración de usuario):
{
"servers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Zed
Añádelo a ~/.config/zed/settings.json:
{
"context_servers": {
"snapapi": {
"command": {
"path": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}
}Instalador automatizado
Ejecuta el script de ayuda incluido:
# For Claude Desktop
./install-mcp.sh claude
# For Cursor
./install-mcp.sh cursor
# For Windsurf
./install-mcp.sh windsurfHerramientas disponibles
ping
Verifica que SnapAPI sea accesible y que tu clave de API sea válida. No requiere parámetros.
Ejemplo de prompt: "Ping SnapAPI para comprobar que funciona"
screenshot
Toma una captura de pantalla de cualquier URL con una amplia personalización.
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | * | URL a capturar |
| string | * | HTML sin procesar para renderizar (alternativa a url) |
| string | * | Markdown para renderizar (alternativa a url) |
| string | no |
|
| number | no | 1–100 para jpeg/webp (predeterminado: 80) |
| number | no | Ancho del viewport (predeterminado: 1280) |
| number | no | Alto del viewport (predeterminado: 800) |
| boolean | no | Capturar página completa desplazable |
| string | no | Selector CSS para captura de elementos |
| number | no | Espera en ms tras la carga de la página antes de capturar |
| string | no |
|
| boolean | no | Esquema de color oscuro |
| boolean | no | Bloquear redes de anuncios |
| boolean | no | Bloquear ventanas emergentes de cookies |
| string | no | CSS personalizado para inyectar |
| string | no | JS personalizado para ejecutar |
| string | no | Preajuste de dispositivo (ej. |
| string[] | no | Elementos a ocultar antes de la captura |
*Se debe proporcionar al menos uno de los siguientes: url, html o markdown.
Ejemplos de prompts:
"Toma una captura de pantalla de https://example.com en modo oscuro"
"Captura https://github.com en un iPhone 15 Pro"
"Captura una captura de pantalla de página completa de https://news.ycombinator.com con anuncios bloqueados"
"Renderiza este HTML como una captura de pantalla:
<h1>Hola</h1>"
scrape
Extrae contenido de páginas web usando un navegador real (las páginas renderizadas con JavaScript funcionan).
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | sí | URL a extraer |
| string | no |
|
| number | no | Páginas a seguir, 1–10 (predeterminado: 1) |
| number | no | Tiempo de espera adicional en ms tras la carga de la página |
| boolean | no | Bloquear imágenes/medios/fuentes para acelerar |
| string | no | Configuración regional del navegador (ej. |
| boolean | no | Usar proxy residencial para evitar bloqueos |
Ejemplos de prompts:
"Extrae el contenido de texto de https://example.com/blog"
"Obtén todos los enlaces de https://news.ycombinator.com"
"Extrae https://example.com/pricing como HTML"
extract
Extrae contenido limpio y estructurado optimizado para LLMs.
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | sí | URL desde la que extraer |
| string | no |
|
| string | no | Limitar la extracción a un elemento CSS |
| string | no | Esperar por un selector CSS antes de extraer |
| number | no | Longitud máxima de caracteres |
| boolean | no | Eliminar ruido (predeterminado: true) |
| boolean | no | Bloquear redes de anuncios |
| boolean | no | Bloquear ventanas emergentes de cookies |
| object | no | Mapa de extracción de campos personalizados |
Ejemplos de prompts:
"Extrae el contenido del artículo de https://example.com/post como markdown"
"Obtén los metadatos (título, descripción, imagen OG) de https://example.com"
"Extrae el precio y la calificación de https://example.com/product"
Genera un PDF a partir de una URL o HTML.
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | * | URL a convertir a PDF |
| string | * | HTML a convertir a PDF (alternativa a url) |
| string | no |
|
| boolean | no | Orientación horizontal |
| boolean | no | Incluir gráficos de fondo |
| number | no | Factor de escala 0.1–2 |
| string | no | Margen superior, ej. |
| string | no | Margen inferior |
| string | no | Margen izquierdo |
| string | no | Margen derecho |
| number | no | Espera en ms tras la carga de la página |
| string | no |
|
*Se debe proporcionar al menos uno de los siguientes: url o html.
Ejemplos de prompts:
"Genera un PDF de https://example.com/report en A4 horizontal"
"Convierte este HTML a un PDF con márgenes de 2cm"
analyze
Extrae contenido de una URL y analízalo con un modelo de IA en una sola llamada.
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | sí | URL a analizar |
| string | sí | Instrucción de análisis para la IA |
| string | no |
|
| number | no | Máximo de caracteres de contenido a pasar a la IA (predeterminado: 20000) |
Ejemplos de prompts:
"Analiza https://example.com/article — ¿cuáles son los argumentos principales?"
"Extrae todas las especificaciones de producto de https://example.com/product"
"¿Cuál es el sentimiento de este artículo de noticias: https://example.com/news"
video
Graba una sesión de navegador como vídeo (WebM).
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | sí | URL a grabar |
| number | no | Duración de la grabación en segundos, 1–60 (predeterminado: 5) |
| number | no | Ancho del viewport (predeterminado: 1280) |
| number | no | Alto del viewport (predeterminado: 800) |
| string | no | JavaScript a ejecutar durante la grabación (scroll, click, etc.) |
| number | no | Espera en ms antes de comenzar la grabación |
| string | no |
|
| boolean | no | Esquema de color oscuro |
| boolean | no | Bloquear redes de anuncios |
| boolean | no | Bloquear ventanas emergentes de cookies |
| string | no | Preajuste de dispositivo — usa |
Ejemplos de prompts:
"Graba un vídeo de 10 segundos de https://example.com desplazándose hacia abajo"
"Graba https://example.com en un iPhone 15 Pro"
get_usage
Comprueba tu cuota de SnapAPI y estadísticas mensuales. No requiere parámetros.
Ejemplos de prompts:
"¿Cuántas solicitudes de SnapAPI me quedan este mes?"
"Muéstrame mi uso de SnapAPI"
list_devices
Enumera todos los preajustes de dispositivos disponibles para la emulación de capturas de pantalla y vídeo. No requiere parámetros.
Ejemplo de prompt: "¿Qué preajustes de dispositivos están disponibles para capturas de pantalla?"
Variables de entorno
Variable | Requerido | Descripción |
| Sí | Tu clave de API de SnapAPI ( |
| No | URL base de la API (predeterminado: |
Desarrollo
# Clone the repo
git clone https://github.com/Sleywill/snapapi-mcp.git
cd snapapi-mcp
# Install dependencies
npm install
# Build
npm run build
# Run locally (reads MCP protocol from stdin)
SNAPAPI_API_KEY=sk_live_your_key node dist/index.jsSolución de problemas
"SNAPAPI_API_KEY environment variable is required"
Asegúrate de que el bloque env en tu configuración de MCP incluya tu clave de API. Comprueba que comienza con sk_live_.
Las herramientas no aparecen en Claude Desktop Reinicia Claude Desktop después de guardar la configuración. Comprueba los registros de MCP en:
macOS:
~/Library/Logs/Claude/mcp*.logWindows:
%APPDATA%\Claude\logs\mcp*.log
npx tarda demasiado en la primera ejecución
Usa "args": ["-y", "snapapi-mcp"] — el flag -y confirma automáticamente el aviso de instalación sin interacción.
screenshot / scrape devuelve un error
Verifica que tu clave de API sea válida en app.snapapi.pics/dashboard
Comprueba tu cuota restante con la herramienta
get_usagePara páginas con mucho JavaScript, intenta añadir
"waitUntil": "networkidle"y un valor de"delay"
La herramienta analyze devuelve un error
El endpoint de análisis requiere créditos de la API de Anthropic en el backend de SnapAPI. Usa la herramienta extract como alternativa para obtener el contenido de la página y analizarlo tú mismo.
Licencia
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sleywill/snapapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server