Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Mcp Screenshot Server

    A MCP server for capturing screenshots

    12 stars
    JavaScript
    Updated Sep 3, 2025

    Table of Contents

    • Features
    • Requirements
    • Platform-Specific Requirements for take_system_screenshot
    • Linux Installation Examples
    • Quick Start
    • Install from npm
    • Install from Source
    • Configure Your MCP Client
    • Tools
    • take_screenshot
    • take_system_screenshot
    • Cross-Platform Feature Support
    • Output Directories
    • Security
    • Development
    • Scripts
    • Project Structure
    • Testing
    • Debugging with MCP Inspector
    • License

    Table of Contents

    • Features
    • Requirements
    • Platform-Specific Requirements for take_system_screenshot
    • Linux Installation Examples
    • Quick Start
    • Install from npm
    • Install from Source
    • Configure Your MCP Client
    • Tools
    • take_screenshot
    • take_system_screenshot
    • Cross-Platform Feature Support
    • Output Directories
    • Security
    • Development
    • Scripts
    • Project Structure
    • Testing
    • Debugging with MCP Inspector
    • License

    Documentation

    Universal Screenshot MCP

    npm version

    MCP Registry

    License

    An MCP (Model Context Protocol) server that provides AI assistants with screenshot capabilities — both web page capture via Puppeteer and cross-platform system screenshots using native OS tools.

    Features

    • Web Page Screenshots — Capture any public URL using a headless Chromium browser
    • Cross-Platform System Screenshots — Fullscreen, window, or region capture using native OS tools (macOS screencapture, Linux maim/scrot/gnome-screenshot/etc., Windows PowerShell+.NET)
    • Security-First Design — SSRF prevention, path traversal protection, DNS rebinding defense, command injection prevention, and DoS limiting
    • MCP Native — Integrates directly with Claude Desktop, Cursor, and any MCP-compatible client

    Requirements

    • Node.js >= 18.0.0
    • Chromium is downloaded automatically by Puppeteer on first run

    Platform-Specific Requirements for take_system_screenshot

    PlatformRequired ToolsNotes
    macOSscreencapture (built-in)No additional installation needed
    LinuxOne of: maim, scrot, gnome-screenshot, spectacle, grim, or import (ImageMagick)maim or scrot recommended for full feature support. For window-by-name capture, also install xdotool.
    Windowspowershell (built-in)Uses .NET System.Drawing — no additional installation needed

    Linux Installation Examples

    bash
    # Ubuntu/Debian (recommended)
    sudo apt install maim xdotool
    
    # Fedora
    sudo dnf install maim xdotool
    
    # Arch Linux
    sudo pacman -S maim xdotool
    
    # Wayland (Sway, etc.)
    sudo apt install grim

    Quick Start

    Install from npm

    bash
    npm install -g universal-screenshot-mcp

    Or run directly with npx:

    bash
    npx universal-screenshot-mcp

    Install from Source

    bash
    git clone https://github.com/sethbang/mcp-screenshot-server.git
    cd mcp-screenshot-server
    npm install
    npm run build

    Configure Your MCP Client

    Add the server to your MCP client configuration. For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

    json
    {
      "mcpServers": {
        "screenshot-server": {
          "command": "npx",
          "args": ["-y", "universal-screenshot-mcp"]
        }
      }
    }

    Or if installed from source:

    json
    {
      "mcpServers": {
        "screenshot-server": {
          "command": "node",
          "args": ["/absolute/path/to/mcp-screenshot-server/build/index.js"]
        }
      }
    }

    For Cursor or other MCP clients, consult their documentation for the equivalent configuration.

    Tools

    The server exposes two MCP tools:

    take_screenshot

    Captures a web page (or a specific element) via a headless Puppeteer browser.

    ParameterTypeRequiredDescription
    urlstring✅URL to capture (http/https only)
    widthnumber—Viewport width (1–3840)
    heightnumber—Viewport height (1–2160)
    fullPageboolean—Capture the full scrollable page
    selectorstring—CSS selector to capture a specific element
    waitForSelectorstring—Wait for this selector before capturing
    waitForTimeoutnumber—Delay in milliseconds (0–30000)
    outputPathstring—Output file path (default: ~/Desktop/Screenshots)

    Example prompt:

    Take a screenshot of https://example.com at 1920x1080

    take_system_screenshot

    Captures the desktop, a specific application window, or a screen region using native OS tools. Works on macOS, Linux, and Windows.

    ParameterTypeRequiredDescription
    modeenum✅fullscreen, window, or region
    windowIdnumber—Window ID for window mode
    windowNamestring—App name (e.g. "Safari", "Firefox") for window mode
    regionobject—{ x, y, width, height } for region mode
    displaynumber—Display number for multi-monitor setups
    includeCursorboolean—Include the mouse cursor in the capture
    formatenum—png (default) or jpg
    delaynumber—Capture delay in seconds (0–10)
    outputPathstring—Output file path (default: ~/Desktop/Screenshots)

    Cross-Platform Feature Support

    FeaturemacOSLinuxWindows
    Fullscreen✅✅✅
    Region✅✅ (maim, scrot, grim, import)✅
    Window by name✅⚠️ X11 + xdotool⚠️ best-effort
    Window by ID✅✅ X11 only⚠️ HWND
    Multi-display✅⚠️ tool-dependent✅
    Include cursor✅⚠️ tool-dependent⚠️
    Delay✅✅✅

    Example prompt:

    Take a system screenshot of the Safari window

    Output Directories

    Screenshots are saved to ~/Desktop/Screenshots by default. Custom output paths must resolve to one of these allowed directories:

    DirectoryDescription
    ~/Desktop/ScreenshotsDefault output location
    ~/DownloadsUser downloads folder
    ~/DocumentsUser documents folder
    /tmpSystem temp directory

    Security

    This server implements multiple layers of security hardening:

    IDThreatMitigation
    SEC-001SSRF / DNS rebindingURLs validated against blocked IP ranges; DNS resolved pre-request with IP pinning via --host-resolver-rules; navigation redirects re-validated
    SEC-003Command injectionAll subprocesses use execFile (no shell); app names validated against SAFE_APP_NAME_PATTERN
    SEC-004Path traversalOutput paths validated with fs.realpath() symlink resolution; restricted to allowed directories
    SEC-005Denial of serviceConcurrent Puppeteer instances limited to 3 via semaphore

    For full details, see [docs/security.md](docs/security.md).

    Development

    Scripts

    CommandDescription
    npm run buildCompile TypeScript to build/
    npm run watchRecompile on file changes
    npm testRun tests with Vitest
    npm run test:watchRun tests in watch mode
    npm run test:coverageRun tests with coverage report
    npm run lintLint source with ESLint
    npm run inspectorLaunch MCP Inspector for debugging

    Project Structure

    code
    src/
    ├── index.ts                 # Entry point — stdio transport
    ├── server.ts                # MCP server factory
    ├── config/
    │   ├── index.ts             # Static constants (limits, allowed dirs)
    │   └── runtime.ts           # Singleton semaphore, default directory
    ├── tools/
    │   ├── take-screenshot.ts   # Web page capture tool
    │   └── take-system-screenshot.ts  # macOS system capture tool
    ├── types/
    │   └── index.ts             # Shared TypeScript interfaces
    ├── utils/
    │   ├── helpers.ts           # Response builders, file utilities
    │   ├── screenshot-provider.ts # Cross-platform provider interface + factory
    │   ├── macos-provider.ts    # macOS: screencapture wrapper
    │   ├── linux-provider.ts    # Linux: maim/scrot/gnome-screenshot/etc.
    │   ├── windows-provider.ts  # Windows: PowerShell + .NET System.Drawing
    │   ├── macos.ts             # Window ID lookup via CoreGraphics
    │   └── semaphore.ts         # Async concurrency limiter
    └── validators/
        ├── path.ts              # Output path validation (SEC-004)
        └── url.ts               # URL/SSRF validation (SEC-001)

    Testing

    Tests use Vitest with full dependency injection — no real network calls, filesystem access, or subprocess execution in tests.

    bash
    npm test

    Debugging with MCP Inspector

    bash
    npm run inspector

    This launches the MCP Inspector connected to your built server, allowing you to invoke tools interactively.

    License

    Apache-2.0 — Copyright 2026 Seth Bang

    Similar MCP

    Based on tags & features

    • WA

      Waha Mcp

      JavaScript00
    • WI

      Wizzy Mcp Tmdb

      JavaScript00
    • RI

      Rijksmuseum Mcp

      JavaScript·
      59
    • MC

      Mcp Server Playwright

      JavaScript·
      262

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • WA

      Waha Mcp

      JavaScript00
    • WI

      Wizzy Mcp Tmdb

      JavaScript00
    • RI

      Rijksmuseum Mcp

      JavaScript·
      59
    • MC

      Mcp Server Playwright

      JavaScript·
      262

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k