{
  "markdown": "# Site-Shot MCP server\n\nGive Claude, Cursor, and other AI agents the ability to **see any web page** — take website screenshots\nwith [Site-Shot](https://www.site-shot.com/) over the [Model Context Protocol](https://modelcontextprotocol.io).\n\nReal Chromium rendering · full-page capture · country proxies · automatic **ad & cookie-banner removal**\n(cleaner images, fewer vision tokens).\n\n## Quick start (Claude Desktop)\n\n1. Get a Site-Shot API key at <https://www.site-shot.com/start/>.\n2. Add this to your Claude Desktop config (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"site-shot\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"site-shot-mcp\"],\n      \"env\": { \"SITESHOT_API_KEY\": \"YOUR_API_KEY\" }\n    }\n  }\n}\n```\n\n3. Restart Claude Desktop. Ask it to *\"take a full-page screenshot of https://news.ycombinator.com\"* and\n   it will call the server and show you the image.\n\nWorks the same way in any MCP client (Cursor, Cline, VS Code, LangChain, CrewAI) — point the client at\n`npx -y site-shot-mcp` with `SITESHOT_API_KEY` in the environment.\n\n## Tools\n\n### `capture_screenshot`\nScreenshot a web page (viewport by default).\n\n| Param | Type | Default | Notes |\n|---|---|---|---|\n| `url` | string (required) | — | Page to capture |\n| `full_page` | boolean | `false` | Capture the whole scrollable page |\n| `width` / `height` | number | API default | Viewport / device size |\n| `format` | `\"png\"` \\| `\"jpeg\"` | `png` | Image format |\n| `block_ads` | boolean | `true` | Remove ads |\n| `block_cookie_banners` | boolean | `true` | Remove cookie-consent popups |\n| `country` | string | — | Proxy country as a two-letter [ISO 3166-1 alpha-2](https://www.site-shot.com/countries) code, e.g. `\"DE\"` (auto IP/lang/tz/geo) |\n| `strict_country` | boolean | `true` | Error out if the country has no proxy, instead of falling back to the US |\n| `language` / `time_zone` / `geolocation` | string | — | Manual overrides |\n| `wait_ms` | number | API default | Extra wait before capture (SPAs/animations) |\n| `max_height` | number | 20000 (full page) | Cap captured height |\n\nReturns the screenshot as an MCP image.\n\n> **\"API default\" is not a number this package gets to state.** `width`, `height` and `wait_ms`\n> are forwarded only when you pass them, so whatever applies when you don't is decided by the\n> Site-Shot API and can change without a release here. Versions up to 1.1.0 printed pixel sizes\n> for `width` / `height` that the API does not use — an agent that omitted them to take \"the\n> default\" got a different viewport, with nothing in the returned image to reveal it. Pass\n> explicit values whenever the size matters.\n\n> **Country codes are ISO codes, never names.** Pass `\"DE\"`, not `\"Germany\"`. The API matches\n> codes exactly and would otherwise render through a US proxy without telling you, so the server\n> rejects full names before spending a render. `strict_country` (on by default) likewise turns an\n> unavailable country into an error instead of a silent US screenshot — pass `false` to opt back\n> into the fallback. [Supported countries →](https://www.site-shot.com/countries)\n\n### `capture_full_page`\nSame as `capture_screenshot` with full-page capture enabled.\n\n## Why call this server instead of the agent's own browser?\n\nIf your agent drives a browser, it can screenshot pages itself — and for pages that must be signed\ninto or stepped through a flow, that is the right tool. For public URLs, delegating the capture to\nthis server is usually better engineering: every capture runs the same pipeline (no re-planning\nbetween runs), can be taken from a specific country with matching locale and time zone\n(`country` + `strict_country`), is scored by an image classifier with an escalating retry ladder\nbehind it before being returned, and costs a fraction of a cent instead of a browser session plus\nvision tokens per look. The full comparison, both directions honestly argued:\n[AI agent vs. screenshot API — who should capture the page](https://www.site-shot.com/blog/ai-agent-vs-screenshot-api/).\n\n## Configuration\n\n| Env var | Required | Description |\n|---|---|---|\n| `SITESHOT_API_KEY` | yes | Your Site-Shot API key (used as `userkey`). |\n\nThe server is a thin wrapper over the existing Site-Shot HTTP API (`https://api.site-shot.com/`) — no\nseparate backend.\n\n## Local development\n\n```bash\nnpm install\nnpm run check   # syntax check\nnpm run smoke   # offline tests (stubbed fetch, no API key needed)\nSITESHOT_API_KEY=yourkey npm start   # run the server on stdio\n```\n\n## Requirements\n\nNode.js ≥ 18 (uses the built-in `fetch`).\n\n## License\n\nMIT\n",
  "bytes": 4580,
  "sha": "b8594dff744b0ba0c6d2de0025dafaf53b217763e88753d6d5e38aa292ee5cea",
  "repo_slug": "site-shot/site-shot-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_site_shot_site_shot_mcp_d7bcdf00/readme"
}