snaprender-mcp

MCP (Model Context Protocol) server for SnapRender Screenshot API. Lets AI agents like Claude capture website screenshots, check cache status, and monitor usage.
Published on npm: snaprender-mcp
Quick Start
With Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"snaprender": {
"command": "npx",
"args": ["-y", "snaprender-mcp"],
"env": {
"SNAPRENDER_API_KEY": "sk_live_your_key_here"
}
}
}
}
With Claude Code
Add to your project's .mcp.json:
{
"mcpServers": {
"snaprender": {
"command": "npx",
"args": ["-y", "snaprender-mcp"],
"env": {
"SNAPRENDER_API_KEY": "sk_live_your_key_here"
}
}
}
}
Remote Mode (no install)
Connect any MCP client directly to the hosted server — zero dependencies, works instantly:
https://app.snap-render.com/mcp
Uses Streamable HTTP transport (MCP spec 2025-03-26). Authenticate via Authorization: Bearer sk_live_... or X-API-Key header.
Claude Desktop (remote)
{
"mcpServers": {
"snaprender": {
"type": "streamable-http",
"url": "https://app.snap-render.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key_here"
}
}
}
}
Any MCP client (curl example)
curl -X POST https://app.snap-render.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: sk_live_your_key_here" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
The server returns an Mcp-Session-Id header — pass it in subsequent requests to reuse the session.
Local vs Remote
| Install | Requires Node.js + npx | None — just an HTTPS URL |
| Transport | stdio | Streamable HTTP |
| Latency | Slightly lower (local process) | Slightly higher (network hop) |
| Use case | Claude Desktop, Claude Code | Any MCP client, Smithery, web apps |
Tools (11 total)
take_screenshot
Capture a screenshot of any website.
url | string | Yes | URL to capture |
format | string | No | png, jpeg, webp, or pdf (default: png) |
width | integer | No | Viewport width 320-3840 (default: 1280) |
height | integer | No | Viewport height 200-10000 (default: 800) |
full_page | boolean | No | Capture entire scrollable page |
device | string | No | iphone_14, iphone_15_pro, pixel_7, ipad_pro, macbook_pro |
dark_mode | boolean | No | Enable dark mode |
block_ads | boolean | No | Block ads (default: true) |
block_cookie_banners | boolean | No | Remove cookie banners (default: true) |
quality | integer | No | JPEG/WebP quality 1-100 (default: 90) |
delay | integer | No | Wait ms after page load (default: 0) |
hide_selectors | string | No | Comma-separated CSS selectors to hide |
click_selector | string | No | CSS selector to click before capture |
Extract content from a web page as markdown, text, HTML, links, or metadata.
url | string | Yes | URL to extract from |
type | string | No | markdown, text, html, article, links, or metadata (default: markdown) |
batch_screenshots
Capture up to 50 URLs in a single batch job. Returns a job ID for polling.
urls | string[] | Yes | Array of URLs (max 50) |
format | string | No | Output format (default: png) |
width | integer | No | Viewport width |
height | integer | No | Viewport height |
get_batch_status
Poll a batch job for completion status and download URLs.
job_id | string | Yes | Batch job ID from batch_screenshots |
sign_screenshot_url
Generate a signed URL that renders a screenshot when visited. No API key needed to use the URL.
url | string | Yes | URL to screenshot |
expires_in | integer | No | Expiry in seconds (default: 86400) |
format | string | No | Output format |
check_screenshot_cache
Check if a screenshot is cached without capturing.
url | string | Yes | URL to check |
format | string | No | Output format |
list_webhooks
List all webhook subscriptions for your account. Read-only.
create_webhook
Create a new webhook subscription.
url | string | Yes | HTTPS webhook endpoint URL |
events | string[] | Yes | Events: screenshot.completed, quota.warning, quota.exceeded |
delete_webhook
Delete a webhook subscription. Destructive.
webhook_id | string | Yes | ID of the webhook to delete |
test_webhook
Send a test event to a webhook endpoint to verify delivery.
webhook_id | string | Yes | ID of the webhook to test |
get_usage
Get screenshot usage statistics.
month | string | No | Month in YYYY-MM format (default: current month) |
Get an API Key
Sign up for free at snap-render.com — 200 screenshots/month, no credit card required.
Environment Variables
SNAPRENDER_API_KEY | Yes | Your API key (starts with sk_live_) |
SNAPRENDER_URL | No | API base URL (default: https://app.snap-render.com) |
Related
License
MIT