
Webpage Screenshot
STDIOMCP server for capturing webpage screenshots using Puppeteer with customizable options.
MCP server for capturing webpage screenshots using Puppeteer with customizable options.
An MCP (Model Context Protocol) server that captures screenshots of web pages using Puppeteer. This server allows AI agents to visually verify web applications and see their progress when generating web apps.
To install and build the MCP:
# Clone the repository (if you haven't already) git clone https://github.com/ananddtyagi/webpage-screenshot-mcp.git cd webpage-screenshot-mcp # Install dependencies npm install # Build the project npm run build
The MCP server is built using TypeScript and compiled to JavaScript. The dist
folder contains the compiled JavaScript files.
To add this MCP to Claude Desktop or Cursor:
Claude Desktop:
"webpage-screenshot": { "command": "node", "args": [ "~/path/to/webpage-screenshot-mcp/dist/index.js" ] }
Cursor:
"webpage-screenshot": { "command": "node", "args": ["~/path/to/webpage-screenshot-mcp/dist/index.js"] }
This MCP server provides several tools:
Opens a webpage in a visible browser window for manual login, waits for user to complete login, then saves cookies.
{ "url": "https://example.com/login", "waitMinutes": 5, "successIndicator": ".dashboard-welcome", "useDefaultBrowser": true }
url
(required): The URL of the login pagewaitMinutes
(optional): Maximum minutes to wait for login (default: 5)successIndicator
(optional): CSS selector or URL pattern that indicates successful loginuseDefaultBrowser
(optional): Whether to use the system's default browser (default: true)Captures a screenshot of a given URL and returns it as base64 encoded image.
{ "url": "https://example.com/dashboard", "fullPage": true, "width": 1920, "height": 1080, "format": "png", "quality": 80, "waitFor": "networkidle2", "delay": 500, "useSavedAuth": true, "reuseAuthPage": true, "useDefaultBrowser": true, "visibleBrowser": true }
url
(required): The URL of the webpage to screenshotfullPage
(optional): Whether to capture the full page or just the viewport (default: true)width
(optional): Viewport width in pixels (default: 1920)height
(optional): Viewport height in pixels (default: 1080)format
(optional): Image format - "png", "jpeg", or "webp" (default: "png")quality
(optional): Quality of the image (0-100), only applicable for jpeg and webpwaitFor
(optional): When to consider page loaded - "load", "domcontentloaded", "networkidle0", or "networkidle2" (default: "networkidle2")delay
(optional): Additional delay in milliseconds after page load (default: 0)useSavedAuth
(optional): Whether to use saved cookies from previous login (default: true)reuseAuthPage
(optional): Whether to use the existing authenticated page (default: false)useDefaultBrowser
(optional): Whether to use the system's default browser (default: false)visibleBrowser
(optional): Whether to show the browser window (default: false)Captures a screenshot of a specific element on a webpage using a CSS selector.
{ "url": "https://example.com/dashboard", "selector": ".user-profile", "waitForSelector": true, "format": "png", "quality": 80, "padding": 10, "useSavedAuth": true, "useDefaultBrowser": true, "visibleBrowser": true }
url
(required): The URL of the webpageselector
(required): CSS selector for the element to screenshotwaitForSelector
(optional): Whether to wait for the selector to appear (default: true)format
(optional): Image format - "png", "jpeg", or "webp" (default: "png")quality
(optional): Quality of the image (0-100), only applicable for jpeg and webppadding
(optional): Padding around the element in pixels (default: 0)useSavedAuth
(optional): Whether to use saved cookies from previous login (default: true)useDefaultBrowser
(optional): Whether to use the system's default browser (default: false)visibleBrowser
(optional): Whether to show the browser window (default: false)Clears saved authentication cookies for a specific domain or all domains.
{ "url": "https://example.com" }
url
(optional): URL of the domain to clear cookies for. If not provided, clears all cookies.The default browser mode allows you to use your system's regular browser (Chrome, Edge, etc.) instead of Puppeteer's bundled Chromium. This is useful for:
To enable default browser mode, set useDefaultBrowser: true
and visibleBrowser: true
in your tool parameters.
When you enable default browser mode:
This mode is particularly useful for workflows that require authentication or complex user interactions.
The MCP server can maintain a persistent browser session across multiple tool calls:
login-and-wait
, the browser session is kept openscreenshot-page
or screenshot-element
with reuseAuthPage: true
will use the same pageCookies are automatically saved for each domain you visit:
login-and-wait
, cookies are saved to the .mcp-screenshot-cookies
directory in your home folderuseSavedAuth: true
clear-auth-cookies
toolHere's an example workflow for taking screenshots of pages that require authentication:
{ "name": "login-and-wait", "parameters": { "url": "https://example.com/login", "waitMinutes": 3, "successIndicator": ".dashboard-welcome", "useDefaultBrowser": true } }
This will open your default browser with the login page. You can manually log in, and once complete (either by detecting the success indicator or after navigating away from the login page), the session cookies will be saved.
{ "name": "screenshot-page", "parameters": { "url": "https://example.com/account", "fullPage": true, "useSavedAuth": true, "reuseAuthPage": true, "useDefaultBrowser": true, "visibleBrowser": true } }
This will take a screenshot of the account page using your saved authentication cookies in the same browser window.
{ "name": "screenshot-element", "parameters": { "url": "https://example.com/dashboard", "selector": ".user-profile-section", "useSavedAuth": true, "useDefaultBrowser": true, "visibleBrowser": true } }
{ "name": "clear-auth-cookies", "parameters": { "url": "https://example.com" } }
This workflow allows you to interact with protected pages as if you were a regular user, completing the full authentication flow in your default browser.
visibleBrowser: false
): Faster and more suitable for automated workflows where no user interaction is needed.visibleBrowser: true
): Shows the browser window, allowing for user interaction and manual verification. Required for useDefaultBrowser: true
.The default browser detection works on:
clear-auth-cookies
tool.The MCP server logs helpful error messages to the console when issues occur. Check these messages for troubleshooting information.