Site-Shot

Official MCP server for the Site-Shot website screenshot API — capture_screenshot & capture_full_page with real Chromium, full-page capture, country proxies, and ad/cookie-banner removal.

Documentation

Site-Shot MCP server

Give Claude, Cursor, and other AI agents the ability to see any web page — take website screenshots with Site-Shot over the Model Context Protocol.

Real Chromium rendering · full-page capture · country proxies · automatic ad & cookie-banner removal (cleaner images, fewer vision tokens).

Quick start (Claude Desktop)

  1. Get a Site-Shot API key at https://www.site-shot.com/pricing/.
  2. Add this to your Claude Desktop config (claude_desktop_config.json):
{
  "mcpServers": {
    "site-shot": {
      "command": "npx",
      "args": ["-y", "site-shot-mcp"],
      "env": { "SITESHOT_API_KEY": "YOUR_API_KEY" }
    }
  }
}
  1. Restart Claude Desktop. Ask it to "take a full-page screenshot of https://news.ycombinator.com" and it will call the server and show you the image.

Works the same way in any MCP client (Cursor, Cline, VS Code, LangChain, CrewAI) — point the client at npx -y site-shot-mcp with SITESHOT_API_KEY in the environment.

Tools

capture_screenshot

Screenshot a web page (viewport by default).

ParamTypeDefaultNotes
urlstring (required)Page to capture
full_pagebooleanfalseCapture the whole scrollable page
width / heightnumber1280 / 1024Viewport / device size
format"png" | "jpeg"pngImage format
block_adsbooleantrueRemove ads
block_cookie_bannersbooleantrueRemove cookie-consent popups
countrystringProxy country as a two-letter ISO 3166-1 alpha-2 code, e.g. "DE" (auto IP/lang/tz/geo)
strict_countrybooleantrueError out if the country has no proxy, instead of falling back to the US
language / time_zone / geolocationstringManual overrides
wait_msnumberWait before capture (SPAs/animations)
max_heightnumber20000 (full page)Cap captured height

Returns the screenshot as an MCP image.

Country codes are ISO codes, never names. Pass "DE", not "Germany". The API matches codes exactly and would otherwise render through a US proxy without telling you, so the server rejects full names before spending a render. strict_country (on by default) likewise turns an unavailable country into an error instead of a silent US screenshot — pass false to opt back into the fallback. Supported countries →

capture_full_page

Same as capture_screenshot with full-page capture enabled.

Configuration

Env varRequiredDescription
SITESHOT_API_KEYyesYour Site-Shot API key (used as userkey).

The server is a thin wrapper over the existing Site-Shot HTTP API (https://api.site-shot.com/) — no separate backend.

Local development

npm install
npm run check   # syntax check
npm run smoke   # offline tests (stubbed fetch, no API key needed)
SITESHOT_API_KEY=yourkey npm start   # run the server on stdio

Requirements

Node.js ≥ 18 (uses the built-in fetch).

License

MIT