Snapgrab

io.github.ArkNillPublished by GitHub account ArkNillv0.1.0Updated Oct 24, 2026

URL to screenshot with metadata. Python MCP server. Claude Vision optimized.

Overview

AI-generated overview

Snapgrab lets an assistant capture screenshots of web pages with page metadata, viewport presets, and Claude Vision token estimates.

What you can do
Snapgrab is a local Python MCP server that renders a URL with Playwright and returns a screenshot plus page metadata. Its tools include capture_screenshot (image with metadata and a vision token estimate), capture_comparison (compare desktop versus mobile or other viewports), and extract_page_metadata (metadata only, no image). It supports PNG, JPEG, and PDF output, full-page capture, CSS selector element capture, dark mode, and auto-resizing to 1568px for Claude Vision.
When to use it
Useful when an assistant needs to see or verify what a web page looks like, compare responsive layouts, or pull titles, descriptions, Open Graph tags, favicons, and HTTP status without a full screenshot. It fits visual checks, page monitoring, and feeding page images into a vision model.
Requirements
Runs locally over stdio as a Python package (pip install snapgrab, or snapgrab[mcp] for the MCP server). Requires Python and Playwright's Chromium browser, installed with playwright install chromium. Desktop only; no accounts, API keys, or environment variables are declared.
Before you install
The server fetches arbitrary URLs, so captured pages and their metadata come from third-party sites and requests reveal the target URL to those sites. Screenshots are written to local disk (for example under /tmp/snapgrab). Installing Playwright downloads a browser binary. No credentials are requested.

Installation

In SourceWeft

  1. Open Snapgrab in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Snapgrab

[PyPI] [Python] [License] [Tests]

한국어 문서 · llms.txt

URL to screenshot with metadata. Claude Vision optimized.

python
from snapgrab import capture
result = await capture("https://example.com")print(result.path)           # /tmp/snapgrab/example_com_desktop_20260317_120000.pngprint(result.metadata.title) # "Example Domain"print(result.vision_tokens)  # ~2764

Features

  • Screenshot capture — PNG, JPEG, PDF with full-page support
  • Page metadata — title, description, Open Graph tags, favicon, HTTP status
  • Claude Vision optimized — auto-resize to 1568px, token cost estimation
  • Viewport presets — desktop (1920x1080), tablet (768x1024), mobile (375x812)
  • MCP server included — 3 tools for Claude Code / MCP clients
  • Element capture — screenshot specific CSS selectors
  • Dark mode — force light/dark color scheme

Install

bash
pip install snapgrab

First run will prompt to install Playwright browsers:

bash
playwright install chromium

Usage

Python API

python
import asynciofrom snapgrab import capture
async def main():    # Basic screenshot    result = await capture("https://example.com")
    # Mobile viewport, full page    result = await capture("https://example.com", viewport="mobile", full_page=True)
    # Dark mode, JPEG format    result = await capture("https://example.com", dark_mode=True, format="jpeg")
    # Specific element    result = await capture("https://example.com", selector="#main-content")
    # Custom viewport    result = await capture("https://example.com", viewport=(1440, 900))
asyncio.run(main())

CLI

bash
snapgrab https://example.com                          # basic PNGsnapgrab https://example.com -v mobile -f             # mobile, full pagesnapgrab https://example.com --format jpeg -q 90      # JPEG quality 90snapgrab https://example.com -s "#hero" --dark-mode   # element + dark modesnapgrab https://example.com -j                       # JSON outputsnapgrab meta https://example.com                     # metadata only

MCP Server

bash
pip install "snapgrab[mcp]"snapgrab-mcp  # starts stdio MCP server

Tools:

  • capture_screenshot — capture URL with metadata and vision token estimate
  • capture_comparison — compare desktop vs mobile (or any viewports)
  • extract_page_metadata — metadata only, no screenshot

How It Works

mermaid
flowchart LR    A["🔗 URL"] --> B["Playwright\nlaunch browser"]    B --> C["📸 Screenshot\nfull page / viewport"]    C --> D["Resize for\nClaude Vision"]    D --> E["✅ Image +\nMetadata"]

CaptureResult

python
result.path            # saved file pathresult.format          # "png", "jpeg", "pdf"result.width           # viewport widthresult.height          # page height (full_page) or viewport heightresult.file_size       # bytesresult.vision_tokens   # estimated Claude Vision token costresult.vision_path     # path to Vision-optimized image (≤1568px)result.processing_time_msresult.metadata.titleresult.metadata.descriptionresult.metadata.og_titleresult.metadata.og_imageresult.metadata.favicon_urlresult.metadata.status_coderesult.metadata.url    # final URL after redirects

Used in

  • watchdeck — Web page monitoring with visual diffs and safety guards

License

MIT


Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.

Source: README.md at commit 9985f7c

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts