Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables remote execution of commands, file operations, screenshots, and clipboard access on Windows machines through MCP tools.

README.md

Sky Windows Remote Executor

English | 简体中文

Sky Windows Remote Executor is a Windows-hosted FastAPI + MCP remote execution service for AI agents, automation scripts, remote maintenance, and local agent workflows.

It is not a thin SSH wrapper. It is a resident HTTP/MCP service with a Web UI, REST API, MCP tools, task logs, audit events, and transfer tickets for large files. By default it binds to 127.0.0.1, which makes it suitable for local use or trusted tunnels first.

Core Capabilities

  • Web UI: inspect tasks, logs, configuration, file transfers, audit events, and service status.
  • Command execution: run Python scripts, PowerShell commands, CMD commands, and Python snippets synchronously or asynchronously.
  • MCP integration: expose tools through /mcp for Codex, Claude Desktop, or any MCP-compatible client.
  • File operations: list directories, read/write files, search content, apply precise patches, upload, download, batch-download, and package folders as zip files.
  • Windows administration: manage processes, services, registry values, scheduled tasks, network checks, event logs, notifications, and workstation lock.
  • Desktop helpers: screenshot capture, clipboard read/write, and Windows Toast notifications.
  • Operations: health checks, configuration read/update, log cleanup, task cleanup, and audit queries.
  • Large file transfer: MCP returns short-lived transfer_reference objects while bytes move through one-shot REST URLs.

Safety First

This service can execute commands, write files, edit the registry, kill processes, manage services, and interact with the active Windows desktop. Treat it as a high-privilege remote control endpoint.

The default configuration binds to 127.0.0.1. If you expose it to other machines, place it behind a trusted firewall, VPN, SSH tunnel, or reverse proxy, and read SECURITY.md before deployment.

This project currently does not include built-in multi-user authentication, role-based authorization, or public internet hardening. Do not expose the port directly to the public internet.

Quick Start

python -m venv venv
.\venv\Scripts\python.exe -m pip install -r requirements.txt
.\venv\Scripts\python.exe -u windows_remote_executor.py

Open the Web UI:

http://localhost:8765

MCP endpoint:

http://localhost:8765/mcp

Windows Batch Helpers

| Script | Purpose | | --- | --- | | start-dev.bat | Run in the foreground and use repo-local .wre-data as the runtime data directory. | | start-silent.bat | Launch silently with pythonw. | | start-service.bat | Start the installed Windows service, or fall back to foreground mode when the service is not installed. | | install-service.bat | Install as a Windows service with NSSM. | | uninstall-service.bat | Remove the NSSM service. |

NSSM is not vendored. Install NSSM separately and place nssm.exe on PATH, or copy it next to the scripts before running install-service.bat.

Configuration

Configure the service with environment variables:

| Variable | Default | Description | | --- | --- | --- | | WRE_APP_NAME | Sky Windows Remote Executor | Web UI and display name. | | WRE_SERVICE_NAME | SkyWindowsRemoteExecutor | Windows service name. | | WRE_HOST | 127.0.0.1 | Uvicorn bind host. | | WRE_PORT | 8765 | HTTP/MCP port. | | WRE_DATA_DIR | %ProgramData%\SkyWindowsRemoteExecutor | Runtime data root. | | WRE_LOG_DIR | %WRE_DATA_DIR%\logs | Task and service logs. | | WRE_UPLOAD_DIR | %WRE_DATA_DIR%\uploads | Default upload directory. | | WRE_TEMP_DIR | %WRE_DATA_DIR%\temp | Temporary zip and transfer files. | | WRE_LOG_RETENTION_DAYS | 7 | Task log retention in days. | | WRE_AUTOSTART_TASK_NAME | SkyWindowsRemoteExecutorAutoStart | Scheduled task name for autostart. |

Example:

$env:WRE_HOST = "0.0.0.0"
$env:WRE_DATA_DIR = "D:\WindowsRemoteExecutor"
.\venv\Scripts\python.exe -u windows_remote_executor.py

REST API Coverage

Configuration, Health, and Maintenance

| Endpoint | Purpose | | --- | --- | | GET /health | Health check with service status, task count, and basic information. | | GET /config | Read log directory, upload directory, and log retention settings. | | POST /config | Update runtime-adjustable configuration. | | POST /config/cleanup-now | Manually clean expired task logs. | | GET /audit | Query audit events. |

Tasks and Command Execution

| Endpoint | Purpose | | --- | --- | | POST /run | Run a Python script in the background and return a task_id. | | POST /run-sync | Run a script synchronously and return stdout, stderr, and exit code. | | POST /powershell | Run a PowerShell command in the background. | | POST /powershell-sync | Run a PowerShell command synchronously. | | POST /stop/{task_id} | Stop a background task. | | GET /status/{task_id} | Query task status. | | GET /log/{task_id} | Read task logs with an optional line limit. | | GET /tasks | List tasks. | | POST /tasks/clear-finished | Clear finished task records. |

Files and Transfers

| Endpoint | Purpose | | --- | --- | | POST /upload | Upload one file to a target path. | | POST /batch/upload | Upload multiple files. | | POST /download | Download one file. | | POST /list | List directory entries with glob support. | | POST /file/read | Read file content, including text encodings and binary base64. | | POST /file/write | Write or append file content, with Python syntax check feedback for .py files. | | POST /file/search | Search file content. | | POST /file/request-download | Create a short-lived download ticket. | | GET /file/transfer/{ticket_id} | Stream a file authorized by a download ticket. | | POST /file/request-upload | Create a short-lived upload ticket. | | POST /file/transfer/{ticket_id} | Upload a file authorized by an upload ticket. |

Windows System Administration

| Endpoint | Purpose | | --- | --- | | POST /process/list | List processes with filtering, sorting, and limit support. | | POST /process/kill | Kill a process by PID or process name. | | POST /reg/read | Read a Windows registry value. | | POST /reg/write | Write a Windows registry value. | | POST /service/list | List Windows services. | | POST /service/start-svc | Start a Windows service. | | POST /service/stop-svc | Stop a Windows service. | | POST /service/restart | Restart a Windows service. | | POST /service/stop | Stop the current remote executor service process. | | GET /service/info | Inspect executor service information, PID, uptime, task counts, and log settings. | | GET /service/autostart | Inspect autostart state. | | POST /service/autostart | Enable or disable autostart. | | POST /task/list | List Windows scheduled tasks. | | POST /task/create | Create a Windows scheduled task. | | POST /task/delete | Delete a Windows scheduled task. |

Network, Desktop, and Events

| Endpoint | Purpose | | --- | --- | | POST /net/scrape | Fetch a web page content snippet. | | POST /net/ping | Ping a host. | | POST /net/port-check | Check whether a host port is reachable. | | POST /net/connections | List network connections. | | GET /clipboard | Read clipboard text. | | POST /clipboard | Write clipboard text. | | POST /notification | Show a Windows Toast notification. | | POST /lock-screen | Lock the Windows workstation. | | POST /event-log | Query Windows event logs. |

Realtime Channels and Pages

| Endpoint | Purpose | | --- | --- | | POST /mcp | MCP JSON-RPC entrypoint. | | GET / | Web UI home page. | | WebSocket /ws/log/{ws_task_id} | Subscribe to realtime logs for one task. | | WebSocket /ws/all | Subscribe to all task status updates. | | WebSocket /ws/audit | Subscribe to audit events. |

MCP Tool Coverage

MCP clients use tools/list to retrieve the full schema and tools/call to invoke a tool. See docs/mcp-guide.md and examples/codex-mcp-config.json for examples.

Commands and Long-Running Tasks

| Tool | Purpose | | --- | --- | | run_command | Run a PowerShell, CMD, or Python command synchronously and return stdout, stderr, and returncode. | | start_long_task | Start a background task for long-running scripts. | | get_task_status | Query background task status. | | get_task_log | Read background task logs. | | run_powershell_long | Run a long-running PowerShell command. | | stop_task | Stop a background task. | | list_tasks | List tasks. | | clear_finished_tasks | Clear finished task records. |

Files, Search, and Transfer

| Tool | Purpose | | --- | --- | | fs_read | Read a file; small files are returned inline, large files return a download ticket. | | fs_write | Write or append a file; small content is written inline, large content returns an upload ticket. | | fs_diff | Show the Git working tree diff for a file. | | fs_list | List a directory with glob support. | | content_search | Search content, preferring ripgrep and falling back to Python. | | patch_file | Replace exact old/new strings, with optional backup and Python syntax checks. | | upload_file | Upload one file with inline base64 or large-file ticket mode. | | download_file | Download one file with inline base64 or large-file ticket mode. | | batch_upload | Upload multiple files. | | batch_download | Package multiple remote files into a zip and return a download reference. | | download_folder | Package a remote folder into a zip using glob and recursive options. |

Windows System Administration

| Tool | Purpose | | --- | --- | | process_list | List processes. | | process_kill | Kill processes by PID or name. | | service_list | List Windows services. | | service_start | Start a service. | | service_stop | Stop a service. | | service_restart | Restart a service. | | get_service_info | Get executor service information. | | set_autostart | Configure executor autostart. | | reg_read | Read a registry value. | | reg_write | Write a registry value. | | scheduled_task_list | List scheduled tasks. | | create_scheduled_task | Create a scheduled task. | | delete_scheduled_task | Delete a scheduled task. |

Network, Desktop, and Diagnostics

| Tool | Purpose | | --- | --- | | screenshot | Capture the current Windows desktop, either saved to a file or returned as base64. | | clipboard | Read or set clipboard text. | | system_info | Return OS, hostname, process ID, service version, and related information. | | net_ping | Ping a host. | | net_port_check | Check host port connectivity. | | net_connections | List network connections. | | send_notification | Send a Windows Toast notification. | | lock_screen | Lock the Windows workstation. | | get_event_log | Query Windows event logs. | | get_audit_log | Query executor audit logs. | | health_check | Run a health check. | | get_config | Read executor configuration. | | update_config | Update executor configuration. | | cleanup_logs | Clean expired logs. | | git_commit | Commit current changes in a target Git repository. |

Large File Transfer Model

MCP is a control plane, not an ideal channel for large byte streams. This project uses a two-step transfer model for large files:

  1. The MCP tool returns a transfer_reference with a one-shot download_url or upload_url.
  2. The client transfers the real bytes through a normal HTTP GET or multipart POST request.

Transfer tickets are short-lived and single-use by default. This keeps MCP calls small while still allowing browsers or scripts to stream zip archives, model files, video assets, and other large artifacts.

Development

.\venv\Scripts\python.exe -m pip install -r requirements-dev.txt
.\venv\Scripts\python.exe -m unittest discover -s tests -v

License

MIT. See LICENSE.

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Files & Docs servers.