
Moonlight Desktop MCP
io.github.edulelisPublished by GitHub account edulelisv0.10.0Updated Oct 28, 2026
Visual Windows desktop control over Moonlight/GameStream for MCP clients and coding agents
Overview
Local stdio MCP server that lets an assistant see and control a paired Windows desktop over Moonlight/GameStream by capturing the screen and sending mouse and…
- What you can do
- Pair, inspect and wake a host: host status, pairing flow, profile status, Wake-on-LAN configuration and host wake.
- Check, start and stop a desktop stream session, with preflight and status tools.
- See the remote screen: screen capture, OCR, text and template lookup, crops, diffs and waits.
- Interact and confirm: mouse moves and clicks, drag, scroll, typing, named keys and hotkeys, plus visual waits.
- Optionally launch an Apollo-registered provider app when explicitly requested.
- When to use it
- Useful when an agent must operate a Windows machine through visible GUI actions only — opening an app, changing a setting, dismissing a dialog — and the host already runs Apollo or Sunshine with a Desktop app. Not intended for shell, registry or process-level access.
- Requirements
- Runs on the controlling macOS, Linux or Windows machine, not on the controlled PC. Installed via a platform installer script that builds a native Moonlight bridge and controller dependencies; no npm or npx package. The Windows host must already run Apollo or Sunshine with a Desktop application, and pairing is done once with a PIN. Network access to the host is needed.
Installation
In SourceWeft
- Open Moonlight Desktop MCP in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Moonlight Desktop MCP
A local stdio MCP server for visual computer use on a paired Apollo or Sunshine Windows Desktop. MCP clients and coding agents can capture the remote screen, locate visible controls, and send mouse or keyboard input in that same coordinate space.
The server runs on the controlling macOS, Linux, or Windows machine and talks to the Windows host over Moonlight/GameStream. It is for visible tasks such as opening an application, changing a setting, or dismissing a dialog—not for a hidden Windows shell, registry, process access, or a Windows-side agent.
Choose your path
Most people need only the first two links. The commands in the development guide are deliberately not part of the normal installation path.
Discovery for clients and agents
server.jsonprovides the standard MCP server identity, repository, version, and canonical installation page for catalogs and clients. Because this project requires a controller-native build, the card points to the managed installer instead of advertising an npm package or a hosted remote endpoint.llms.txtis a compact, model-readable map of the canonical installation, use, tool, architecture, and safety documentation.AGENTS.mdguides coding agents working in this repository;docs/AGENT-GUIDE.mdguides agents operating the installed MCP. Codex users can also install the bundledmoonlight-desktop-operatorskill.
Install or update
Run one command on the computer that will run the MCP—your Mac, Linux, or Windows machine, not the Windows PC being controlled. Re-run the same command later to update a clean installation.
This project is not distributed as a ready-to-run npm or npx package. Use the platform installer below so the native Moonlight bridge and controller dependencies are built and checked together.
macOS and Linux:
Windows PowerShell:
The installer obtains controller-side build dependencies, creates or refreshes
its own checkout, builds the native Moonlight bridge, and verifies readiness.
It preserves pairing data outside that checkout. When the Codex CLI is already
available, it adds the moonlight-desktop MCP entry if one does not exist.
It does not install anything on the Windows host; that host must already run
Apollo or Sunshine with a Desktop application. See
Install and update for review, pinning, and other MCP
clients.
Use the MCP
The normal computer-use loop is:
- Pair once:
host_status→pairing_begin→ enter the returned PIN at the returned Apollo URL →pairing_status. - Optionally configure Wake-on-LAN with
profile_wol_configureif the PC may be asleep or powered off. - Before each task, call
desktop_channel_status, follow itsnextAction, then callsession_preflightandsession_startwhen the transport is available and no launch preparation is in progress. - Capture the Desktop, use that current frame to establish whether the requested app or setup state is visibly available, locate a target, input in that frame's coordinate space, and capture again to verify the result.
- Call
session_stopwhen finished.
session_start always opens the Desktop. An application need not be registered
in Apollo to be opened from the Desktop or Start menu. Use
provider_app_start only when the user explicitly asks to launch an
Apollo-registered provider app. The detailed setup, safety boundaries, and
examples are in Use the MCP.
What it provides
The complete tool contract is in docs/TOOLS.md. The bundled agent guidance is in docs/AGENT-GUIDE.md.
Scope and safety
- One Desktop stream at a time. If another GameStream client owns the channel, the MCP reports it and does not take it over.
- Remote app availability, installer progress, account state, and license state are established only through the current rendered Desktop, never through a remote shell, registry, or process inspection.
- Pairing keys, frames, OCR cache, and Wake-on-LAN settings stay on the controlling machine.
- H.264 Desktop video defaults to 1920×1080/30fps at 20 Mbps. Pass
stream_profile: "low_bandwidth"tosession_startfor 1280×720/30fps at 8 Mbps on a slow connection; width, height, FPS, and bitrate remain optional per-session overrides. Audio, clipboard, file transfer, HEVC/AV1, and session recovery are out of scope. - Every meaningful action should be visually verified using a fresh capture.
For compatibility, troubleshooting, architecture, and security details, see docs/COMPATIBILITY.md, docs/TROUBLESHOOTING.md, docs/ARCHITECTURE.md, and docs/SECURITY.md.
Source: README.md at commit 291d55f
Tools
0Version history
2- v0.10.0LatestOct 23, 2026
- v0.9.1Oct 19, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.