SnapAPI MCP Server
snapapi-mcp
MCP (Model Context Protocol) server for SnapAPI — take screenshots, scrape web pages, extract content, generate PDFs, record videos, and analyze pages directly from AI tools like Claude Desktop, Cursor, Windsurf, Cline, and Zed.
What is this?
This package runs a local MCP server that connects your AI assistant to the SnapAPI web capture API. Once configured, your AI can:
Take screenshots of any URL (full page, mobile, dark mode, element selection, device emulation)
Scrape web pages and get clean text, HTML, or link lists using a real browser
Extract content optimized for LLM consumption (Markdown, article, metadata, structured data)
Generate PDFs from URLs or HTML
Record videos of browser sessions with optional interaction scenarios
Analyze pages with AI (extract + analyze in one call)
Check your usage quota and account stats
Related MCP server: Local-MCP-server
Prerequisites
Node.js 18 or later
A SnapAPI API key — get one at app.snapapi.pics
Quick Start
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Restart Claude Desktop after saving.
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Cline (VS Code)
Open Cline settings → MCP Servers → Add Server:
Command:
npxArgs:
-y snapapi-mcpEnvironment:
SNAPAPI_API_KEY=sk_live_your_key_here
VS Code (native MCP support)
Add to .vscode/mcp.json in your workspace (or your user settings):
{
"servers": {
"snapapi": {
"command": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}Zed
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"snapapi": {
"command": {
"path": "npx",
"args": ["-y", "snapapi-mcp"],
"env": {
"SNAPAPI_API_KEY": "sk_live_your_key_here"
}
}
}
}
}Automated Installer
Run the included helper script:
# For Claude Desktop
./install-mcp.sh claude
# For Cursor
./install-mcp.sh cursor
# For Windsurf
./install-mcp.sh windsurfAvailable Tools
ping
Verify that SnapAPI is reachable and your API key is valid. No parameters required.
Example prompt: "Ping SnapAPI to check it's working"
screenshot
Take a screenshot of any URL with extensive customization.
Parameters:
Parameter | Type | Required | Description |
| string | * | URL to capture |
| string | * | Raw HTML to render (alternative to url) |
| string | * | Markdown to render (alternative to url) |
| string | no |
|
| number | no | 1–100 for jpeg/webp (default: 80) |
| number | no | Viewport width (default: 1280) |
| number | no | Viewport height (default: 800) |
| boolean | no | Capture full scrollable page |
| string | no | CSS selector for element capture |
| number | no | Wait ms after page load before capture |
| string | no |
|
| boolean | no | Dark color scheme |
| boolean | no | Block ad networks |
| boolean | no | Block cookie popups |
| string | no | Custom CSS to inject |
| string | no | Custom JS to execute |
| string | no | Device preset (e.g. |
| string[] | no | Elements to hide before capture |
*At least one of url, html, or markdown must be provided.
Example prompts:
"Take a screenshot of https://example.com in dark mode"
"Screenshot https://github.com on an iPhone 15 Pro"
"Capture a full-page screenshot of https://news.ycombinator.com with ads blocked"
"Render this HTML as a screenshot:
<h1>Hello</h1>"
scrape
Scrape web page content using a real browser (JavaScript-rendered pages work).
Parameters:
Parameter | Type | Required | Description |
| string | yes | URL to scrape |
| string | no |
|
| number | no | Pages to follow, 1–10 (default: 1) |
| number | no | Extra wait time in ms after page load |
| boolean | no | Block images/media/fonts to speed up |
| string | no | Browser locale (e.g. |
| boolean | no | Use residential proxy to bypass blocks |
Example prompts:
"Scrape the text content from https://example.com/blog"
"Get all links from https://news.ycombinator.com"
"Scrape https://example.com/pricing as HTML"
extract
Extract clean, structured content optimized for LLMs.
Parameters:
Parameter | Type | Required | Description |
| string | yes | URL to extract from |
| string | no |
|
| string | no | Scope extraction to a CSS element |
| string | no | Wait for CSS selector before extracting |
| number | no | Max character length |
| boolean | no | Remove noise (default: true) |
| boolean | no | Block ad networks |
| boolean | no | Block cookie popups |
| object | no | Custom field extraction map |
Example prompts:
"Extract the article content from https://example.com/post as markdown"
"Get the metadata (title, description, OG image) from https://example.com"
"Extract price and rating from https://example.com/product"
Generate a PDF from a URL or HTML.
Parameters:
Parameter | Type | Required | Description |
| string | * | URL to convert to PDF |
| string | * | HTML to convert to PDF (alternative to url) |
| string | no |
|
| boolean | no | Landscape orientation |
| boolean | no | Include background graphics |
| number | no | Scale factor 0.1–2 |
| string | no | Top margin, e.g. |
| string | no | Bottom margin |
| string | no | Left margin |
| string | no | Right margin |
| number | no | Wait ms after page load |
| string | no |
|
*At least one of url or html must be provided.
Example prompts:
"Generate a PDF of https://example.com/report in landscape A4"
"Convert this HTML to a PDF with 2cm margins"
analyze
Extract content from a URL and analyze it with an AI model in one call.
Parameters:
Parameter | Type | Required | Description |
| string | yes | URL to analyze |
| string | yes | Analysis instruction for the AI |
| string | no |
|
| number | no | Max characters of content to pass to AI (default: 20000) |
Example prompts:
"Analyze https://example.com/article — what are the main arguments?"
"Extract all product specs from https://example.com/product"
"What is the sentiment of this news article: https://example.com/news"
video
Record a browser session as a video (WebM).
Parameters:
Parameter | Type | Required | Description |
| string | yes | URL to record |
| number | no | Recording duration in seconds, 1–60 (default: 5) |
| number | no | Viewport width (default: 1280) |
| number | no | Viewport height (default: 800) |
| string | no | JavaScript to run during recording (scroll, click, etc.) |
| number | no | Wait ms before starting recording |
| string | no |
|
| boolean | no | Dark color scheme |
| boolean | no | Block ad networks |
| boolean | no | Block cookie popups |
| string | no | Device preset — use |
Example prompts:
"Record a 10-second video of https://example.com scrolling down"
"Record https://example.com on an iPhone 15 Pro"
get_usage
Check your SnapAPI quota and monthly statistics. No parameters required.
Example prompts:
"How many SnapAPI requests do I have left this month?"
"Show me my SnapAPI usage"
list_devices
List all available device presets for screenshot and video emulation. No parameters required.
Example prompt: "What device presets are available for screenshots?"
Environment Variables
Variable | Required | Description |
| Yes | Your SnapAPI API key ( |
| No | API base URL (default: |
Development
# Clone the repo
git clone https://github.com/Sleywill/snapapi-mcp.git
cd snapapi-mcp
# Install dependencies
npm install
# Build
npm run build
# Run locally (reads MCP protocol from stdin)
SNAPAPI_API_KEY=sk_live_your_key node dist/index.jsTroubleshooting
"SNAPAPI_API_KEY environment variable is required"
Make sure the env block in your MCP config includes your API key. Check it starts with sk_live_.
Tools not appearing in Claude Desktop Restart Claude Desktop after saving the config. Check MCP logs at:
macOS:
~/Library/Logs/Claude/mcp*.logWindows:
%APPDATA%\Claude\logs\mcp*.log
npx takes too long on first run
Use "args": ["-y", "snapapi-mcp"] — the -y flag auto-confirms the install prompt without interaction.
screenshot / scrape returns an error
Verify your API key is valid at app.snapapi.pics/dashboard
Check your remaining quota with the
get_usagetoolFor JavaScript-heavy pages, try adding
"waitUntil": "networkidle"and a"delay"value
analyze tool returns an error
The analyze endpoint requires Anthropic API credits on the SnapAPI backend. Use the extract tool as a fallback to fetch the page content and analyze it yourself.
License
MIT
Available Tools
9 toolsanalyzeA
Extract content from a URL and analyze it with an AI model. Returns AI-generated insights, summaries, sentiment, or custom analysis based on your prompt. Combines web extraction with LLM analysis in one call.
Inputs: url (required), prompt (required), extractType, maxLength.
extractA
Extract clean, structured content from a URL. Returns Markdown, plain text, article data (via Mozilla Readability), OG metadata, links, images, or custom structured fields. Optimized for feeding web content to LLMs without HTML noise.
Inputs: url (required), type, selector, waitFor, +6 more.
get_usageA
Check your SnapAPI account usage, quota, and plan details for the current billing period. Shows requests used vs. limit, remaining quota, and monthly statistics.
Inputs: no named parameters.
list_devicesA
List all available device presets for screenshot and video emulation. Each preset sets the correct viewport, device scale factor, and mobile flag (phones, tablets, desktops). Pass the device id to the screenshot or video tool.
Inputs: no named parameters.
pdfB
Generate a PDF from a URL or HTML content. Supports page sizes, margins, landscape orientation, background graphics, and custom scaling.
Inputs: url, html, pdfOptions, width, +3 more.
pingA
Check that the SnapAPI service is reachable and the API key is valid. Returns the API status and current server time. Use this to verify your configuration before making other calls.
Inputs: no named parameters.
scrapeA
Scrape a URL using a real browser and return page content as plain text (Markdown), raw HTML, or a list of links. Works on JavaScript-rendered pages.
Inputs: url (required), type, pages, waitMs, +3 more.
screenshotA
Take a screenshot of a URL or render HTML/Markdown and return the image. Supports full-page capture, device emulation, dark mode, element selection, custom CSS/JS injection, ad/cookie-banner blocking, and more.
Inputs: url, html, markdown, format, +14 more.
videoA
Record a browser session as a video (WebM). Optionally runs a JavaScript scenario (clicks, scrolls, form fills) before and during recording. Returns a URL to download the recorded video.
Inputs: url (required), width, height, duration, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Most tools are clearly distinct by output type (image, PDF, video, usage, devices), but scrape and extract overlap significantly—both return Markdown, plain text, and links from a URL. Descriptions help differentiate raw scraping from structured extraction, but an agent could still be uncertain which to choose.
Names are all lowercase and readable, but conventions are mixed: some are verb+object (get_usage, list_devices), some are bare verbs (scrape, extract, analyze, ping), and some are noun-like action commands (pdf, video, screenshot). There is no consistent verb_noun pattern, though the naming is still predictable enough to navigate.
Nine tools is a well-scoped set for a browser automation and web content API. Each tool covers a distinct core capability or supporting function, with no obvious bloat or redundancy that would make the surface feel heavy.
The tool surface covers the advertised SnapAPI capabilities thoroughly: scraping, structured extraction, screenshots, PDFs, video recording, AI analysis, device presets, usage checks, and connectivity verification. There are no obvious dead ends or missing core operations for this stateless, action-oriented API.
Maintenance
Related MCP Connectors
SnapRender gives AI agents eyes on the web through a hosted MCP server. Send a public URL and get the page back as an image, a PDF or clean markdown, with no browser to run or maintain. Capture the viewport or the full page as PNG, JPEG, WebP or PDF, at desktop size or with a phone, tablet or laptop preset, in light or dark mode. Ads and cookie banners are removed by default, and you can hide elements or click one before the capture. extract_content reads the same page as markdown, text, article, links or metadata, so an agent can see a page and read it in one session. Made for monitoring and client work: batch up to 50 URLs in one job, check the cache for free before spending a capture, share signed links that render without an API key, and get webhooks when a batch finishes or a scheduled capture spots a change. Track competitors' pricing and landing pages, or send clients current screenshots of their sites. Connect with OAuth (Google, GitHub or email) or an API key. Works with Claude, ChatGPT, Cursor, VS Code and any MCP client. Free plan: 200 screenshots a month, no credit card. Paid plans from $9 a month for 2,000 up to $199 a month for 200,000. Home: https://snap-render.com Docs: https://snap-render.com/ai-agents
Screenshots, PDFs and Markdown from any URL or HTML for AI agents, via the SnapForge API
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Related MCP Servers
- FlicenseAqualityDmaintenanceA lightweight Model Context Protocol (MCP) server that enables your LLM to capture screenshots of any specified URL and return only the access URL for the captured image. This tool simplifies the process of generating and sharing webpage snapshots, making it perfect for integrating visual capture ca12-
- FlicenseNot gradedqualityDmaintenanceEnables tool-calling LLMs to search the internet, capture website images, extract webpage text, and more via a local MCP server.16-
- FlicenseNot gradedqualityDmaintenanceScreenshot & Render API for AI Agents. MCP Server lets Claude, Cursor capture webpages and render HTML. Direct access, no VPN needed.-
- AlicenseNot gradedqualityDmaintenanceScreenshot and HTML Rendering MCP Server for AI Agents. Capture screenshots, render HTML to images, and generate PDFs via simple API calls. Compatible with Claude, Cursor, and any MCP client.1MIT