Mcp Window Screenshooter
About
A cross-platform Model Context Protocol (MCP) server that enables AI agents to capture screenshots of specific application windows!
Details
- Author
- Tiartyos
- Downloads
- 355
- Categories
- Other
Jump to
- Window-specific capture by name or title
- Works on Windows and Linux with platform-optimized backends
- Integrates with AI agents via the Model Context Protocol
- Uses STDIO transport for reliable communication
- Smart window state restoration and focus management after capture
- Performance-optimized platform-specific implementations
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Mcp Window ScreenshooterCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install Python 3.12+, clone the repository, and install dependencies with pip install pywinctl pillow pywin32. Start the server with python server.py in STDIO mode, then configure an MCP client (such as Cursor IDE or Claude Desktop) to point to the server file. The server exposes three tools: capture_window, list_windows, and get_window_info.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp window screenshooter": {
"mcp-window-screenshooter": {
"command": "python",
"args": [
"server.py"
],
"cwd": "/path/to/window-screenshooter"
}
}
}
}
McpServers
{
"mcp-window-screenshooter": {
"command": "python",
"args": [
"server.py"
],
"cwd": "/path/to/window-screenshooter"
}
}
Window Screenshooter MCP Server πΌοΈ
A cross-platform Model Context Protocol (MCP) server that enables AI agents to capture screenshots of specific application windows! (β§β‘β¦)
Overview
Window Screenshooter is an MCP server built in Python that provides AI agents with the capability to take targeted screenshots of specific application windows across Windows and Linux platforms. Unlike traditional screen capture solutions that only capture the entire screen, this server allows precise window-based capture for AI verification workflows, automated testing, and application monitoring.
β¨ New Feature: Smart Window State Restoration & Focus Management!
The latest version now includes automatic window state restoration and intelligent focus handling! πWhen capturing windows, the server will:
- πΈ Save the original window state (minimized, maximized, position, etc.)
- π Temporarily modify the window if needed for capture
- β¨ Restore the window to its exact original state after capture
- π― Auto-detect your editor (Cursor, Trae, Windsurf, VS Code, etc.) and restore focus to it
- π Minimize captured windows if the calling application can't be found
- π« Work seamlessly across all supported platforms
This means your workflow stays smooth - focus returns to your editor and windows don't get left in unexpected states!
Key Features
- πΌοΈ Window-Specific Capture: Target individual application windows by name or title
- π Cross-Platform Support: Works on Windows and Linux with platform-optimized backends
- π§ MCP Integration: Seamless integration with AI agents through Model Context Protocol
- π‘ STDIO Transport: Uses standard input/output for reliable communication
- β‘ Performance Optimized: Platform-specific implementations for maximum efficiency
Installation & Setup
Prerequisites
- Python 3.12+
- Windows or Linux
Quick Start
1. Clone or download this repository:
git clone <your-repo-url>
cd window-screenshooter
2. Install dependencies:
pip install pywinctl pillow pywin32
# Or use the project file
pip install -e .
3. Test the server:
python test-mcp.py
4. Run the MCP server:
# STDIO mode (for MCP clients)
python server.py
MCP Tools
The server exposes three main MCP tools:
1. capture_window
Captures a screenshot of a specific window by title or identifier.
Parameters:
- windowTitle (string): Exact or partial window title to match
- outputPath (string, optional): Save location for screenshot
- format (string, optional): Image format (PNG, JPEG) - default: PNG
- quality (int, optional): JPEG quality (1-100) - default: 85
Returns: Base64-encoded image data or file path confirmation
Example:
# Save to file
await capture_window("Notepad", "screenshot.png", "PNG")
Get base64 data
await capture_window("Calculator")
2. list_windows
Enumerates all available windows on the system.
Returns: Array of window objects with ID, title, position, and size information
Example:
await list_windows()
3. get_window_info
Retrieves detailed information about a specific window.
Parameters:
- windowIdentifier (string): Window title or ID
Returns: Window metadata including position, size, visibility state, and process information
Example:
await get_window_info("Visual Studio Code")
Platform-Specific Features
Windows Implementation
- Utilizeswin32gui with BitBlt API for robust window capture
- Can capture minimized, hidden, or overlapped windows
- High-performance Graphics Capture API integration
- Provides Windows handle (HWND) and process information
Linux Implementation
- X11-based window capture using native protocols - Direct window buffer access for efficient capture - Support for common Linux desktop environmentsMCP Client Configuration
For Cursor IDE
Add to your MCP configuration file:{
"mcpServers": {
"window-screenshooter": {
"command": "python",
"args": ["server.py"],
"cwd": "/path/to/window-screenshooter",
"transport": "stdio"
}
}
}
For Claude Desktop
Add to yourclaude_desktop_config.json:
{
"mcpServers": {
"window-screenshooter": {
"command": "python",
"args": ["server.py"],
"cwd": "/path/to/window-screenshooter"
}
}
}
π‘ IDE Configuration Tip
> π Note: For optimal workflow integration, consider adding this rule to your IDE configuration:
>
> "Before capturing windows or screens with the MCP screenshooter, ALWAYS list windows first to get correct names. If working on a Web project, the default browser is Brave. If working on a Unity project, the user wants the Unity game scene window. After you make a screenshot or capture a screen, ALWAYS use vision."
>
> This helps ensure accurate window targeting and proper follow-up analysis of captured content! β¨
Usage Examples
AI Development Workflows
- Code Verification: AI takes Unity editor screenshots to verify game object placement - UI Testing: Capture application states during automated testing sequences - Documentation: Generate visual documentation of application interfaces - Debugging: Visual confirmation of application behavior changesAutomation Scenarios
- Quality Assurance: Screenshot comparison for regression testing - Process Monitoring: Capture application states for workflow verification - Training Data: Generate labeled screenshots for computer vision trainingError Handling
The server implements robust error handling for:
- Window not found scenarios
- Permission-denied capture attempts
- Cross-platform compatibility issues
- Invalid parameter validation
- Graceful degradation when platform-specific features are unavailable
Development & Contributing
Project Structure
window-screenshooter/
βββ server.py # Main MCP server implementation
βββ windows_capture.py # Windows-specific capture logic
βββ linux_capture.py # Linux-specific capture logic
βββ test-mcp.py # Test script for functionality
βββ mcp-config-example.json # Example MCP configuration
βββ pyproject.toml # Project dependencies
βββ README.md # This file
Testing
Run the test script to verify functionality:python test-mcp.py
Common Issues
1. "Window not found" errors:
- Check exact window title with list_windows
- Try partial title matching
- Ensure window is visible and not minimized
2. Permission errors on Windows:
- Run as administrator if needed
- Check Windows security settings
3. Import errors:
- Ensure all dependencies are installed: pip install pywinctl pillow pywin32
- Check Python version (requires 3.12+)
Platform Compatibility
- Windows: Full support with native Win32 API - Linux: Basic support with X11 integrationLicense
This project is licensed under the MIT License - see the LICENSE file for details.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



