Snapstack

by bgaze

178 downloads
Not rated
GitHub

About

Capture any browser tab in one click and feed it to your MCP client — 100% local, no account, no telemetry.

Details

Author
bgaze
Downloads
178
Categories
Developer Tools, Other, Automation

- Capture any browser tab in one click.
- Stack screenshots locally on your own machine.
- AI reads stacked screenshots on demand via MCP.
- Works with any MCP‑capable client (e.g., Claude Code).
- 100% local – no uploads, no account, no telemetry.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Snapstack
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install both the browser extension and the always‑on local server (both install in a couple of minutes). Click the extension to capture a tab; the screenshot is stacked on your local machine. Then ask your LLM to “look at my screenshots” and it picks them up via MCP.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "snapstack": {
            "snapstack": {
                "type": "http",
                "url": "http://127.0.0.1:4123/mcp"
            }
        }
    }
}

McpServers

{
    "snapstack": {
        "type": "http",
        "url": "http://127.0.0.1:4123/mcp"
    }
}

TheSnapStack serveris a single always-on Node process: it receives browser captures from theextension, stacks them on disk, and serves them to any MCP-capable LLM client overStreamable HTTP. It listens only on127.0.0.1— nothing ever leaves your machine.

New here?The full install + usage guide lives in theextension README:snapstack-extension. This page is the technical reference.

One always-on process serves both the extension (capture) and your MCP client, decoupled by a folder on disk.

[MV3 extension] --POST /push (bytes) ┐ ▼ [SnapStack server - 127.0.0.1:4123] ├─ writes → stack on disk └─ MCP /mcp (HTTP) ← MCP client

- Capture— the extension encodes the shot as WebP (PNG fallback), downscales it, and POSTs it here.
- Stack— one image file (.webp/.png) plus a twin.json(url, title, timestamp, dimensions) per capture, namedNN <timestamp>: a stable two-digitnumber(assigned in capture order, restarts at01when the stack empties) plus a timestamp, under~/.snapstack/.
- Retrievalget_screenshotsreturns a JSONmanifest(number, absolute path, dimensions, metadata —no image bytes); the client reads only the files it needs, by path. Deletion is a separate, explicitclear_screenshotsstep.Retrieval never deletes.

- Node.js ≥ 18(tested on Node 20). No git needed at runtime.
- AnMCP-capable LLM clientspeaking theHTTP(Streamable HTTP) orstdiotransport.
- Thesnapstack-extensionloaded in your browser.

On Windows,use an Administrator terminal, otherwise the global npm install and the scheduled-task registration may get rejected.

The server ships on npm and installation is straightforward on macOS, Linux and Windows:
- Install globally:npm i -g snapstack-server
- Enable background service:snapstack enable

SnapStack auto-starts on login, restarts on crash, and updates itself on each launch.
To check its status or if an update is available, simply runsnapstackin your terminal.

snapstack # status report: service + server health, update check snapstack start | stop | restart # control the running service (this session) snapstack update # update the CLI (npm i -g) + restart the server on the latest snapstack run # run the daemon in the foreground (no auto-start)

Thedaemonself-updates on each (re)start/login; theglobal CLI(thesnapstackcommand) does not. Runsnapstack updateto bringbothto the latest in one go.

The full end-to-end walkthrough (idiomatic install paths, MCP client registration, the extension) is in theextension README.

SnapStack speaks two MCP transports over the same on-disk stack — pick whichever your client supports:

// HTTP (server already running) — register http://127.0.0.1:4123/mcp; copy deploy/mcp.json { "type": "http", "url": "http://127.0.0.1:4123/mcp" }
// stdio (the client spawns the process) { "command": "npx", "args": ["-y", "-p", "snapstack-server", "snapstack", "mcp"] }

The HTTP/mcpendpoint isstateless(a fresh server + transport per request); the stdio front-end (snapstack mcp) is spawned on demand and reads the same~/.snapstackstack.
Capture intake (/push) always stays in the running server, independent of either MCP front-end.

get_screenshotsandcount_screenshotsareread-only; onlyclear_screenshotsisdestructive.

Capture policy (shared across your browsers)

The encoding/capture settings areowned by the serverand stored in~/.snapstack/config.json, so a single edit applies toevery browserrunning the extension. They are edited from the extension'soptions page— not an environment variable — and fetched by the extension before each capture.

Two endpoints back it:GET /configreturns the effective policy;POST /configvalidates and replaces it (host- + CORS-guarded like every capture route). The file is a non-image, so a stack clear never touches it; deleting it just restores the defaults above.

- Capture server not started message in the extension:runsnapstack start(orsnapstack runin the foreground), or check the auto-start withsnapstack. Test:curl http://127.0.0.1:4123/health.
- Port already in use (EADDRINUSE):setSNAPSTACK_PORTto another value.
- snapstack: command not foundafter switching Node version(nvm, fnm, volta, Laravel Herd, nvm-windows):npm i -gdrops thesnapstackcommand in the global bin of the Node version that was active at install time only, so switching versions hides it. This is how npm globals work, not a SnapStack bug — thebackground service is unaffected and keeps capturing; only the CLI command disappears. Fix: re-runnpm i -g snapstack-serverunder the current Node version (or switch back to the one used at install).
- The client doesn't see the tools:the server must runbeforethe MCP client starts; check the config (type: "http", correct URL). Direct test:curl http://127.0.0.1:4123/count.
- Inspect the stack:ls ~/.snapstack(image files + human-readable.json).

- A question or an idea?GitHub Discussions
- Found a bug?
open an issue

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

Official Chrome DevTools MCP server for controlling and inspecting a live Chrome browser from coding agents such as Gemini, Claude, Cursor, and Copilot.

Live browser debugging for AI assistants — DOM, console, network via MCP.

AutoBrowser Approval Cloud is a paid remote MCP endpoint for AI agent browser approval MCP. It exposes structured JSON tools, a public server card, token-based access, usage receipts, and au

Automate your browser by connecting to Chrome's debugging port, preserving your login state.

Debug web applications by connecting to Chrome's developer tools via the Chrome DevTools Protocol.

An MCP server for AI-assisted frontend development using Chrome DevTools. Requires Google Chrome.

Chrome DevTools Session MCP is a paid remote MCP endpoint for AI agent browser DevTools MCP. It exposes structured JSON tools, a public server card, token-based access, usage receipts, and a

E2LLM — structured browser perception for AI E2LLM turns any live web page into SiFR: a compact, deterministic, LLM-readable model of what's on the page, what it means, and what can be done with it. Perception is the product. Action is available when you need it — always explicit, always gated. Works as a hosted remote MCP server with the AI you already use. There's no local server to run — a browser extension pairs your live browser to the server, so perception and action happen in the real browser you're already signed into.

AI-controlled browser farm — run N isolated Chromium instances with 36 MCP tools for device emulation, screenshots, network/geolocation simulation, and diagnostics. Cross-platform: Windows GUI + headed/headless on Linux/macOS.

A Chrome DevTools Extension that enables browser automation through the Model Context Protocol (MCP) for AI applications.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.