MCP Hub
Back to servers

screenshot-mcp

Captures full-monitor screenshots and returns them as base64 inline or saved file. Supports macOS, Linux, Windows, and WSL2.

glama
Updated
May 8, 2026

screenshot-mcp

An MCP server that captures full-monitor screenshots and returns them inline (base64) or as a saved file. Supports macOS, native Linux (X11 and Wayland), native Windows, and WSL2.

Tools

list_monitors

Lists all connected monitors with their index, resolution, and primary status. Call this first to find monitor indices.

take_screenshot

Captures a screenshot of one monitor.

ArgumentTypeDefaultDescription
monitorinteger0Monitor index from list_monitors
return"inline" | "path""inline"inline = base64 PNG in response (Claude sees it); path = save to disk, return the file path
pathstringtemp fileOutput path. Only used when return="path"

Tip: Very high-res monitors (4K, 5K) produce large base64 blobs. If you hit context limits, switch to return="path" and use the Read tool to view the file.

Installation

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

Platform requirements

PlatformRequirement
macOSNothing extra — uses screencapture and system_profiler (built in)
Native Linux / X11scrot or imagemagick: sudo apt install scrot
Native Linux / Waylandgrim + wlr-randr: sudo apt install grim wlr-randr
Native WindowsNothing extra — uses PowerShell + System.Drawing
WSL2Nothing extra — shells out to powershell.exe on the Windows side

Configure in Claude Code

claude mcp add screenshot node /absolute/path/to/screenshot-mcp/dist/index.js

Configure in Claude Desktop

Add to claude_desktop_config.json:

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

How WSL2 works

WSL2 doesn't have direct access to the Windows display. This server detects WSL (via /proc/version or WSL_DISTRO_NAME) and shells out to powershell.exe to run a capture script using System.Windows.Forms.Screen and System.Drawing. The PNG is written to the Linux /tmp filesystem via the \\wsl.localhost\... UNC path and then read back.

Reviews

No reviews yet

Sign in to write a review