webshot-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@webshot-mcpScreenshot the homepage of example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted browser for agents: open pages, search the web, extract data, read PDFs and take screenshots.
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
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.617 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
- AlicenseNot gradedqualityBmaintenanceEnables any coding agent to use the user's existing Chrome profiles and logins to open tabs, read pages, fill forms, click through flows, and take screenshots.2,283 npmMIT