Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Window Cap

FreeNot checked

A cross-platform MCP server for capturing screenshots of monitors and windows, as well as listing and closing windows.

GitHubEmbed

About

A cross-platform MCP server for capturing screenshots of monitors and windows, as well as listing and closing windows.

README

A cross-platform window screenshot MCP server and library implemented in Rust, based on rmcp and xcap.

Features

  • Get monitor count and details
  • Capture screenshots of monitors and windows
  • List and close windows
  • Cross-platform support (Windows, macOS, Linux)
  • Supports multiple transport modes (STDIO, SSE, HTTP)
  • Available as Rust library and Python package

Installation

As MCP Server

# Build from source
make build
make run

As Python Package

pip install window-cap-mcp

As Rust Library

[dependencies]
window_cap_mcp_lib = "0.1"

Usage

MCP Server

# STDIO mode (for Claude Desktop)
window-cap-mcp

# SSE mode
window-cap-mcp --sse --port 3000

# HTTP mode
window-cap-mcp --http --port 8080

Python Library

import window_cap_mcp as wc

# Capture monitor screenshot
screenshot = wc.capture_monitor()

# Run as MCP server
wc.run_server()

Rust Library

use window_cap_mcp_lib::{Monitor, Window};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let monitors = Monitor::all()?;
    monitors[0].capture_image()?.save("screenshot.png")?;
    Ok(())
}

Claude Desktop Configuration

Edit the configuration file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS/Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "window-cap": {
      "command": "window-cap-mcp"
    }
  }
}

MCP Tools

get_monitor_count

Get monitor information.

{
  "count": 2,
  "monitors": [
    {
      "index": 0,
      "name": "Display 1",
      "width": 1920,
      "height": 1080,
      "is_primary": true
    }
  ]
}

get_screen_screenshot

Capture monitor screenshot (Base64-encoded PNG).

Parameters: monitor_index (optional)

get_window_list

Get all windows information.

{
  "count": 5,
  "windows": [
    {
      "id": 12345,
      "title": "VS Code",
      "app_name": "Code.exe",
      "width": 1280,
      "height": 720
    }
  ]
}

get_window_screenshot

Capture window screenshot (Base64-encoded PNG).

Parameters: window_id (required)

close_window

Close a window by ID.

Parameters: window_id (required)

Development

make help          # View commands
make build         # Build project
make test          # Run tests
make clean         # Clean artifacts

License

MIT

from github.com/Sun-ZhenXing/window-cap-mcp

Installing Window Cap

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/Sun-ZhenXing/window-cap-mcp

FAQ

Is Window Cap MCP free?

Yes, Window Cap MCP is free — one-click install via Unyly at no cost.

Does Window Cap need an API key?

No, Window Cap runs without API keys or environment variables.

Is Window Cap hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Window Cap in Claude Desktop, Claude Code or Cursor?

Open Window Cap on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Window Cap with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs