Skip to main content
Glama

caido-screenshot-mcp

Un servidor MCP que captura capturas de pantalla formateadas de los pares de solicitud/respuesta de Caido Replay, manejando el plugin Screenshot Mode.

Caido no tiene API de captura de pantalla: Screenshot Mode es un plugin solo de frontend que renderiza el DOM a un PNG en el navegador. Este servidor lo alcanza a través del Chrome DevTools Protocol, hace clic en la exportación del propio plugin e intercepta la imagen resultante antes de que Electron pueda abrir un diálogo de guardado. La salida es la salida real del plugin, escrita directamente en el disco.

Requisitos

  • Node >= 22 (usa el WebSocket integrado; no hay dependencias npm)

  • Caido de escritorio

  • El plugin Screenshot Mode instalado en Caido

  • Caido lanzado con --remote-debugging-port (ver más abajo)

Related MCP server: Webshot MCP

Instalación

git clone <this-repo> caido-screenshot-mcp
cd caido-screenshot-mcp
npm link            # optional: puts `caido-screenshot` on your PATH

No hay paso de npm install — no hay dependencias.

Iniciar Caido con el puerto de depuración

El plugin se renderiza dentro de la ventana de Caido, por lo que el servidor necesita comunicarse con esa ventana. Lanzar Caido normalmente deja el puerto cerrado y todas las llamadas fallarán.

caido-screenshot launch          # quits nothing; starts Caido with the port open

O manualmente:

# macOS
open -a Caido --args --remote-debugging-port=9222
# Linux
caido --remote-debugging-port=9222
# Windows
"%LOCALAPPDATA%\Programs\Caido\Caido.exe" --remote-debugging-port=9222

Comprueba todo de una vez:

caido-screenshot doctor

Uso con Claude Code

claude mcp add caido-screenshot --scope user -- node /absolute/path/to/caido-screenshot-mcp/src/server.mjs

Reinicia Claude Code. Luego solo pregunta: "captura la sesión actual de Caido replay".

Uso con cualquier cliente MCP

{
  "mcpServers": {
    "caido-screenshot": {
      "command": "node",
      "args": ["/absolute/path/to/caido-screenshot-mcp/src/server.mjs"]
    }
  }
}

Herramienta: caido_screenshot

Parámetro

Tipo

Descripción

out_path

string

Dónde guardar el PNG. Por defecto ~/Downloads/caido-screenshot-<timestamp>.png

collection

string

Colección de Replay que contiene la sesión. Se expande automáticamente.

session

string

Sesión de Replay a seleccionar primero, por nombre en la barra lateral (p. ej. GET /login)

session_id

string

ID exacto de la sesión de Replay. Preferido porque es inequívoco.

require_response

boolean

Rechazar sesiones solo de solicitud y vistas previas obsoletas. Por defecto true.

inline

boolean

También devolver la imagen en el resultado (grande). Por defecto false.

Ejemplos

Una vez que el servidor está registrado, nunca nombras la herramienta. Describe lo que quieres en inglés sencillo y el agente lo recoge.

Solo capturar lo que está en pantalla

captura la solicitud actual de Caido replay

El agente llama a caido_screenshot y responde con la ruta guardada:

Saved /Users/you/Downloads/caido-screenshot-2026-08-22T13-40-11-002Z.png (438 KB)

Enviar una solicitud y luego capturarla

Este es el caso común. Combínalo con el servidor MCP oficial de Caido, que puede enviar solicitudes — este servidor captura el resultado.

envía un GET a https://httpbin.org/get en Caido replay y captúralo

El agente envía la solicitud, mapea la entrada de Replay devuelta a la sesión poblada y captura ese ID de sesión exacto:

Paso

Herramienta

Servidor

1

caido_send_request

caido

2

caido_list_replay_sessions

caido

3

caido_screenshot(session_id: ...)

caido-screenshot

Haz coincidir caido_send_request.entryId con caido_list_replay_sessions[].activeEntryId. No crees una nueva sesión a partir de requestSourceId para evidencia de respuesta: Caido siembra la plantilla de solicitud pero no copia la respuesta completada.

Enviar una solicitud cruda que escribiste

Pega el HTTP crudo y di lo que quieres:

envía esto en Caido replay y captúralo:

POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/json

{"user":"demo","token":"abc123"}

Seleccionar una sesión específica

Las sesiones se nombran según la línea de solicitud en la barra lateral de Caido, así que GET /, POST /login, etc.:

captura la sesión de replay "POST /login"

Eso se convierte en caido_screenshot(session: "POST /login"). Cada captura usa Side by Side.

Para automatización confiable, usa el ID de sesión:

caido_screenshot(session_id: "67", require_response: true)

Si la sesión está dentro de una colección diferente o colapsada, nombra ambas:

captura "01 admin create private conversation" de la colección "OBS AI Assistant IDOR - Fresh Evidence"

Eso se convierte en caido_screenshot(collection: "OBS AI Assistant IDOR - Fresh Evidence", session: "01 admin create private conversation"). La herramienta expande la colección antes de seleccionar la sesión y la captura en Side by Side.

Aviso: caido_send_request nombra automáticamente las sesiones según la línea de solicitud, por lo que varios objetivos pueden terminar llamándose GET /. Renombra una sesión en Caido antes de capturarla si necesitas referirte a ella sin ambigüedad.

Guardar en un lugar específico

captúralo y guárdalo en ~/reports/login-flow.png

Usarlo desde Codex

Inicia una sesión interactiva y pregunta de la misma manera:

codex
> screenshot the current Caido replay session

Codex pide aprobación la primera vez. Para omitir el aviso de esta herramienta, agrega a ~/.codex/config.toml:

[mcp_servers.caido-screenshot.tools.caido_screenshot]
approval_mode = "auto"   # auto | prompt | writes | approve

codex exec (no interactivo) no funcionará — fuerza approval: never y rechaza todas las llamadas a herramientas MCP, independientemente de la configuración por herramienta. Usa una sesión interactiva.

CLI

caido-screenshot                                   # current session -> ~/Downloads
caido-screenshot shot.png                          # explicit path
caido-screenshot shot.png --session "GET /login"
caido-screenshot shot.png --session-id 67
caido-screenshot shot.png --collection "Fresh Evidence" --session "01 admin request"
caido-screenshot doctor
caido-screenshot launch

Entorno

Variable

Por defecto

Descripción

CAIDO_CDP_PORT

9222

Puerto de depuración remota de Caido

CAIDO_CDP_TIMEOUT_MS

45000

Tiempo de espera de CDP por llamada

Limitaciones conocidas

Estas son propiedades del plugin, no de este servidor:

  • El contenido largo se corta. Los editores de Caido son CodeMirror, que solo renderiza las líneas visibles. Cualquier cosa más alta que la ventana de Caido no está en el DOM y no se puede capturar. Las respuestas muy largas pueden salir en blanco; el servidor da error en lugar de escribir un archivo casi vacío.

  • Los encabezados pueden omitirse. El renderizado de DOM a imagen a veces omite líneas, con huecos visibles en los números de línea. Trata estas imágenes como ilustrativas, no como evidencia byte-exacta — usa la exportación de solicitudes de Caido cuando la precisión importe.

  • El diseño está fijado a Side by Side. El servidor deliberadamente no expone ninguna opción de diseño o disposición para que cada captura de evidencia tenga el mismo formato listo para informes.

  • Las capturas de pantalla no están redactadas. Todo lo que esté en pantalla — Authorization, Cookie, Set-Cookie — se captura completo. Revisa antes de compartir.

  • Las sesiones de Replay solo de solicitud se rechazan por defecto. Screenshot Mode puede conservar su vista previa anterior cuando la sesión seleccionada no tiene respuesta. Pasa --allow-no-response solo cuando una captura solo de solicitud sea intencional.

Solución de problemas

Mensaje

Causa

Cannot reach Caido's debug port

Caido no se lanzó con --remote-debugging-port. Ciérralo y ejecuta caido-screenshot launch.

Caido is showing the instance picker

Haz clic en Connect en tu instancia local en la ventana de Caido.

No Screenshot button in the Replay toolbar

No hay una sesión de Replay abierta, o el plugin Screenshot Mode no está instalado/habilitado.

No Replay collection matching "..."

Usa el nombre exacto de la colección que se muestra en la barra lateral de Replay.

No Replay session matching "..."

La herramienta expande collection cuando se proporciona, luego lista los nombres de sesión visibles si no aparece una coincidencia exacta.

has no rendered response

La sesión seleccionada se sembró desde una solicitud o no se ha completado. Captura la sesión cuyo activeEntryId sea igual al entryId del resultado del envío.

preview is stale

Screenshot Mode mostró un host/ruta diferente (o una consulta visible conflictiva). No se guardó nada; reintenta usando el session_id poblado. Esquema, codificación, orden de consulta, etiquetas de consulta omitidas y el delimitador ? faltante de Screenshot Mode 0.8.1 se normalizan automáticamente.

returned an empty image

Contenido demasiado largo para renderizar. Captura una solicitud/respuesta más corta.

Licencia

MIT

Available Tools

1 tool
caido_screenshotA

Capture a formatted screenshot of a Caido Replay request/response using the Screenshot Mode plugin. Requires Caido running with --remote-debugging-port (default 9222) and a Replay session open. Uses one consistent Side by Side layout, verifies the selected session, requires a rendered response by default, rejects stale previews, then saves a PNG and returns its path plus the verified request metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
inlineNoAlso return the image in the tool result (large). Default false.
sessionNoReplay session to select first, by the name shown in the sidebar (e.g. 'GET /login')
out_pathNoWhere to save the PNG. Defaults to ~/Downloads/caido-screenshot-<timestamp>.png
collectionNoReplay collection containing the session. The collection is expanded automatically.
session_idNoExact Replay session ID. Preferred over session name because it is unambiguous.
require_responseNoReject sessions without a rendered response to prevent stale evidence. Default true.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of transparency. It discloses multiple behavioral traits: uses a specific layout, verifies the selected session, requires a rendered response by default, rejects stale previews, saves a PNG, and returns path plus metadata. This gives the agent a strong understanding of what happens during execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, opening with the core action and then efficiently enumerating prerequisites and key behaviors. It avoids unnecessary verbosity while covering all essential aspects, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (multiple preconditions, specific layout, output behavior), the description provides sufficient context for an agent to decide when to use it. It clearly states the environment requirements, what is verified, and what is returned, without needing an output schema. The description is complete enough for operational use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with detailed descriptions for each parameter, so the baseline is 3. The tool description does not add additional insight beyond the schema's parameter explanations; it merely references the default behavior of require_response without expanding on relationships or interdependencies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures a formatted screenshot of a Caido Replay request/response using the Screenshot Mode plugin, specifying the exact resource and action. It also distinguishes itself by mentioning the Side by Side layout and the plugin, which sets it apart from generic screenshot tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit preconditions for use (Caido running with --remote-debugging-port, Replay session open) and mentions key behaviors (requires rendered response, rejects stale previews). While it doesn't explicitly contrast with alternatives, the specific prerequisites and layout make the intended use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.2.1
    • First observedcaido_screenshot

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The tool has a single, clearly defined purpose (capturing a screenshot of a Caido Replay session), so an agent cannot misselect it.

Naming Consistency5/5

The single tool follows a consistent snake_case naming convention (caido_screenshot), which is clear and predictable. There is no mix of styles or verbs to create inconsistency.

Tool Count3/5

The server provides only one tool, which feels thin for a typical MCP server. However, the tool targets a very specific, narrow use case (Caido Replay screenshot capture), so the count may be appropriate for that focused purpose, but it is borderline.

Completeness4/5

The tool covers the core workflow of capturing a formatted screenshot from a Replay session, including verification and metadata return. There are minor gaps (e.g., no options for custom layout or output format), but for its stated purpose, it is essentially complete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers