Skip to main content
Glama

caido-screenshot-mcp

Ein MCP-Server, der formatierte Screenshots von Caido Replay-Anfrage/Antwort-Paaren erstellt, indem er das Screenshot Mode-Plugin steuert.

Caido hat keine Screenshot-API – Screenshot Mode ist ein reines Frontend-Plugin, das das DOM im Browser zu einem PNG rendert. Dieser Server erreicht es über das Chrome DevTools Protocol, klickt auf den eigenen Export des Plugins und fängt das resultierende Bild ab, bevor Electron einen Speicherdialog öffnen kann. Die Ausgabe ist die echte Ausgabe des Plugins, direkt auf die Festplatte geschrieben.

Anforderungen

  • Node >= 22 (verwendet das eingebaute WebSocket; es gibt keine npm-Abhängigkeiten)

  • Caido Desktop

  • Das Screenshot Mode-Plugin in Caido installiert

  • Caido mit --remote-debugging-port gestartet (siehe unten)

Related MCP server: Webshot MCP

Installation

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

Kein npm install-Schritt – es gibt keine Abhängigkeiten.

Caido mit dem Debug-Port starten

Das Plugin rendert im Fenster von Caido, daher muss der Server mit diesem Fenster kommunizieren. Wenn Caido normal gestartet wird, bleibt der Port geschlossen und jeder Aufruf schlägt fehl.

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

Oder manuell:

# 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

Alles auf einmal prüfen:

caido-screenshot doctor

Verwendung mit Claude Code

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

Starte Claude Code neu. Dann frag einfach: "Screenshot der aktuellen Caido-Replay-Sitzung".

Verwendung mit jedem MCP-Client

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

Tool: caido_screenshot

Parameter

Typ

Beschreibung

out_path

string

Wo das PNG gespeichert werden soll. Standard: ~/Downloads/caido-screenshot-<timestamp>.png

collection

string

Replay-Sammlung, die die Sitzung enthält. Sie wird automatisch erweitert.

session

string

Replay-Sitzung, die zuerst ausgewählt werden soll, nach Seitenleistenname (z. B. GET /login)

session_id

string

Exakte Replay-Sitzungs-ID. Bevorzugt, da eindeutig.

require_response

boolean

Lehnt reine Anfrage-Sitzungen und veraltete Vorschauen ab. Standard: true.

inline

boolean

Gibt das Bild auch im Ergebnis zurück (groß). Standard: false

Beispiele

Sobald der Server registriert ist, benennst du das Tool nie. Beschreibe, was du willst, in einfachem Englisch, und der Agent übernimmt es.

Nur das auf dem Bildschirm erfassen

Screenshot der aktuellen Caido-Replay-Anfrage

Der Agent ruft caido_screenshot auf und antwortet mit dem gespeicherten Pfad:

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

Eine Anfrage senden und dann erfassen

Das ist der häufigste Fall. Kombiniere es mit dem offiziellen Caido MCP server, der Anfragen senden kann – dieser Server erfasst das Ergebnis.

sende einen GET an https://httpbin.org/get in Caido Replay und mache einen Screenshot davon

Der Agent sendet die Anfrage, ordnet den zurückgegebenen Replay-Eintrag der befüllten Sitzung zu und erfasst genau diese Sitzungs-ID:

Schritt

Tool

Server

1

caido_send_request

caido

2

caido_list_replay_sessions

caido

3

caido_screenshot(session_id: ...)

caido-screenshot

Ordne caido_send_request.entryId dem caido_list_replay_sessions[].activeEntryId zu. Erstelle keine neue Sitzung aus requestSourceId für Antwortnachweise: Caido befüllt die Anfragevorlage, kopiert aber nicht die abgeschlossene Antwort.

Eine selbst geschriebene rohe Anfrage senden

Füge das rohe HTTP ein und sage, was du willst:

sende das in Caido Replay und mache einen Screenshot davon:

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

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

Eine bestimmte Sitzung auswählen

Sitzungen werden nach der Anfragezeile in der Seitenleiste von Caido benannt, also GET /, POST /login usw.:

Screenshot der Replay-Sitzung "POST /login"

Das wird zu caido_screenshot(session: "POST /login"). Jede Erfassung verwendet Side by Side.

Für zuverlässige Automatisierung verwende die Sitzungs-ID:

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

Wenn sich die Sitzung in einer anderen oder eingeklappten Sammlung befindet, benenne beide:

Screenshot von "01 admin create private conversation" aus der Sammlung "OBS AI Assistant IDOR - Fresh Evidence"

Das wird zu caido_screenshot(collection: "OBS AI Assistant IDOR - Fresh Evidence", session: "01 admin create private conversation"). Das Tool erweitert die Sammlung, bevor es die Sitzung auswählt, und erfasst sie Side by Side.

Achtung: caido_send_request benennt Sitzungen automatisch nach der Anfragezeile, sodass mehrere Ziele alle GET / heißen können. Benenne eine Sitzung in Caido um, bevor du sie erfasst, wenn du sie eindeutig referenzieren musst.

An einem bestimmten Ort speichern

Screenshot davon und speichere unter ~/reports/login-flow.png

Verwendung mit Codex

Starte eine interaktive Sitzung und frage auf die gleiche Weise:

codex
> screenshot the current Caido replay session

Codex fragt beim ersten Mal nach Genehmigung. Um die Eingabeaufforderung für dieses Tool zu überspringen, füge zu ~/.codex/config.toml hinzu:

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

codex exec (nicht interaktiv) wird nicht funktionieren – es erzwingt approval: never und lehnt alle MCP-Tool-Aufrufe ab, unabhängig von den Einstellungen pro Tool. Verwende eine interaktive Sitzung.

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

Umgebung

Variable

Standard

Beschreibung

CAIDO_CDP_PORT

9222

Caidos Remote-Debugging-Port

CAIDO_CDP_TIMEOUT_MS

45000

CDP-Timeout pro Aufruf

Bekannte Einschränkungen

Das sind Eigenschaften des Plugins, nicht dieses Servers:

  • Langer Inhalt wird abgeschnitten. Caidos Editoren sind CodeMirror, das nur die sichtbaren Zeilen rendert. Alles, was höher als das Caido-Fenster ist, ist nicht im DOM und kann nicht erfasst werden. Sehr lange Antworten können leer erscheinen; der Server meldet einen Fehler, anstatt eine fast leere Datei zu schreiben.

  • Header können fehlen. Das DOM-zu-Bild-Rendering lässt manchmal Zeilen aus, mit sichtbaren Lücken in den Zeilennummern. Behandle diese Bilder als illustrativ, nicht als bytegenauen Beweis – verwende Caidos eigenen Anfrage-Export, wenn es auf Präzision ankommt.

  • Das Layout ist auf Side by Side festgelegt. Der Server bietet bewusst keine Layout- oder Anordnungsoption an, damit jeder Beweis-Screenshot das gleiche berichtsfertige Format hat.

  • Screenshots sind nicht geschwärzt. Was auch immer auf dem Bildschirm ist – Authorization, Cookie, Set-Cookie – wird vollständig erfasst. Prüfe vor dem Teilen.

  • Reine Anfrage-Replay-Sitzungen werden standardmäßig abgelehnt. Screenshot Mode kann seine vorherige Vorschau behalten, wenn die ausgewählte Sitzung keine Antwort hat. Verwende --allow-no-response nur, wenn ein reiner Anfrage-Screenshot beabsichtigt ist.

Fehlerbehebung

Meldung

Ursache

Cannot reach Caido's debug port

Caido nicht mit --remote-debugging-port gestartet. Beende es und führe caido-screenshot launch aus.

Caido is showing the instance picker

Klicke im Caido-Fenster auf Connect für deine lokale Instanz.

No Screenshot button in the Replay toolbar

Keine Replay-Sitzung geöffnet, oder das Screenshot-Mode-Plugin ist nicht installiert/aktiviert.

No Replay collection matching "..."

Verwende den genauen Sammlungsnamen, der in der Replay-Seitenleiste angezeigt wird.

No Replay session matching "..."

Das Tool erweitert collection, wenn angegeben, und listet dann die sichtbaren Sitzungsnamen auf, wenn keine exakte Übereinstimmung erscheint.

has no rendered response

Die ausgewählte Sitzung wurde aus einer Anfrage erstellt oder ist noch nicht abgeschlossen. Erfasse die Sitzung, deren activeEntryId dem entryId des Sendeergebnisses entspricht.

preview is stale

Screenshot Mode zeigte einen anderen Host/Pfad (oder eine widersprüchliche sichtbare Abfrage). Es wurde nichts gespeichert; versuche es erneut mit der befüllten session_id. Schema, Kodierung, Abfragereihenfolge, weggelassene Abfragelabels und das fehlende ?-Trennzeichen von Screenshot Mode 0.8.1 werden automatisch normalisiert.

returned an empty image

Inhalt zu lang zum Rendern. Erfasse eine kürzere Anfrage/Antwort.

Lizenz

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