snapmcp

An all-in-one MCP server that gives AI agents real eyes. 13 tools built on Playwright — terminal, code, browser, markdown, diffs, HTML, PDF, and more.

Role
Creator & Maintainer
Year
2026
Stack
TypeScriptBunPlaywrightDocker

Why snapmcp exists

AI agents are excellent with text and blind to anything visual. Ask one to check a layout, read a chart, or confirm that a command actually printed what you expected, and it has to guess. That gap shows up constantly in real work: reviewing a UI, verifying a CLI’s output, or sanity-checking a rendered document.

snapmcp closes that gap. It is a Model Context Protocol server that hands agents a camera. Instead of describing what a screen looks like, an agent calls a tool and gets back an actual image it can reason about.

What it does

The server exposes 13 tools, each focused on one kind of visual capture. An agent picks the tool that matches the task, passes a few arguments, and receives an image (or a set of images) through MCP’s standard response channel. No glue code, no custom integration per host — if the host speaks MCP, it works.

The thirteen tools

ToolCapturesTypical use
terminalShell outputShow what a command produced
codeSource filesRender code with syntax highlighting
browserWeb pagesFull-page screenshots of a URL
markdownRendered MarkdownPreview documentation
diffBefore/afterVisualize a change
htmlRaw markupInspect page structure
pdfPDF pagesVerify a document page by page
fileAny fileRead and display a file
batchMixed typesCapture several things at once
sequenceMulti-step framesRecord a process as a series
gifAnimated framesCompile frames into a GIF
documentMixed capturesBuild a multi-capture document
hintConfigurationReturn setup tips for the host

How it works

Each tool is a small, isolated handler that drives a shared Playwright/Chromium instance. Tools register themselves with the MCP SDK, so the host discovers them automatically and the surface stays easy to extend — adding a new capture type means adding one handler, not rewiring the server.

snapmcp/
├── src/
│   ├── tools/          # one handler per capture tool
│   ├── server.ts       # MCP server entry point
│   └── types.ts        # shared types
├── tests/              # full test suite
├── docker/             # multi-arch Dockerfile (amd64 + arm64)
└── package.json        # Bun runtime

Security by default

A tool that renders arbitrary input is a liability if it is careless. snapmcp ships with SSRF protection (private IPs, localhost, and DNS-rebinding are blocked), path-traversal prevention, and strict input validation — so pointing it at content does not mean pointing it at your internal network.

Install and run

It ships two ways, so it fits both local and containerized setups:

# via npm (runs on Bun, zero config)
npx snapmcp

# via Docker (multi-arch: amd64 + arm64)
docker pull ghcr.io/reeinharddd/snapmcp

Quality

The project is built to be trusted, not just to work. Every tool is covered by the test suite, and CI runs the full matrix across Linux, macOS, and Windows on each change. Releases publish to npm and to GitHub Container Registry from the same pipeline.

What’s next

MCP is still young and the surface is moving fast. The next steps are broader capture backends (beyond a single browser engine) and richer composition tools so an agent can assemble a full visual report in one call.