webshot-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
webshot-mcp
Give your agent eyes — without giving it a browser or your network.
An MCP server with two tools, screenshot and page_text, that connects to a
Chrome you already have running (over CDP) and captures full pages or single
elements. No browser is ever launched or downloaded; private-network targets
are blocked by an SSRF-aware URL policy.
Why this exists
Two lessons from running visual check → fix loops with coding agents:
Launching a browser per screenshot is the slow, flaky way. A persistent headless Chromium (Docker sidecar, CI service, your desktop Chrome with
--remote-debugging-port) is warm, shared, and reliable. The missing piece is a disciplined client: connect over CDP, open a fresh context per shot, close only what you opened, never kill the shared browser. That discipline is this repo.A screenshot tool inside your network is an SSRF proxy with a camera. An agent that can be talked into "screenshot
http://169.254.169.254/…" orhttp://redis.internal:6379/will happily photograph your cloud metadata endpoint. So the URL policy blocks loopback, RFC-1918, link-local, CGNAT, and v6-local targets — including hostnames that resolve to them — unless you allowlist the hostname explicitly. Local dev servers are the legitimate exception, and you name them one by one.
Related MCP server: mcp-cdp
Quick start
npm install
npm test # URL-policy test suite — no browser needed
npm run demo # policy walkthrough + a real screenshot if a CDP Chrome is reachableGet a CDP-enabled Chrome (any one of):
# your installed Chrome, headless
chrome --headless --remote-debugging-port=9222 --remote-debugging-address=127.0.0.1 about:blank
# or a Docker sidecar you keep running
docker run -d -p 127.0.0.1:9222:9222 chromedp/headless-shellWire into Claude Code:
claude mcp add webshot \
-e WEBSHOT_CDP_URL=http://127.0.0.1:9222 \
-e WEBSHOT_ALLOW_HOSTS=localhost,127.0.0.1 \
-- npx tsx src/server.tsThen ask the agent things like "screenshot the hero section of
localhost:5173 — just .hero — and tell me what's off": selector crops to
one element, which keeps the agent's attention (and your tokens) on the part
under discussion instead of a 4,000-px page.
Tools
Tool | Contract |
|
|
| Body |
Design notes
Fresh context per shot, shared browser for life. Contexts are cheap and isolated (cookies, cache, viewport); the browser is expensive and shared.
browser.close()on a CDP connection disconnects without killing the remote browser — the server can restart all day without touching Chrome.DNS is checked, rebinding is documented. Non-IP hostnames are resolved and every returned address re-verified against the private ranges. A malicious DNS server that answers differently on the browser's own second resolution (classic rebinding) is out of scope for a screenshot tool — noted here rather than hand-waved.
deviceScaleFactor: 2— retina captures, because agents (and humans) misread blurry text in screenshots more often than you'd think.Policy is fail-closed and testable.
evaluateUrlis a pure function with the entire threat table in its test file; the server never calls the browser before the policy says yes.
Stack
TypeScript · @modelcontextprotocol/sdk (stdio) · playwright-core (CDP
client only — no bundled browsers) · zod · vitest.
License
MIT © Brandon Ta
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Hosted browser for agents: open pages, search the web, extract data, read PDFs and take screenshots.
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
A real browser for your agent: screenshots, page checks, Markdown and PDFs.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to capture screenshots, scrape structured page content, and run automated visual checks on live websites via a headless Chromium browser.3MIT
- AlicenseAqualityBmaintenanceEnables agents to inspect and drive Electron or Chrome/Chromium apps via the Chrome DevTools Protocol, exposing DOM snapshots, console logs, network requests, and gated interactions like clicking, typing, and navigating.673 npm1MIT
- AlicenseAqualityCmaintenanceEnables agents to open websites, capture full-page screenshots in the background using a Chromium-based browser, and read saved screenshots back as images.51MIT
- AlicenseBqualityCmaintenanceEnables agents to open public http(s) URLs in headless Chromium and receive back PNG screenshots, accessibility snapshots, and visible page text in a single tool call, with SSRF protections blocking private and local addresses.213 npmMIT