MCP Windows Desktop Automation
The agent moves the mouse, types, drives windows and captures PNG screenshots of a Windows desktop through AutoIt.
- 119 ★ on the repository
- Last commit
Broad access
Why this level
- The agent gets the mouse, keyboard, clipboard and process launch on a real desktop.
- The `runAs` tool takes credentials and `shutdown` powers the machine off. There is no OS-level isolation.
Install
- Works in
Manual install
npm ci && npm run build && node dist/index.js --transport=stdioThe README Run steps: install dependencies, build and start over stdio. No npm package is named, so install the repository or a release artifact.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent gets the mouse, keyboard, clipboard and process launch on a real desktop.
- The `runAs` tool takes credentials and `shutdown` powers the machine off. There is no OS-level isolation.
This is third-party code. Review the repository files before installing.
What it does
The MCP server drives an interactive Windows x64 desktop through AutoIt. Version 2 keeps the 50 tools for mouse, keyboard, clipboard, windows, controls and processes, and adds seven prompts and real screenshots. The `takeScreenshot` tool captures the whole desktop, one window or a rectangular region and returns a PNG to the agent. The resources `screenshot://desktop` and `screenshot://window/{title}` serve the same frames. It starts over stdio by default; HTTP needs an owner token and a list of allowed directories.
Who it is for. Testers and developers who want an agent to click through classic Windows applications that have no API.
Good fit when
- A legacy desktop program has no API and the agent must fill in a form there.
- A daily routine means opening a window, entering data and submitting.
- The agent waits for a window, activates it and only then types.
- A screenshot of a screen region is needed so the agent can see the result.
Not a fit when
- The task runs in a browser, where a browser MCP server fits better.
- The machine runs Linux or macOS: native calls return a platform error.
- Several people would share the server: one process serves one owner with a shared desktop.
- A headless session, a session 0 service or Windows on ARM64.
Example request
Open Notepad, type the word "check", capture a screenshot of the window and close it without saving.MCP
- Transport
- stdio, http
- Authentication
- not required
Environment variables
MCP_AUTH_TOKENsecret- Owner bearer token for HTTP mode, at least 32 characters.
MCP_FILE_ROOTS- JSON array of directories the server may read files from; required for HTTP.
Limitations
Native operations work only on Windows x64 in the interactive session of the logged-in user. ARM64, session 0 services, headless sessions and elevated windows are unsupported. On Linux, enumeration and the protocol work, while native calls return a platform error. Node.js 22 or newer is required. Wait timeouts are set in seconds from 1 to 25, each desktop request is capped at 30 seconds, and the queue holds at most 16 jobs. A `PrintWindow` frame depends on the application: protected, minimized and hardware-rendered windows can come back blank.
How to disable. Remove the server from the MCP client configuration and stop the `mcp-windows-desktop-automation` process. For HTTP mode, also remove `MCP_AUTH_TOKEN` and `MCP_FILE_ROOTS` from the environment.
FAQ
Does the server run on macOS or Linux?
Native control runs only on Windows x64. On Linux the protocol and enumeration start, while native calls return an explicit platform error. The documentation says nothing about macOS.
How do I enable HTTP mode?
Set `MCP_AUTH_TOKEN` of at least 32 characters and `MCP_FILE_ROOTS` as a JSON array of directories, then run `mcp-windows-desktop-automation --transport=streamable-http --port=3000`. The endpoint is `http://127.0.0.1:3000/mcp`.
Are screenshots saved to disk?
No, the PNG goes to the agent in the response and is never written to disk. A frame is capped at 32 million pixels and 8 MiB.
What changed in version 2?
The 50 AutoIt tools and seven prompts stayed. Real PNGs replaced the text-only screenshot placeholder, string and buffer sizes got limits, and file reads are tied to configured root directories.
Which tools does the server have?
Mouse (`mouseMove`, `mouseClick`), keyboard and clipboard (`send`, `clipGet`, `clipPut`), windows (`winActivate`, `winWait`), controls (`controlClick`, `controlSetText`), processes (`run`, `processClose`) and `takeScreenshot`.
What if a request hangs?
Every request is capped at 30 seconds. After a cancel, timeout or crash the native helper restarts with default options, and interrupted actions are never replayed.
Discussion
No questions or reviews yet.
Related
MCP serversMCP server and wincli CLI: agents drive Windows apps by control name through UI Automation instead of screen coordinates
An MCP server for Windows: the agent moves the mouse, presses keys, manages windows and takes screenshots
An MCP server for driving Windows: the agent opens apps, clicks and types, reads window and UI state, and works with files and PowerShell
An MCP server for macOS: the agent moves the mouse, types, manages windows and captures the screen when an app has no API
Clawd Cursor: desktop control through MCP
Clawd Cursor
An MCP server that lets an agent drive windows and apps: it reads the screen as structure and acts by element name
An MCP server helps an agent build and test Python automation tasks for Windows applications and Android devices.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| MCP Windows Desktop Automation (this card) | no | not required | 119 | |
| Windows MCP Server | no | not required | 129 | drives windows by control names through UI Automation; this server works through AutoIt and screen pixels |
| Windows-MCP | no | not required | 11,150 | reads window and interface state; this one has 50 AutoIt tools with limits and timeouts |
README in short
One process serves one owner. A native helper is isolated from the MCP event loop and restarts after a cancel, timeout or crash, and interrupted mutations are never replayed.