Screenshots By Snapshot Site

Dale ojos a tu agente: captura capturas de pantalla, detecta cambios visuales entre dos versiones de una página y analiza páginas con IA. Alojado, OAuth, plan gratuito.

Documentación

Servidor MCP de Snapshot Site

npm Node License CI

Servidor MCP oficial para la API de Snapshot Site

Herramientas

  • screenshot
  • analyze
  • compare

Estas herramientas están anotadas para clientes MCP como:

  • solo lectura
  • idempotentes
  • mundo abierto

También incluyen títulos más descriptivos, metadatos de categoría e intenciones de ejemplo para mejorar la selección de herramientas en Claude Desktop y Cursor.

Dos formas de conectarse

Alojado, con OAuth — apunta tu cliente a https://mcp.snapshot-site.com/mcp e inicia sesión. No hay ningún proceso local que ejecutar ni clave API en la configuración de tu cliente; el servidor resuelve tu cuenta desde la sesión OAuth.

Local, con una clave API — ejecuta el paquete tú mismo a través de stdio y proporciona SNAPSHOT_SITE_API_KEY. El servidor llama a la API de Snapshot Site directamente.

En cualquier caso, las llamadas cuentan contra la misma cuota del plan que las llamadas directas a la API. Nada se mide de forma diferente por haber pasado por MCP.

Credenciales

El servidor alojado no necesita credenciales — inicias sesión a través de OAuth y el servidor resuelve tu cuenta desde la sesión. Omite esta sección a menos que ejecutes el servidor tú mismo a través de stdio.

Para el modo local stdio necesitas una clave API de Snapshot Site.

  1. Regístrate para obtener una cuenta en Consola de Snapshot Site.

  2. Crea una clave API en la página Claves API.

    Snapshot Site Console — API Keys

  3. Pasa la clave al servidor como variable de entorno SNAPSHOT_SITE_API_KEY.

  4. Deja SNAPSHOT_SITE_BASE_URL en su valor predeterminado (https://api.prod.ss.snapshot-site.com) a menos que estés apuntando a una instancia autoalojada o de prueba.

Compatibilidad

Requiere Node.js 20.9 o posterior. Compilado contra @modelcontextprotocol/sdk v1.28 y probado con Claude Desktop y Cursor a través de stdio, y con cualquier cliente que hable el transporte HTTP transmisible contra el endpoint alojado.

Uso

¿No estás seguro de qué opciones usar? Previsualiza una captura y sus parámetros en el playground de la consola de Screenshot antes de conectarlos a una llamada de herramienta.

Snapshot Site Console — Screenshot playground

Flujo de descubrimiento OAuth

Lo que hace un cliente al conectarse al servidor alojado:

1. Discovery

Claude
  -> GET https://mcp.snapshot-site.com/.well-known/oauth-protected-resource

MCP
  -> responds:
     authorization_servers = https://mcp.snapshot-site.com
2. Authorization

Claude
  -> must know client_id
  -> opens:
     https://mcp.snapshot-site.com/oauth/v2/authorize
     ?client_id=...
     &redirect_uri=https://claude.ai/api/mcp/auth_callback
     &response_type=code
     &code_challenge=...
3. Token

Claude
  -> receives an access token
  -> calls the MCP server:
     POST https://mcp.snapshot-site.com/
     Authorization: Bearer <access_token>

El servidor entonces valida el token contra el emisor y resuelve la cuenta a la que pertenece antes de ejecutar la herramienta.

Verificación del despliegue

curl -s https://mcp.snapshot-site.com/.well-known/oauth-protected-resource | jq
curl -s https://mcp.snapshot-site.com/.well-known/openid-configuration | jq
curl -i https://mcp.snapshot-site.com/
curl -i -X POST https://mcp.snapshot-site.com/mcp -H 'content-type: application/json' --data '{}'

client_id manual vs implícito

  • El client_id solo se necesita para el paso de autorización.
  • Si tu cliente no puede descubrir ese client_id de antemano, introdúcelo manualmente en la interfaz del conector.
  • No se puede inyectar más tarde una vez que el flujo OAuth ha comenzado.
  • El servidor puede publicar un modo implícito experimental exponiendo un preferred_client_id en /.well-known/oauth-protected-resource.
  • Los clientes que lean estos metadatos pueden omitir la entrada manual. Los clientes que ignoren el campo aún requieren un client_id manual.

Entorno

export SNAPSHOT_SITE_API_KEY=ss_live_xxx
export SNAPSHOT_SITE_BASE_URL=https://api.prod.ss.snapshot-site.com

Compilación

pnpm install
pnpm run build

Modo local stdio

export SNAPSHOT_SITE_API_KEY=ss_live_xxx
snapshot-site-mcp

Configuración de Claude Desktop

{
  "mcpServers": {
    "snapshot-site": {
      "command": "node",
      "args": ["/absolute/path/to/snapshot-site-mcp/build/server.js"],
      "env": {
        "SNAPSHOT_SITE_API_KEY": "ss_live_xxx",
        "SNAPSHOT_SITE_BASE_URL": "https://api.prod.ss.snapshot-site.com"
      }
    }
  }
}

Configuración de Cursor

{
  "mcpServers": {
    "snapshot-site": {
      "command": "node",
      "args": ["/absolute/path/to/snapshot-site-mcp/build/server.js"],
      "env": {
        "SNAPSHOT_SITE_API_KEY": "ss_live_xxx"
      }
    }
  }
}

Modo HTTP remoto

Este paquete también admite un endpoint MCP alojado para clientes que usan mcp-remote.

Inicia el servidor HTTP:

pnpm start:http

o:

npx snapshot-site-mcp-http

Variables de entorno:

export PORT=3000
export HOST=0.0.0.0
export MCP_PATH=/mcp
export HEALTH_PATH=/healthz
export MCP_ALLOWED_HOSTS=mcp.snapshot-site.com
export SNAPSHOT_SITE_BASE_URL=https://api.prod.ss.snapshot-site.com

Configuración de cliente remoto con encabezado de clave API directa:

{
  "mcpServers": {
    "Snapshot Site MCP": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.snapshot-site.com/mcp",
        "--header",
        "x-snapshotsiteapi-key: ss_live_xxx"
      ]
    }
  }
}

El servidor alojado no tiene estado. Cada solicitud se autentica con x-snapshotsiteapi-key, lo que hace que el servicio sea seguro para ejecutar en múltiples réplicas sin afinidad de sesión.

Zitadel / OAuth

El servidor HTTP remoto también admite tokens de portador OAuth validados contra un emisor OIDC como Zitadel.

Variables de entorno:

export OIDC_ISSUER_URL=https://auth.snapshot-site.com
export OIDC_AUDIENCE=snapshot-site-mcp
export OIDC_REQUIRED_SCOPE=claudeai
export OIDC_DISCOVERY_CLIENT_ID=366546620977775166
export RESOURCE_SERVER_URL=https://mcp.snapshot-site.com
export ALLOW_API_KEY_AUTH=false
export SNAPSHOT_SITE_API_KEY=ss_server_side_xxx

En modo token de portador, el servidor MCP valida el token de acceso entrante contra el JWKS del emisor y luego usa la clave API de Snapshot Site del lado del servidor para llamar a la API backend.

También expone y actúa como proxy de:

GET /.well-known/oauth-protected-resource
GET /.well-known/openid-configuration
GET/POST /oauth/v2/*
GET /ui/*
GET/POST /oauth/register

para que los clientes MCP puedan descubrir automáticamente los metadatos del servidor de autorización.

Cuando OIDC_DISCOVERY_CLIENT_ID está configurado, los metadatos del recurso protegido también incluyen:

{
  "resource_name": "Snapshot Site MCP",
  "preferred_client_id": "366546620977775166",
  "oauth_client_metadata": {
    "client_id": "366546620977775166",
    "token_endpoint_auth_method": "none"
  }
}

Esta es una pista de compatibilidad experimental para clientes que pueden inferir el cliente público OAuth automáticamente. La entrada manual de client_id sigue siendo la alternativa confiable.

El servidor MCP también expone un shim de compatibilidad ligero de registration_endpoint en:

POST https://mcp.snapshot-site.com/oauth/register

Este shim actualmente devuelve el cliente PKCE público preconfigurado en lugar de aprovisionar un nuevo cliente Zitadel por instalación. Valida y refleja el redirect_uris solicitado por el cliente, siempre que sean URLs HTTPS válidas. Está destinado a mejorar la compatibilidad con clientes que esperan descubrimiento estilo DCR, manteniendo el flujo manual existente como alternativa.