Skip to main content

Windows Remote MCP Server - control Windows desktops via MCP protocol

Project description

winremote-mcp

CI PyPI Python

A Windows Remote MCP Server — control Windows desktops via the Model Context Protocol.

Built with FastMCP. Runs on the Windows machine you want to control.

Features

  • Desktop Control — screenshot (JPEG compressed), click, type, scroll, keyboard shortcuts
  • Window Management — focus, minimize-all, launch/resize apps
  • Remote Management — PowerShell shell (with cwd), clipboard, processes, system info, notifications
  • File Operations — read, write, list, search files
  • Health EndpointGET /health returns {"status":"ok","version":"0.2.0"}
  • Hot Reload--reload flag for development
  • Auto-Startwinremote install / winremote uninstall for Windows scheduled tasks

Installation

# From PyPI (once published)
pip install winremote-mcp

# From source
pip install .

# With uv
uv pip install .

PyPI publishing: This repo uses GitHub Actions with trusted publishers. To enable, configure PyPI trusted publisher for the dddabtc/winremote-mcp repo, workflow publish.yml, environment pypi.

Usage

stdio transport

winremote-mcp
# or
uv run winremote-mcp

Streamable HTTP transport (default, for remote access)

winremote-mcp --transport streamable-http --host 0.0.0.0 --port 8090

With hot reload (development)

winremote-mcp --reload

Health check

curl http://localhost:8090/health
# {"status":"ok","version":"0.2.0"}

Auto-start (Windows scheduled task)

# Create scheduled task to start on boot
winremote-mcp install

# Remove scheduled task
winremote-mcp uninstall

MCP Client Config

stdio:

{
  "mcpServers": {
    "windows-remote": {
      "command": "uv",
      "args": ["run", "winremote-mcp"]
    }
  }
}

streamable-http:

{
  "mcpServers": {
    "windows-remote": {
      "type": "streamable-http",
      "url": "http://<windows-ip>:8090/mcp"
    }
  }
}

What's New in v0.2.0

  • Snapshot compression: Returns JPEG instead of PNG. Configurable quality (default 75) and max_width (default 1920) params. Significantly reduces image size.
  • Health endpoint: GET /health returns JSON status — useful for monitoring and load balancers.
  • Shell cwd parameter: Optional cwd param to run commands in a specific directory.
  • Better pywin32 error reporting: Explicit error messages when pywin32 is missing instead of silent failures.
  • Hot reload: --reload flag passes through to uvicorn for development.
  • Install/uninstall commands: winremote install creates a Windows scheduled task for auto-start on boot.

Tools

Tool Description
Snapshot Screenshot (JPEG, configurable quality/max_width) + window list + UI elements
Click Mouse click (left/right/middle, single/double/hover)
Type Type text at coordinates
Scroll Vertical/horizontal scroll
Move Move mouse / drag
Shortcut Keyboard shortcuts
Wait Pause execution
FocusWindow Bring window to front (fuzzy title match)
MinimizeAll Show desktop (Win+D)
App Launch/switch/resize applications
Shell Execute PowerShell commands (with optional cwd)
GetClipboard Read clipboard
SetClipboard Write clipboard
ListProcesses Process list with CPU/memory
KillProcess Kill process by PID or name
GetSystemInfo System information
Notification Windows toast notification
LockScreen Lock workstation
Scrape Fetch URL content
FileRead Read file content
FileWrite Write file content
FileList List directory contents
FileSearch Search files by pattern

Requirements

  • Windows 10/11
  • Python >= 3.10

Acknowledgments

Inspired by Windows-MCP by CursorTouch. Thanks for the pioneering work on Windows desktop automation via MCP.

Contributing

See CONTRIBUTING.md.

License

MIT

Project details


Download files

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

Source Distribution

winremote_mcp-0.2.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

winremote_mcp-0.2.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file winremote_mcp-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for winremote_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f48aa84d82321dd41e481d1f2a8db12290564c59682759dd47cee94664372ae9
MD5 90bde26595d96fc15b7acca74d714581
BLAKE2b-256 489198ff2d5df1356422564b18f09d1e2f306d28b16915d1ac9b5f8afe01ef32

See more details on using hashes here.

Provenance

The following attestation bundles were made for winremote_mcp-0.2.0.tar.gz:

Publisher: publish.yml on dddabtc/winremote-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 winremote_mcp-0.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for winremote_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3f195d891ec79958c1368d3a8c19a6f4a653c7c086c7fcf26ec4d19967b9d8c
MD5 e5f0942a490543e79e7eeb6319426661
BLAKE2b-256 825c4367d3d41fd6668168db316f863ac95324020b693c4e955787d10e384ffc

See more details on using hashes here.

Provenance

The following attestation bundles were made for winremote_mcp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on dddabtc/winremote-mcp

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

Supported by

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