Skip to main content
Glama
README.md
# @corralimited/snapdiff-mcp

Standalone MCP server for [SnapDiff](https://snapdiff.ai). Exposes four tools to local agents:

- **Compare two web pages visually** — diff percentage plus a highlighted diff image
- **Capture a screenshot** of any URL
- **Check whether a page changed** vs. a previous capture
- **Render HTML/CSS to an image** (OG cards, social images, email headers)

Hits the public SnapDiff REST API. Bring your own [API key](https://snapdiff.ai/dashboard).

---

## Quickstart

Get an API key at https://snapdiff.ai/dashboard, then drop the snippet for your agent below.

### Claude Code

```bash
claude mcp add snapdiff -e SNAPDIFF_API_KEY=sk_live_... -- npx -y @corralimited/snapdiff-mcp
```

Or edit `~/.claude/settings.json`:

```json
{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}
```

### Cursor

`~/.cursor/mcp.json` (or project-level `.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}
```

### Cline (VS Code)

`Cline > MCP Servers > Edit Config`:

```json
{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}
```

### Zed

`~/.config/zed/settings.json`:

```json
{
  "context_servers": {
    "snapdiff": {
      "command": {
        "path": "npx",
        "args": ["-y", "@corralimited/snapdiff-mcp"],
        "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
      }
    }
  }
}
```

### Continue

`~/.continue/config.yaml`:

```yaml
mcpServers:
  - name: snapdiff
    command: npx
    args: ["-y", "@corralimited/snapdiff-mcp"]
    env:
      SNAPDIFF_API_KEY: sk_live_...
```

### Anything else with a generic stdio MCP slot

```
command: npx
args:    -y @corralimited/snapdiff-mcp
env:     SNAPDIFF_API_KEY=sk_live_...
```

---

## Tools

| Name                          | Purpose                                                                                                                                                                                                                                                                                                                                  |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `snapdiff_verify_ui_change`   | Checks whether a visual change matches the agent's stated intent. Returns `verdict` (`pass` / `expected_change_detected` / `unexpected_regression` / `no_change_detected` / `needs_human_review`) and a `next_action`. Requires a project + baseline. **Use this in the verification loop.** |
| `snapdiff_compare_pages`      | Raw visual diff between two URLs, or a URL vs. a stored project baseline. Use for ad-hoc diffs that don't fit the verify-ui-change verdict shape.                                                                                                                                                                                        |
| `snapdiff_capture_screenshot` | Single screenshot of a URL.                                                                                                                                                                                                                                                                                                              |
| `snapdiff_html_to_image`      | Render HTML/CSS to an image (OG cards, social images, email headers).                                                                                                                                                                                                                                                                    |

Schemas live in [`src/tools/`](./src/tools/) and are exported from `@corralimited/snapdiff-mcp/tools`.
The hosted SnapDiff backend imports the same schemas so its in-process `/mcp` endpoint and this
standalone stdio server expose an identical surface — agents see the same tool names, descriptions,
and parameters whether they connect to `https://api.snapdiff.ai/mcp` or run this server locally.

---

## Remote HTTP access

This package speaks **stdio only** — your editor spawns it as a subprocess, and the
Playwright-backed localhost tools run on your machine, where your dev server actually
is. It does not open a port.

If you need an HTTP endpoint, use the hosted one at `https://mcp.snapdiff.ai/mcp`,
which authenticates every request with your API key and exposes the same tool surface.

---

## Configuration

| Env var            | Required | Notes                                                            |
| ------------------ | -------- | ---------------------------------------------------------------- |
| `SNAPDIFF_API_KEY` | yes      | Get one at https://snapdiff.ai/dashboard                         |
| `SNAPDIFF_API_URL` | no       | Override the API base. Defaults to `https://api.snapdiff.ai/v1`. |

There are no CLI flags beyond `--help`.

---

## License

MIT — see [LICENSE](./LICENSE).

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation3/5

There is overlap between snapdiff_compare_pages (baseline compare mode) and snapdiff_verify_ui_change, both comparing against a baseline. Also snapdiff_capture_screenshot and snapdiff_capture_baseline both capture screenshots, but baseline is project-specific. Descriptions help disambiguate but some tools have similar functionality.

Naming Consistency4/5

All tools share the 'snapdiff_' prefix and follow a verb_noun pattern (capture_baseline, capture_screenshot, check_build, compare_pages, verify_ui_change). 'html_to_image' deviates slightly but remains clear. Overall consistent.

Tool Count5/5

With 6 tools, the set covers core visual testing workflows (baseline capture, ad-hoc screenshots, page comparison, build checks, HTML rendering, and verification with intent) without being bloated. Appropriate for the domain.

Completeness4/5

Covers main visual testing operations. Missing explicit baseline management (list, delete) or approval tools, but the review_url in verify_ui_change suggests human approval is external. Minor gap but workflow is functional.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive