This does one half of browser automation — it observes and never clicks. That narrowness is the appeal: one call returns the structure, the traffic and the errors together, which is usually enough to explain why a page misbehaves without giving a model the ability to change anything on it.
A single-tool MCP server built on Playwright. Give it a URL and it loads the page in a real browser, then hands back the accessibility tree with reference IDs on interactive elements, every network request and response, and whatever the page logged to the console.
- `website_snapshot`, which takes `target_url` and returns the whole capture in one response
- The accessibility tree as structured text — headings, links, buttons and navigation, each interactive element tagged `[ref=1]`-style so a later step can target it precisely
- Network requests and responses recorded during page load, with status codes
- Console output collected while the page ran: logs, warnings and errors
- A summary line counting elements, requests and console messages
No account and no key. Python 3.11 or newer and uv. Clone the repository, `uv sync`, then `uv run playwright install` to get the browsers — that step is easy to skip and nothing works without it. The client config runs `uv --directory /path/to/mcp-web-snapshot run python src/server.py`. Viewport, user agent and the 15-second timeout are edited in the `CONFIG` dictionary in `src/tools/snapshot_url.py`. Package name `mcp-web-snapshot` at 0.1.0, MIT.
