trackmcp
Back to directory
sarfraznawaz2005

mcp-windows-screenshot

View on GitHub

A MCP server for capturing screenshots on Windows

2 stars C#Others Updated Feb 26, 2026

Documentation

MCP Windows Screenshots

A Model Context Protocol (MCP) server that provides screenshot capture functionality on Windows systems.

Features

  • Full-screen screenshots: Capture entire monitors or all monitors
  • Region screenshots: Interactive area selection for targeted captures
  • Screenshot management: List and manage captured screenshots
  • Image embedding: Optional base64 image embedding in MCP responses
  • Cross-monitor support: Handle multi-monitor setups

Prerequisites

  • Windows OS (currently Windows-only)
  • Node.js >= 18.0.0
  • Helper executable: A Windows executable (RegionSnip.exe) that handles the actual screenshot capture

Installation

1. Clone the repository

2. Install dependencies:

bash
npm install

3. Build the project:

bash
npm run build

4. Ensure the helper executable exists at `bin/RegionSnip.exe`

Usage

As an MCP Server

This server communicates via stdio and can be used with any MCP-compatible client (like Claude Desktop).

Start the server:

bash
npm start

Or with the MCP inspector for debugging:

bash
npm run inspector

Usage with npx

You can run this MCP server directly using npx without installing it globally:

Cursor

Add to your `.cursor/mcp.json`:

json
{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Claude Desktop

Add to your `claude_desktop_config.json`:

json
{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Windsurf

Add to your `~/.codeium/windsurf/mcp_config.json`:

json
{
  "mcpServers": {
    "windows-screenshots": {
      "command": "npx",
      "args": ["mcp-windows-screenshot"]
    }
  }
}

Available Tools

`takeScreenshot`

Captures a full-screen screenshot.

Parameters:

  • `mode`: Always "full" (default)
  • `allMonitors`: Capture all monitors (default: true)
  • `monitor`: Specific monitor number (optional)
  • `includeImage`: Embed image as base64 in response (default: false)
  • `timeoutMs`: Timeout in milliseconds (default: 60000)

Example:

json
{
  "mode": "full",
  "allMonitors": true,
  "includeImage": true
}

Response:

json
{
  "ok": true,
  "cancelled": false,
  "path": "screenshots/full-2024-01-14T10-53-52-000Z.png",
  "rect": {"x": 0, "y": 0, "width": 1920, "height": 1080},
  "width": 1920,
  "height": 1080,
  "mode": "full",
  "allMonitors": true,
  "monitor": null
}

`takeSelectedAreaScreenshot`

Allows interactive selection of a screen region to capture.

Parameters:

  • `mode`: Always "region" (default)
  • `includeImage`: Embed image as base64 in response (default: false)
  • `timeoutMs`: Timeout in milliseconds (default: 120000)

Example:

json
{
  "includeImage": true
}

Response:

json
{
  "ok": true,
  "cancelled": false,
  "path": "screenshots/region-2024-01-14T10-53-52-000Z.png",
  "rect": {"x": 100, "y": 100, "width": 800, "height": 600},
  "width": 800,
  "height": 600,
  "mode": "region"
}

`listScreenshots`

Lists saved screenshots in the screenshots directory.

Parameters:

  • `limit`: Maximum number of screenshots to return (default: 50, max: 200)

Example:

json
{
  "limit": 10
}

Response:

json
{
  "items": [
    {
      "path": "screenshots/region-2024-01-14T10-53-52-000Z.png",
      "sizeBytes": 245760,
      "createdAt": "2024-01-14T10:53:52.000Z"
    }
  ]
}

Configuration

Helper Executable

The server requires a helper executable at `bin/RegionSnip.exe` that supports the following command-line arguments:

  • `--mode full|region`: Capture mode
  • `--out `: Output file path
  • `--all`: Capture all monitors (full mode only)
  • `--monitor `: Specific monitor number (full mode only)

The executable should output JSON to stdout with the following structure:

json
{
  "ok": true,
  "cancelled": false,
  "rect": {"x": 0, "y": 0, "width": 1920, "height": 1080},
  "width": 1920,
  "height": 1080
}

Screenshots Directory

Screenshots are automatically saved to the `screenshots/` directory in the project root. This directory is created automatically if it doesn't exist.

Development

Building

bash
npm run build

Testing

The server can be tested using the MCP inspector:

bash
npm run inspector

This starts the server and opens a debugging interface to test the available tools.

Project Structure

code
├── src/
│   └── index.ts          # Main server implementation
├── build/                # Compiled JavaScript output
├── screenshots/          # Screenshot storage directory
├── bin/
│   └── RegionSnip.exe    # Helper executable (not included)
├── package.json
└── README.md

Frequently asked questions

What is mcp-windows-screenshot?

mcp-windows-screenshot is A MCP server for capturing screenshots on Windows

How do I install mcp-windows-screenshot?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is mcp-windows-screenshot open source?

Yes — it is hosted on GitHub at https://github.com/sarfraznawaz2005/mcp-windows-screenshot and has 2 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP