Site-Shot

Servidor MCP oficial para la API de captura de pantalla de sitios web Site-Shot — capture_screenshot y capture_full_page con Chromium real, captura de página completa, proxies por país y eliminación de anuncios y banners de cookies.

Documentación

Servidor MCP de Site-Shot

Dale a Claude, Cursor y otros agentes de IA la capacidad de ver páginas web públicas — toma capturas de pantalla de sitios web con Site-Shot a través del Model Context Protocol.

Renderizado real con Chromium · captura de página completa · proxies por país · eliminación automática de anuncios y banners de cookies (imágenes más limpias, menos tokens de visión).

Se requiere una clave de API de Site-Shot, y se necesita un plan de API de Site-Shot de pago: las capturas consumen la cuota y los límites de API existentes de esa cuenta. La clave proviene de tu panel de Site-Shot; los precios listan los planes. La herramienta de navegador sin registro en https://www.site-shot.com/ es para comprobar la calidad de salida; no emite claves.

Claude Code (plugin)

Este repositorio funciona también como un mercado de plugins de Claude Code. El plugin ejecuta el paquete publicado site-shot-mcp a través de stdio y declara la clave de API como un ajuste sensible obligatorio, de modo que Claude Code te la solicita en lugar de pedirte que la pegues en este repositorio, un archivo de configuración o un mensaje de chat.

Instalación

claude plugin marketplace add site-shot/site-shot-mcp
claude plugin install site-shot@site-shot

o desde dentro de una sesión:

/plugin marketplace add site-shot/site-shot-mcp
/plugin install site-shot@site-shot

Ambas formas resuelven el mercado desde GitHub, por lo que solo funcionan después de que estos manifiestos estén publicados en la rama pública predeterminada del repositorio — no desde una rama local ni desde un fork que no hayas enviado.

Pruébalo antes de eso

Carga el directorio del plugin para una sola sesión:

claude --plugin-dir /absolute/path/to/site-shot-mcp/plugins/site-shot

Aquí importan dos cosas. Pasa una ruta absoluta — --plugin-dir se resuelve contra el directorio de trabajo de la sesión. E inicia esa sesión desde un directorio de proyecto ordinario, no desde este checkout: este repositorio es el paquete site-shot-mcp, por lo que npm resuelve el nombre localmente, no encuentra ningún binario enlazado y el servidor muere con sh: site-shot-mcp: command not found antes de que Claude Code lo vea. Desde un directorio no relacionado, npx obtiene el paquete publicado y lo inicia normalmente — comprobado en ambos sentidos: salida 127 en este checkout, inicio limpio de stdio desde uno vacío.

Para ejercitar la ruta de instalación real en su lugar — resolución del mercado, manifiestos y el ajuste obligatorio — añade el checkout en sí como un mercado:

claude plugin marketplace add /absolute/path/to/site-shot-mcp
claude plugin install site-shot@site-shot

Eso instala en tu ámbito de usuario; deshazlo con claude plugin uninstall site-shot@site-shot y claude plugin marketplace remove site-shot.

La clave de API

El plugin declara SITESHOT_API_KEY como un ajuste obligatorio y sensible. Claude Code te solicita la clave, la enmascara mientras escribes y la sustituye en el entorno del servidor como ${user_config.SITESHOT_API_KEY}. El almacenamiento del valor es responsabilidad de Claude Code.

Instalar sin una no es un error — Claude Code lo registra como pendiente (1 userConfig option not yet set (1 required)). Proporciónala a través del mensaje enmascarado:

/plugin configure site-shot@site-shot

Configúrala antes de esperar una captura: ese ajuste es lo que alimenta al servidor con su clave. Lo que Claude Code hace mientras no está configurada — si el servidor se lanza o no, si las herramientas se ofrecen — es comportamiento propio de Claude Code y no se documenta aquí desde la observación.

El lado del servidor es independiente de eso. Cuando se ejecuta directamente a través de stdio sin clave, igualmente se inicia e imprime una advertencia en stderr. Las herramientas de captura devuelven un error claro de clave faltante en lugar de una imagen.

El plugin añade una habilidad (site-shot:website-screenshots) y las dos herramientas de captura a continuación. No declara hooks, ni monitores, ni trabajos de captura programados; el único proceso que lanza es el servidor MCP de stdio declarado.

Codex CLI (plugin)

Este repositorio es también un mercado de plugins de Codex. Instala el mismo directorio de plugin que Claude Code — una habilidad compartida, el mismo site-shot-mcp@1.2.0 fijado a través de stdio — con su propio manifiesto, porque los dos hosts conectan la credencial de manera diferente.

Instalación

codex plugin marketplace add site-shot/site-shot-mcp
codex plugin add site-shot@site-shot

Probado contra Codex CLI 0.147.0 en macOS (arm64). Al igual que con Claude Code, estos resuelven el mercado desde GitHub, por lo que solo funcionan una vez que estos manifiestos están en la rama pública predeterminada; antes de eso, apunta codex plugin marketplace add a una ruta de checkout local en su lugar.

Instalar no es lo mismo que estar configurado, y ninguno de los dos es lo mismo que una captura exitosa. La instalación solo coloca los manifiestos en su lugar. El servidor aún necesita la clave de abajo, y una captura aún necesita un plan de Site-Shot con saldo disponible.

La clave de API

Codex reenvía la variable nombrada en el descriptor del plugin:

{ "command": "npx", "args": ["-y", "site-shot-mcp@1.2.0"], "env_vars": ["SITESHOT_API_KEY"] }

env_vars es una lista de permitidos de nombres, no de valores: ninguna clave aparece en este descriptor, en el comando de abajo, ni en la entrada manual de config.toml más adelante. Tú provisionas la clave en el entorno de la sesión desde la que inicias Codex.

macOS usa zsh por defecto, donde read -p inicia un coproceso en lugar de imprimir un mensaje — y un bloque de código etiquetado como bash no cambia el shell en el que pegas. Invoca bash explícitamente:

bash -c 'read -r -s -p "Site-Shot API key: " SITESHOT_API_KEY && printf "\n" && export SITESHOT_API_KEY && exec codex'

-s mantiene la clave fuera de la pantalla, nada aquí la pone en argv, y la exportación está limitada a esa sesión hija en lugar de permanecer en el shell desde el que escribiste.

Lo que esto no hace es configurar un Codex que inicies de otra manera. Un lanzador de escritorio o una sesión remota comienza desde su propio entorno, por lo que ejecutará el servidor sin clave hasta que la provisiones también allí.

Configuración manual de MCP en su lugar

Si prefieres no instalar el plugin, el mismo servidor de stdio se puede configurar a mano. Esto es una alternativa al plugin, no una adición — ejecuta ambos y tendrás dos configuraciones de un servidor. Elige una.

[mcp_servers.site-shot]
command = "npx"
args = ["-y", "site-shot-mcp@1.2.0"]
env_vars = ["SITESHOT_API_KEY"]

codex mcp add site-shot -- npx -y site-shot-mcp@1.2.0 escribe esa entrada por ti; añade env_vars después, ya que codex mcp add --env KEY=VALUE almacenaría la clave en el archivo en texto claro. Compruébalo con codex mcp get site-shot. Si ya tienes una entrada como esta y ahora instalas el plugin, elimina la manual deliberadamente con codex mcp remove site-shot — nada aquí edita tu configuración por ti.

En cualquier caso, la advertencia de la sección de Claude Code aplica: a menos que la entrada establezca cwd, Codex inicia el servidor desde donde ejecutaste Codex, por lo que ejecutarlo dentro de este repositorio encuentra la misma colisión de nombre local.

Claude Desktop y otros clientes MCP

  1. Obtén una clave de API de Site-Shot en https://www.site-shot.com/start/.
  2. Añade esto a tu configuración de Claude Desktop (claude_desktop_config.json):
{
  "mcpServers": {
    "site-shot": {
      "command": "npx",
      "args": ["-y", "site-shot-mcp"],
      "env": { "SITESHOT_API_KEY": "YOUR_API_KEY" }
    }
  }
}
  1. Reinicia Claude Desktop. Pídele que "tome una captura de pantalla de página completa de https://news.ycombinator.com" y llamará al servidor y te mostrará la imagen.

Funciona igual en cualquier cliente MCP (Cursor, Cline, VS Code, LangChain, CrewAI) — apunta el cliente a npx -y site-shot-mcp con SITESHOT_API_KEY en el entorno.

Cada integración anterior ejecuta el mismo servidor local de stdio, y ese paquete está publicado en npm y en el Registro MCP oficial. No está listado en el directorio público compartido de plugins de ChatGPT/Codex ni en el directorio de conectores remotos de Claude: ambas rutas requieren un endpoint MCP HTTPS alojado, que Site-Shot no ha desplegado. Hacerlo es una decisión separada.

Herramientas

Dos herramientas, ambas devuelven la captura de pantalla como una imagen MCP. No hay biblioteca guardada, ni listado, ni conversión a markdown, ni programación — este servidor captura imágenes y las devuelve.

capture_screenshot

Captura una página web (viewport por defecto).

ParámetroTipoPredeterminadoNotas
urlstring (obligatorio)—Página a capturar
full_pagebooleanfalseCaptura toda la página desplazable
width / heightnumberPredeterminado de la APITamaño de viewport / dispositivo
format"png" | "jpeg" | "webp"pngFormato de imagen. webp es sin pérdida, aproximadamente 35% más pequeño que png en la página mediana, máximo 16,383 px por lado
block_adsbooleantrueEliminar anuncios
block_cookie_bannersbooleantrueEliminar ventanas emergentes de consentimiento de cookies
countrystring—País del proxy como código de dos letras ISO 3166-1 alpha-2, p. ej. "DE" (IP/idioma/zona horaria/geo automáticos)
strict_countrybooleantrueError si el país no tiene proxy, en lugar de recurrir a EE. UU.
language / time_zone / geolocationstring—Anulaciones manuales
wait_msnumberPredeterminado de la APIEspera adicional antes de la captura (SPAs/animaciones)
max_heightnumber20000 (página completa)Límite de altura capturada

Devuelve la captura de pantalla como una imagen MCP.

"Predeterminado de la API" no es un número que este paquete pueda declarar. width, height y wait_ms se reenvían solo cuando los pasas, por lo que lo que aplique cuando no lo haces lo decide la API de Site-Shot y puede cambiar sin una versión aquí. Las versiones hasta 1.1.0 imprimían tamaños de píxeles para width / height que la API no usa — un agente que los omitiera para tomar "el predeterminado" obtenía un viewport diferente, sin nada en la imagen devuelta que lo revelara. Pasa valores explícitos siempre que el tamaño importe.

Los códigos de país son códigos ISO, nunca nombres. Pasa "DE", no "Germany". La API coincide los códigos exactamente y de lo contrario renderizaría a través de un proxy de EE. UU. sin decírtelo, por lo que el servidor rechaza nombres completos antes de gastar un renderizado. strict_country (activado por defecto) igualmente convierte un país no disponible en un error en lugar de una captura silenciosa de EE. UU. — pasa false para volver a la alternativa. Países admitidos →

capture_full_page

Igual que capture_screenshot con la captura de página completa habilitada.

¿Por qué llamar a este servidor en lugar del navegador del propio agente?

Si tu agente maneja un navegador, puede capturar páginas él mismo — y para páginas que requieren iniciar sesión o pasar por un flujo, esa es la herramienta adecuada. Para URLs públicas, delegar la captura a este servidor suele ser mejor ingeniería: cada captura ejecuta el mismo pipeline (sin replanificación entre ejecuciones), puede tomarse desde un país específico con configuración regional y zona horaria coincidentes (country + strict_country), es evaluada por un clasificador de imágenes con una escalera de reintentos creciente detrás antes de devolverse, y cuesta una fracción de centavo en lugar de una sesión de navegador más tokens de visión por mirada. La comparación completa, con ambos lados argumentados honestamente: Agente de IA vs. API de capturas — quién debería capturar la página.

Configuración

Variable de entornoObligatoriaDescripción
SITESHOT_API_KEYsíTu clave de API de Site-Shot (usada como userkey).

El servidor es un envoltorio delgado sobre la API HTTP existente de Site-Shot (https://api.site-shot.com/) — sin backend separado.

Desarrollo local

npm install
npm run check            # syntax check
npm run smoke            # offline tests (stubbed fetch, no API key needed)
node test/integration.mjs  # real stdio handshake against the local source
npm run test:plugin      # plugin/marketplace metadata tests
npm run validate:plugin  # claude plugin validate --strict (needs the claude CLI)
SITESHOT_API_KEY=yourkey npm start   # run the server on stdio

Requisitos

Node.js ≥ 18 (usa el fetch integrado).

Licencia

MIT