Gives Claude direct access to your Windows desktop through screen capture and window management. Built on Win32 APIs, it can screenshot the full screen, specific regions, or individual windows (even when they're hidden behind others using PrintWindow). Beyond capture, it exposes window control operations like focus, resize, move, minimize, and maximize, plus the ability to list all open windows and monitors. You can also launch applications and wait for their windows to appear. Works on Windows 10/11 with Python 3.10+. Useful when you need Claude to see what's on your screen, inspect UI states, or automate desktop workflows that require visual context.
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.
PrintWindow API — captures the real window content even when it's behind other windowsNo 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.
pip install winsight-mcp
Then configure:
{
"mcpServers": {
"winsight": {
"command": "winsight-mcp"
}
}
}
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"]
}
}
}
| 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 |
| 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) |
| Tool | Description |
|---|---|
list_monitors | List all monitors with resolution, position, and primary flag |
open_application | Launch an application and optionally wait for its window |
Once the MCP server is connected, you can ask Claude Code things like:
The project has 112 tests covering all modules. Tests use mocks for Win32 APIs so they run on any platform.
uv run pytest
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
test_<module>.py fileconftest.py (sample_window_info, mcp_server, fake_png_bytes)@patch("winsight_mcp.<module>.win32gui") — never call real Win32 functions in tests_call helper to invoke tools and _text to extract string resultsMIT