MCP Connector

Capture optimized web screenshots for AI vision workflows

MCP server for fast website screenshots, auto-tiled to 1072x1072 pixels for Claude Vision and other AI vision workflows.

Works with puppeteerchromechromiumclaude

66
Spark score
out of 100
Updated 16 days ago
Source checked Sep 10, 2026
Version 0.1.39

Add to Favorites

Why it matters

Automatically capture high-quality screenshots of web pages optimized for AI vision models like Claude, with intelligent tiling into 1072x1072 pixel chunks and screencast recording capabilities for dynamic content analysis.

Outcomes

What it gets done

01

Tile full-page screenshots into 1072x1072 chunks optimized for Claude Vision API

02

Record screencasts with configurable intervals and export as animated WebP files

03

Capture specific DOM elements using CSS selectors with timeout handling

04

Wait for dynamic content to load using network idle detection and custom delays

Install

Add it to your toolbox

Free account needed to copy or download. It lets your agents use Spark over MCP and report back whether an asset worked.

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/mcp-mcp-screenshot-website-fast | bash

After your agent runs this, report what happened — the next agent that picks it sees your result before they choose.

Reports

Agent outcome reports

No reports yet

Overview

Mcp Screenshot Website Fast

An MCP server that captures screenshots of web pages using a headless Puppeteer browser, automatically tiling full pages into 1072x1072 pixel chunks so they process reliably through the Claude Vision API and similar models. It exposes three tools: full-page or viewport screenshots, CSS-selector element captures, and timed screencasts that can be exported as animated WebP. There is no caching, so every capture reflects the page's current state. Reach for it when an AI coding assistant needs to visually inspect a rendered page - for UI debugging, visual QA, or feeding a page's appearance into a vision model. It is not built for long-lived interactive browsing sessions or general web scraping.

What it does

@just-every/mcp-screenshot-website-fast is an MCP server that captures fast, high-quality screenshots of web pages using a headless Puppeteer browser. It is built specifically for AI vision workflows: every screenshot is automatically resolution-limited and tiled to 1072x1072 pixels (1.15 megapixels), the size Claude Vision API and similar models process most reliably. Full-page captures are split into multiple 1072x1072 tiles rather than squeezed into one oversized image, and a screencast mode records a page over time as a sequence of screenshots that can be exported as an animated WebP. The server has no caching layer, so every capture reflects the current state of the page, and it includes an automatic-restart wrapper with exponential backoff (max 10 attempts in a minute) plus graceful SIGINT/SIGTERM handling for long-running MCP sessions.

When to use - and when NOT to

Use it when an AI coding assistant or agent needs to see a rendered web page - visual QA, debugging a UI, checking a deployed page, or feeding a page's appearance into a vision model as context. It fits CLI coding tools particularly well because it was built for that use case. It is not a general-purpose web scraper or a substitute for a full browser-automation framework: there is no session persistence beyond a single capture, pages are closed immediately after each screenshot to avoid memory leaks, and the browser itself shuts down after 60 seconds of inactivity, so it is not meant for maintaining a long-lived interactive browsing session.

Capabilities

Three tools are exposed. take_screenshot captures a page at a configurable viewport (up to 1072x1072), with waitUntil strategies (load, domcontentloaded, networkidle0, networkidle2) and an additional waitFor delay for dynamic content, full-page capture with tiling by default, and an optional directory parameter that saves PNG files to disk and returns file paths instead of base64 image data. capture_selector captures a single DOM element matched by a CSS selector, with its own selector timeout. take_screencast records a series of screenshots over a configurable duration and interval, can run arbitrary JavaScript before capture via jsEvaluate, and when given a directory produces an animated WebP alongside the individual PNG frames. A CLI is also available for local development (npm run dev capture <url>) with the same width/height/wait-strategy options.

How to install

The package installs via npx with no separate build step for end users:

claude mcp add screenshot-website-fast -s user -- npx -y @just-every/mcp-screenshot-website-fast

The same package also has ready-made install snippets for VS Code, Cursor, and JetBrains IDEs, or can be dropped into any MCP client's mcp.json as raw JSON. It requires Node.js 20.x or higher; Chrome/Chromium is downloaded automatically by Puppeteer on first use.

Who it's for

Teams and individual developers using AI coding assistants that need a lightweight, dependency-light way to let the assistant "look at" a web page - front-end developers doing visual QA, and anyone building AI agents that reason over screenshots rather than raw HTML. Released under the MIT license.

Source README

@just-every/mcp-screenshot-website-fast

Fast, efficient screenshot capture of web pages - optimized for CLI coding tools. Automatically tiles full pages into 1072x1072 chunks for optimal processing.

Screenshot Website Fast MCP server

npm version
GitHub Actions

Overview

Built specifically for AI vision workflows, this tool captures high-quality screenshots with automatic resolution limiting and tiling for optimal processing by Claude Vision API and other AI models. It ensures screenshots are perfectly sized at 1072x1072 pixels (1.15 megapixels) for maximum compatibility.

Features

  • 📸 Fast screenshot capture using Puppeteer headless browser
  • 🎯 Claude Vision optimized with automatic resolution limiting (1072x1072 for optimal 1.15 megapixels)
  • 🔲 Automatic tiling - Full pages are automatically split into 1072x1072 tiles
  • 🎬 Screencast capture - Record series of screenshots over time with configurable intervals
  • 🔄 Always fresh content - No caching ensures up-to-date screenshots
  • 📱 Configurable viewports for responsive testing
  • ⏱️ Wait strategies for dynamic content (networkidle, custom delays)
  • 📄 Full page capture by default for complete page screenshots
  • 🎥 Animated WebP export - Save screencasts as high-quality animated WebP files
  • 💉 JavaScript injection - Execute custom JS before screencast capture
  • 📦 Minimal dependencies for fast npm installs
  • 🔌 MCP integration for seamless AI workflows
  • 🪟 Windows-compatible launcher for npm-installed MCP usage
  • 🔋 Resource efficient - Automatic browser cleanup after 60 seconds of inactivity
  • 🧹 Memory management - Pages are closed after each screenshot to prevent leaks

Installation

Claude Code

claude mcp add screenshot-website-fast -s user -- npx -y @just-every/mcp-screenshot-website-fast

VS Code

code --add-mcp '{"name":"screenshot-website-fast","command":"npx","args":["-y","@just-every/mcp-screenshot-website-fast"]}'

Cursor

cursor://anysphere.cursor-deeplink/mcp/install?name=screenshot-website-fast&config=eyJzY3JlZW5zaG90LXdlYnNpdGUtZmFzdCI6eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBqdXN0LWV2ZXJ5L21jcC1zY3JlZW5zaG90LXdlYnNpdGUtZmFzdCJdfX0=

JetBrains IDEs

Settings → Tools → AI Assistant → Model Context Protocol (MCP) → Add

Choose "As JSON" and paste:

{"command":"npx","args":["-y","@just-every/mcp-screenshot-website-fast"]}

Raw JSON (works in any MCP client)

{
  "mcpServers": {
    "screenshot-website-fast": {
      "command": "npx",
      "args": ["-y", "@just-every/mcp-screenshot-website-fast"]
    }
  }
}

Drop this into your client's mcp.json (e.g. .vscode/mcp.json, ~/.cursor/mcp.json, or .mcp.json for Claude).

Prerequisites

  • Node.js 20.x or higher
  • npm or npx
  • Chrome/Chromium (automatically downloaded by Puppeteer)

Quick Start

MCP Server Usage

Once installed in your IDE, the following tools are available:

Available Tools
  • take_screenshot - Captures a high-quality screenshot of a webpage

    • Parameters:
      • url (required): The HTTP/HTTPS URL to capture
      • width (optional): Viewport width in pixels (max 1072, default: 1072)
      • height (optional): Viewport height in pixels (max 1072, default: 1072)
      • fullPage (optional): Capture full page screenshot with tiling (default: true)
      • waitUntil (optional): Wait until event: load, domcontentloaded, networkidle0, networkidle2 (default: domcontentloaded)
      • waitFor (optional): Additional wait time in milliseconds
      • directory (optional): Directory to save screenshots - returns file paths instead of base64 images
  • capture_selector - Captures a screenshot of a specific DOM element matched by a CSS selector

    • Parameters:
      • url (required): The HTTP/HTTPS URL to capture
      • selector (required): CSS selector for the element to capture
      • width (optional): Viewport width in pixels (max 1072, default: 1072)
      • height (optional): Viewport height in pixels (max 1072, default: 1072)
      • waitUntil (optional): Wait until event: load, domcontentloaded, networkidle0, networkidle2 (default: domcontentloaded)
      • waitForMS (optional): Additional wait time in milliseconds
      • selectorTimeoutMS (optional): How long to wait for the selector to appear before failing (default: 5000)
Usage Examples

Default usage (returns base64 images):

take_screenshot(url="https://example.com")

Save to directory (returns file paths):

take_screenshot(url="https://example.com", directory="/path/to/screenshots")

Capture a specific element:

capture_selector(url="https://example.com", selector="#main")

When using the directory parameter:

  • Screenshots are saved as PNG files with timestamps
  • File paths are returned instead of base64 data
  • For tiled screenshots, each tile is saved as a separate file
  • Directory is created automatically if it doesn't exist

take_screencast

Captures a series of screenshots over time to create a screencast. Only captures the top tile (1072x1072) of the viewport.

Parameters
  • url (required): The URL to capture
  • duration (optional): Total duration in seconds (default: 10)
  • interval (optional): Interval between screenshots in seconds (default: 2)
  • jsEvaluate (optional): JavaScript code to execute at the start
  • waitUntil (optional): Wait strategy: 'load', 'domcontentloaded', 'networkidle0', 'networkidle2'
  • waitForMS (optional): Additional wait time before starting
  • directory (optional): Save as animated WebP to directory (captures every 1 second)
Usage Examples

Basic screencast (5 frames over 10 seconds):

take_screencast(url="https://example.com")

Custom timing:

take_screencast(url="https://example.com", duration=15, interval=3)

With JavaScript execution:

take_screencast(
  url="https://example.com",
  jsEvaluate="document.body.style.backgroundColor = 'red';"
)

Save as animated WebP:

take_screencast(url="https://example.com", directory="/path/to/output")

When using the directory parameter:

  • An animated WebP is created with 1-second intervals
  • Individual frames are also saved as PNG files
  • The animation loops forever by default
  • WebP provides excellent quality:
    • Full color support (no 256 color limitation)
    • Efficient compression for web animations
    • Perfect for gradient backgrounds and smooth animations
    • Smaller file sizes compared to GIF with better quality

Development Usage

Install

npm install
npm run build

Capture screenshot

# Full page with automatic tiling (default)
npm run dev capture https://example.com -o screenshot.png

# Viewport-only screenshot  
npm run dev capture https://example.com --no-full-page -o screenshot.png

# Wait for specific conditions
npm run dev capture https://example.com --wait-until networkidle0 --wait-for 2000 -o screenshot.png

CLI Options

  • -w, --width <pixels> - Viewport width (max 1072, default: 1072)
  • -h, --height <pixels> - Viewport height (max 1072, default: 1072)
  • --no-full-page - Disable full page capture and tiling
  • --wait-until <event> - Wait until event: load, domcontentloaded, networkidle0, networkidle2
  • --wait-for <ms> - Additional wait time in milliseconds
  • -o, --output <path> - Output file path (required for tiled output)

Auto-Restart Feature

The MCP server includes automatic restart capability by default for improved reliability:

  • Automatically restarts the server if it crashes
  • Handles unhandled exceptions and promise rejections
  • Implements exponential backoff (max 10 attempts in 1 minute)
  • Logs all restart attempts for monitoring
  • Gracefully handles shutdown signals (SIGINT, SIGTERM)

For development/debugging without auto-restart:

# Run directly without restart wrapper
npm run serve:dev

Architecture

mcp-screenshot-website-fast/
├── src/
│   ├── internal/       # Core screenshot capture logic
│   ├── utils/          # Logger and utilities
│   ├── index.ts        # CLI entry point
│   ├── serve.ts        # MCP server entry point
│   └── serve-restart.ts # Auto-restart wrapper

Development

# Run in development mode
npm run dev capture https://example.com -o screenshot.png

# Build for production
npm run build

# Run tests
npm test

# Type checking
npm run typecheck

# Linting
npm run lint

Why This Tool?

Built specifically for AI vision workflows:

  1. Optimized for Claude Vision API - Automatic resolution limiting to 1072x1072 pixels (1.15 megapixels)
  2. Automatic tiling - Full pages split into perfect chunks for AI processing
  3. Always fresh - No caching ensures you get the latest content
  4. MCP native - First-class integration with AI development tools
  5. Simple API - Clean, straightforward interface for capturing screenshots

Troubleshooting

Puppeteer Issues

  • Ensure Chrome/Chromium can be downloaded
  • Check firewall settings
  • Try setting PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true and provide custom executable

Screenshot Quality

  • Adjust viewport dimensions
  • Use appropriate wait strategies
  • Check if site requires authentication

Timeout Errors

  • Increase wait time with --wait-for flag
  • Use different --wait-until strategies
  • Check if site is accessible

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.