Skip to main content

WinSight MCP

mcp-name: io.github.TheoEwzZer/winsight

Windows Screen Capture MCP Server — give Claude Code eyes on your Windows desktop.

WinSight is an MCP server that lets Claude Code capture your screen, manage windows, and launch applications on Windows.

Features

  • Screenshot the full screen, a specific region, or a specific window
  • Window capture uses Win32 PrintWindow API — captures the real window content even when it's behind other windows
  • List and inspect open windows and monitors (title, position, size, state, resolution)
  • Control windows — move, resize, minimize, maximize, restore, and focus
  • Launch applications and wait for their windows

Requirements

  • Windows 10/11
  • Python 3.10+

Quick Start

Option 1: uvx (recommended)

No install needed — runs directly:

{
  "mcpServers": {
    "winsight": {
      "command": "uvx",
      "args": ["winsight-mcp"]
    }
  }
}

Add this to your project's .mcp.json or ~/.claude/claude_desktop_config.json.

Option 2: pip install

pip install winsight-mcp

Then configure:

{
  "mcpServers": {
    "winsight": {
      "command": "winsight-mcp"
    }
  }
}

Option 3: From source

git clone https://github.com/TheoEwzZer/WinSight-MCP.git
cd WinSight-MCP
uv sync
{
  "mcpServers": {
    "winsight": {
      "command": "uv",
      "args": ["--directory", "/path/to/WinSight-MCP", "run", "winsight-mcp"]
    }
  }
}

Tools

Screenshot

Tool Description
take_screenshot Capture the full screen or a specific monitor
screenshot_window Capture a specific window by title (works even if behind other windows)
screenshot_region Capture a rectangular region of the screen

Window Management

Tool Description
list_windows List all visible windows with optional title filter
get_window_info Get detailed info about a window (position, size, state)
focus_window Bring a window to the foreground
resize_window Resize a window to specific dimensions
move_window Move a window to a specific position
minimize_window Minimize a window to the taskbar
maximize_window Maximize a window to fill the screen
restore_window Restore a minimized or maximized window to its normal state
wait_for_window Wait for a window to appear (adaptive polling with timeout)

System

Tool Description
list_monitors List all monitors with resolution, position, and primary flag
open_application Launch an application and optionally wait for its window

Examples

Once the MCP server is connected, you can ask Claude Code things like:

  • "Take a screenshot of my screen"
  • "List all open windows"
  • "Capture the Notepad window"
  • "Open calculator and take a screenshot of it"
  • "Focus the Chrome window"
  • "Resize the app window to 800x600 and take a screenshot"
  • "Move the window to the top-left corner"
  • "What monitors do I have?"

Testing

The project has 112 tests covering all modules. Tests use mocks for Win32 APIs so they run on any platform.

Running tests

uv run pytest

Test structure

tests/
  conftest.py              # Shared fixtures and Win32 stubs
  test_types.py            # TypedDict definitions validation
  test_screenshot.py       # Screen/region/window capture (mss, Win32 DC)
  test_window_manager.py   # Window listing, find, focus, resize, move, min/max/restore
  test_process_manager.py  # Application launch and window polling
  test_server.py           # MCP tool registration and integration

Adding tests

  1. Put new tests in the matching test_<module>.py file
  2. Use the shared fixtures from conftest.py (sample_window_info, mcp_server, fake_png_bytes)
  3. Mock Win32 APIs with @patch("winsight_mcp.<module>.win32gui") — never call real Win32 functions in tests
  4. For server integration tests, use the _call helper to invoke tools and _text to extract string results

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

winsight_mcp-0.2.1.tar.gz (77.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

winsight_mcp-0.2.1-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file winsight_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: winsight_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 77.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for winsight_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1d0d6a615cd24e732e08ec76323020326592a85707cbb5b4ff6ca1722253f29e
MD5 6c9fa6219ce3ba4f509e05a34cded4cf
BLAKE2b-256 0306d982180437b281bf4d363f603451e51df50a948867fa9f78377499b8b84b

See more details on using hashes here.

Provenance

The following attestation bundles were made for winsight_mcp-0.2.1.tar.gz:

Publisher: release.yml on TheoEwzZer/WinSight-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file winsight_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: winsight_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for winsight_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 92e0e8f0b848106d41237a1c74828af8470efef39c7e00cd214b2835d038dde4
MD5 db9e061e75c6719d5c74f7d7a1d9805f
BLAKE2b-256 be5face5c828939514990d8a7f27ae22ceec399f82ef6d87ab41c2d6b55e8e23

See more details on using hashes here.

Provenance

The following attestation bundles were made for winsight_mcp-0.2.1-py3-none-any.whl:

Publisher: release.yml on TheoEwzZer/WinSight-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page