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
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"
}
}
}
}Add to your project's .mcp.json:
{
"mcpServers": {
"snaprender": {
"command": "npx",
"args": ["-y", "snaprender-mcp"],
"env": {
"SNAPRENDER_API_KEY": "sk_live_your_key_here"
}
}
}
}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).
Authentication options:
- OAuth 2.0 (recommended for MCP clients like Claude Desktop). The server supports OAuth 2.0 Authorization Code with PKCE. Clients that support OAuth will be prompted to sign in automatically.
- API key via
Authorization: Bearer sk_live_...orX-API-Keyheader. Works for any HTTP client.
Claude Desktop handles OAuth automatically. Just add the server URL:
{
"mcpServers": {
"snaprender": {
"type": "streamable-http",
"url": "https://app.snap-render.com/mcp"
}
}
}Claude will open a browser window for you to sign in to your SnapRender account when you first connect.
If you prefer to use an API key instead of OAuth:
{
"mcpServers": {
"snaprender": {
"type": "streamable-http",
"url": "https://app.snap-render.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key_here"
}
}
}
}# Initialize a session
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.
The server publishes standard OAuth metadata for automatic discovery:
- Authorization server:
https://app.snap-render.com/.well-known/oauth-authorization-server - Protected resource:
https://app.snap-render.com/.well-known/oauth-protected-resource/mcp
Local (npx) |
Remote (hosted) | |
|---|---|---|
| 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 |
Capture a screenshot of any website.
| Parameter | Type | Required | Description |
|---|---|---|---|
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.
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | URL to extract from |
type |
string | No | markdown, text, html, article, links, or metadata (default: markdown) |
Capture up to 50 URLs in a single batch job. Returns a job ID for polling.
| Parameter | Type | Required | Description |
|---|---|---|---|
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 |
Poll a batch job for completion status and download URLs.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id |
string | Yes | Batch job ID from batch_screenshots |
Generate a signed URL that renders a screenshot when visited. No API key needed to use the URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | URL to screenshot |
expires_in |
integer | No | Expiry in seconds (default: 86400) |
format |
string | No | Output format |
Check if a screenshot is cached without capturing.
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | URL to check |
format |
string | No | Output format |
List all webhook subscriptions for your account. Read-only.
Create a new webhook subscription.
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | HTTPS webhook endpoint URL |
events |
string[] | Yes | Events: screenshot.completed, quota.warning, quota.exceeded |
Delete a webhook subscription. Destructive.
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id |
string | Yes | ID of the webhook to delete |
Send a test event to a webhook endpoint to verify delivery.
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id |
string | Yes | ID of the webhook to test |
Get screenshot usage statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
month |
string | No | Month in YYYY-MM format (default: current month) |
Sign up for free at snap-render.com — 200 screenshots/month, no credit card required.
| Variable | Required | Description |
|---|---|---|
SNAPRENDER_API_KEY |
Yes | Your API key (starts with sk_live_) |
SNAPRENDER_URL |
No | API base URL (default: https://app.snap-render.com) |
This MCP server connects to the SnapRender API at app.snap-render.com. When you use it:
- Data sent: URLs you provide for screenshots/extraction, plus screenshot parameters. No conversation data, chat history, or Claude memory is accessed or collected.
- Data stored: URLs are logged temporarily (up to 90 days) for debugging and abuse prevention. Screenshots are cached based on your plan settings and automatically deleted after the cache TTL expires.
- Authentication: Your API key is stored locally (in your environment or MCP config) and sent to the SnapRender API via HTTPS. It is never shared with third parties.
- Third parties: Stripe (payments), Resend (transactional emails), Cloudflare (DNS/CDN). No data is sold or shared for advertising.
Full policy: https://snap-render.com/privacy
- Node.js SDK —
npm install snaprender - Python SDK —
pip install snaprender - OpenClaw Skill — Screenshot skill for OpenClaw agents
- ChatGPT Actions — OpenAPI spec for Custom GPTs
- Postman Collection — Pre-built API requests
MIT