npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

snaprender-mcp

v1.5.4

Published

MCP server for SnapRender Screenshot API — lets AI agents capture website screenshots

Readme

snaprender-mcp

smithery badge npm License: MIT

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)

# 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.

Local vs Remote

| | 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 |

Tools (11 total)

take_screenshot

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

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) |

batch_screenshots

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 |

get_batch_status

Poll a batch job for completion status and download URLs.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | 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.

| 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_screenshot_cache

Check if a screenshot is cached without capturing.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | 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.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | url | string | Yes | HTTPS webhook endpoint URL | | events | string[] | Yes | Events: screenshot.completed, quota.warning, quota.exceeded |

delete_webhook

Delete a webhook subscription. Destructive.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | webhook_id | string | Yes | ID of the webhook to delete |

test_webhook

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_usage

Get screenshot usage statistics.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | 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

| 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) |

Related

License

MIT