Snapsurf logo

Snapsurf

snapsurf MCP server navigates pages in Chromium and reports typed changes, assertions, and page evidence after browser actions.

Install Snapsurf

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "snapsurf": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "@zumer/snapsurf@latest",
        "snapsurf-mcp"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y -p @zumer/snapsurf@latest snapsurf-mcp

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 4d ago.

Overview

snapsurf MCP server gives AI agents a locally managed Chromium session for web navigation and verification. It exposes tools to open pages, find controls, perform actions, inspect semantic page digests, and compare the page after each action. Use it when an agent needs evidence about what changed rather than only the current page state. The project is experimental, and its browser session does not share cookies or storage with a user's normal browser.

Use cases

  • Navigate web pages in a managed Chromium session
  • Verify that a browser action changed page state
  • Assert that a dialog or element was added
  • Inspect structured diffs after agent actions

Key features

  • Semantic page digests
  • Typed diffs for browser actions
  • Assertions over retained diffs
  • Managed Chromium session
  • MCP server and CLI modes
  • Structured verification results

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

10/10 checks healthy over the last 61d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 4d ago via OSV.dev · @zumer/snapsurf@latest (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

npm downloads374Package downloads in the last 30 days.
Last commit18d agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.

How Snapsurf works

What snapsurf MCP server does

snapsurf MCP server provides browser navigation and verification for AI agents through a local Chromium session. Rather than returning only a snapshot of the current page, it records the transition caused by an action and describes observable differences in content, state, layout, and clickability. A result can also explicitly report that no observable change occurred or that evidence is unavailable.

The server fits the Browser Automation category and is useful for workflows where an agent must confirm that a click, input, or other browser action produced a specific result. It can run as an MCP server or through the accompanying command-line interface. The observation code can also be used as an in-page library built on SnapDOM.

How it works

A typical agent loop opens a page with browser_open, searches for controls with browser_find, performs an operation with browser_act, and then calls browser_verify. Verification returns structured content describing the latest transition and may include a diffId. That identifier can be supplied to browser_assert to check the exact retained evidence without observing the page again or moving the live baseline forward.

Assertions can test whether something changed, require specified additions such as a dialog, or reject specified removals. A separate live assertion can check current page state. Failed checks report pass: false and return an MCP error. Element identifiers belong to an observation and can expire after a new observation, so agents should locate controls again when needed.

Setup and configuration

The snapsurf MCP server requires Node.js 22 or newer. A standard stdio configuration can run it through npx:

config.json
{
  "command": "npx",
  "args": ["-y", "-p", "@zumer/snapsurf@latest", "snapsurf-mcp"]
}

Chromium for Playwright is installed automatically on first startup. On Linux systems missing required libraries, install Chromium and its dependencies with npx playwright install --with-deps chromium. To avoid downloading at startup or to pin a package version, install @zumer/snapsurf locally and point the client at mcp/server.mjs.

The package also supports a CLI daemon. Start it with npx -y @zumer/snapsurf serve, then use commands such as open, assert, and stop from another terminal. The README refers to SNAPSURF_* settings for the port, token file, and log directory, but does not list the individual variable names.

Tools and capabilities

  • browser_open opens a page in the managed Chromium session.
  • browser_find locates controls for later actions.
  • browser_act performs browser actions against a located target.
  • browser_verify produces a semantic digest and typed diff for the latest transition.
  • browser_assert checks retained evidence or evaluates current state.

Reports distinguish content, state, layout, and clickability changes. They can include structured content for programmatic handling, including assertion results and retained diff identifiers.

Limitations and notes

The snapsurf MCP server uses its own cookies and storage, so it cannot reuse signed-in sessions from a user's normal browser. An authState value of unknown is not proof that authentication succeeded. Canvas content, iframe documents, and closed shadow roots may not be fully represented in semantic reports; a scoped screenshot may be needed in those cases.

A changed: false result means that no observable change was detected, not that the requested task succeeded. Page text is treated as untrusted data. Semantic reports support redaction, but screenshots from the CLI or MCP server may still contain sensitive content. Version 0.1.3 is experimental.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Snapsurf

snapsurf is an MCP server that connects AI agents to a locally managed Chromium session for web navigation and verification. Its main tools open pages, find controls, perform browser actions, verify typed page changes, and assert conditions against retained evidence or current state.

Install it by registering a stdio command that runs `npx -y -p @zumer/snapsurf@latest snapsurf-mcp` with Node.js 22 or newer. Chromium for Playwright is installed on first startup. You can also install the npm package locally and point the client to its server file.

Yes, snapsurf works with Cursor through the same stdio server command. The repository provides client-specific integration snippets separately, while the MCP Registry name is `io.github.zumerlab/snapsurf`.

Call `browser_verify` after `browser_act`, then pass the returned `diffId` to `browser_assert`. The assertion can require additions, reject removals, or check whether a change occurred without advancing the live observation baseline.

No, snapsurf uses its own cookies and storage and cannot access signed-in sessions from your normal browser. An `authState` value of `unknown` does not establish that the managed session is authenticated.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewSnapsurf AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/snapsurf?style=directory)](https://allmcps.com/mcp/snapsurf)
HTML Embed
<a href="https://allmcps.com/mcp/snapsurf"><img src="https://allmcps.com/api/badge/snapsurf?style=directory" alt="Snapsurf on AllMCPs" /></a>