Windows desktop automation for AI agents: Anode, Windows-MCP, Desktop Touch MCP, windows-computer-use-mcp and Terminator compared
Checked on 16 October 2026: Anode runs the agent in a separate Windows session with its own pointer and keyboard focus, while Windows-MCP, Desktop Touch MCP, windows-computer-use-mcp and Terminator act in your own session, and each of the four has click paths that move your real pointer (read from their docs and source code, not run by us). In Anode's live release check (version 0.11.1, 2 October 2026), a program in the agent's session moved its pointer while your real pointer sat over Anode's hidden viewer: Windows' Remote Desktop control tried 7 times to copy those moves to your pointer, Anode blocked all 7, and a watcher saw no matching jump of your pointer. Method, sources and data are below.
We make Anode. Read this as a vendor's page: our own numbers come from real runs that you can repeat, and everything about the other tools links to where we read it. If we got something wrong, open an issue and we will correct it.
The short answer
- You want to keep using your mouse and keyboard while the agent works on the same PC: Anode. The agent gets its own Windows session (the seat), so with the viewer hidden (the default) its clicks and typing don't land on your desktop.
- You want the agent to work on your own desktop while you watch: Windows-MCP, the most starred of these (9,254 GitHub stars) and listed in Claude's connector directory.
- You want the agent in your session but without moving your pointer where it can: Desktop
Touch MCP's
click_elementand Terminator'sinvoke_elementact through UI Automation without moving the pointer, though Terminator brings the target window to the front by default. Their mouse tools move it. - You are on Windows Home, or can't run an administrator step: not Anode. It needs Windows 10/11 Pro, Enterprise or Education and one administrator prompt.
- You need a security boundary for untrusted work: none of these five. Use a virtual machine or Windows Sandbox.
Side by side
Anode's column is measured or taken from its own release record. The other columns are from each project's README, docs and source at the commit named under Sources, read on 16 October 2026, not run by us.
| Anode | Windows-MCP | Desktop Touch MCP | windows-computer-use-mcp | Terminator | |
|---|---|---|---|---|---|
| Where the agent acts | A second Windows session for your account (a child session), with its own screen | Your session | Your session | Your session | Your session |
| Your real pointer | Not used by the agent; the seat has its own. Live check: 7 of 7 copied pointer updates blocked | Moved: Click calls SetCursorPos, then a mouse event |
Moved by mouse_click, mouse_drag and scroll, and by desktop_act's last fallback; not by click_element (UI Automation Invoke only) |
Moved by its mouse tool and coordinate clicks in either mode (SetCursorPos and mouse_event); element clicks go through pywinauto, and the opt-in "background" mode tries Invoke first, then a real click |
Moved: click_element moves the real pointer with SendInput to click, then puts it back by default (restore_cursor); invoke_element doesn't move it |
| Your keyboard focus | Not used; the seat has its own focus | Type clicks its target first; the App tool's switch brings a window to the front |
Its keyboard tool brings the window to the front by default, except background typing into terminal-class windows; optional forceFocus |
Focuses the window before typing when setting text fails; its safety doc asks you to step back | Action tools, invoke_element included, bring the target window to the front by default; most then restore your keyboard focus, but click_element, invoke_element and hover_element leave it on the target unless restore_focus is set |
| How you take over or stop it | Ctrl+Alt+Shift+K or anode kill signs the seat out |
Move the mouse or press Ctrl+Alt+Shift+Backspace; the agent resumes after 10 s idle | Park the mouse in the top-left corner for 0.5 s | Moving the pointer to the top-left corner aborts pointer actions; input waits for approve_automation, which opens a 5-minute window by default |
A stop_execution tool cancels running tools; no hotkey or corner stop found |
| MCP tools | 41 (counted from tools/list) |
21 (source) | 32 (README) | 20, or 22 with two opt-in tools (source) | 35 (README and source) |
| Browsers | Headed Chrome or Edge inside the seat, on its own profile | DOM mode through UI Automation: Chrome and Edge, and Firefox through an IAccessible2 fallback | Chrome, Edge and Brave over the DevTools protocol (started with a debugging port) | None built in; it suggests a separate Playwright server | Through its Chrome extension, in your browser session |
| Android emulators | Yes, booted inside the seat | Not mentioned | Not mentioned | Not mentioned | Not mentioned |
| Windows editions | 10/11 Pro, Enterprise, Education, or Server; not Home; x64 | Windows 10 and 11 (editions not stated) | Windows 10/11 64-bit (editions not stated); a 4-tool macOS preview | Windows 10 and 11 (editions not stated) | Windows only (editions not stated) |
| Install | install.ps1, then anode setup (one administrator prompt: Remote Desktop and child sessions) |
uvx windows-mcp serve (Python, uv) |
npx -y @harusame64/desktop-touch-mcp (Node 20+) |
install.ps1 from its release (an MCPB bundle), or uv |
npx -y terminator-mcp-agent |
| Telemetry | None | On by default (PostHog); ANONYMIZED_TELEMETRY=false turns it off |
None documented | A local action log (SQLite); no remote analytics found | On by default: PostHog analytics and Sentry error reports (a default build feature); environment variables turn them off |
| Licence · stars · latest release | MIT · 2 · 0.11.2, 10 Oct 2026 | MIT · 9,254 · 0.8.8, 10 Oct 2026 | MIT · 22 · 2.3.1, 13 Oct 2026 | MIT · 46 · 0.8.0, 10 Oct 2026 | MIT · 1,655 · 0.24.32, 5 Apr 2026 |
What we measured on Anode
Two sources: a fresh run for this page, and Anode's own release record, where each live check names the script that repeats it.
Run for this page (16 October 2026)
- Quick checks: a Release build of
mainat47feb59passed all 110 quick checks; the build, the checks and the documentation check took 45 s together on Windows 11 Pro (build 26200). One of the checks confirms that hidden managed and native calls can't move the real pointer (full output). The quick checks use private test pipes and create no seat, so they test the code paths, not a live desktop. - Tool list: the same build's MCP server listed 41 tools in answer to
tools/list, run asanode --channel compare-probe-1016 mcpso it couldn't reach an installed Anode, and no seat was started (tool names and description sizes).
To repeat it, in PowerShell with the .NET 10 SDK installed:
git clone https://github.com/skulitom/Anode cd Anode git checkout 47feb59 powershell -ExecutionPolicy Bypass -File scripts\build.ps1 -QuickTest -OutputDirectory artifacts\pkg-build
Live checks from Anode's release record
These ran in a real seat with the viewer hidden, on Windows 11 Pro build 26200 (release record):
- Pointer isolation (0.11.1, 2 October 2026):
scripts\test-pointer-isolation.ps1 -PlacePointerput the real pointer over the hidden viewer, where Windows' Remote Desktop control would otherwise copy the seat's pointer moves to it, and a probe in the seat moved its pointer the way an SDL game does. The control tried 7 pointer updates; Anode blocked all 7, forwarded none, and the watcher saw no matching jump of the real pointer. Later releases rely on the regression check above; the live script was last run on 0.11.1. - Real input in a headed browser (0.11.1 and 0.11.2):
test-development.ps1 -VerifyInputconfirmed that Anode's mouse, key and text input arrived in a Chrome page inside the seat. - Native controls (0.11.2, 10 October 2026):
test-desktop.ps1passed UI Automation discovery, text replacement with read-back, invocation, waits, check boxes, lists and sliders, and a File Explorer window exposed 99 controls. In Chrome,test-chrome-form.ps1replaced a text field and read it back in 584 ms. - Display changes (0.11.2): four resolutions and scalings, up to 2560x1440 at 125%, applied live in 153–171 ms each, and the startup display came back afterwards.
- Android (0.11.1): a read-only API 36 emulator booted inside the seat in 15.8 s.
Each tool, and when to choose it over Anode
Windows-MCP
CursorTouch/Windows-MCP is a Python MCP server with 21 tools,
including Snapshot (the UI Automation tree), Screenshot, Click, Type,
PowerShell, Registry and FileSystem. It is listed in Claude's connector
directory. It works in your session: its Click moves the real cursor before pressing, and
Type clicks its target first. While the agent is in
control, a screen edge and a cursor glow show it; you take control back by moving the mouse, and it hands control back
after 10 seconds without input. Its README calls that takeover best-effort, and its security notes say it is not
sandboxed and suggest a VM or Windows Sandbox. Anonymous telemetry is on until you set
ANONYMIZED_TELEMETRY=false.
Choose it when you are happy to watch the agent work on your own desktop, are on Windows Home (where Anode can't run; Windows-MCP's README lists Windows 10 and 11 without naming editions), want the most starred project here, or want shell, registry and file tools in the same server. Choose Anode when you want to keep working while the agent clicks.
Desktop Touch MCP
Harusame64/desktop-touch-mcp is a TypeScript server
with a native Rust core and 32 tools. It mixes routes. desktop_act tries UI Automation (Invoke and
Value), then the DevTools protocol, then terminal input (for Windows Terminal, a paste it asks you to approve each
time), and falls back to a real mouse click at the element. click_element uses UI Automation Invoke
only, which its guide says works without moving the cursor. mouse_click, mouse_drag and
scroll move the real mouse, animated by default. Its keyboard tool brings the target window to the front
by default, except background typing into terminal-class windows, and a forceFocus option forces a
window forward when Windows refuses. Parking the mouse in the top-left corner stops it.
Choose it for UI Automation-first work in your own session, Chrome pages over the DevTools protocol, terminal input, its Excel tool, or a macOS preview. Choose Anode when apps need real mouse and keyboard input and you don't want that input on your desktop.
windows-computer-use-mcp
sandraschi/windows-computer-use-mcp is a Python
server built on pywinauto, with 20 tools (22 with two opt-in ones), plus a local web UI and a desktop app. Its mouse
tool and coordinate clicks move the real pointer in either dispatch mode; element clicks go through pywinauto, and an
opt-in "background" mode tries UI Automation Invoke first but falls back to a real click. Mouse and keyboard
actions wait for approve_automation, a human-in-the-loop gate that opens a 5-minute window by default
(an environment variable bypasses it), and moving the pointer to the top-left corner aborts pointer actions.
Its safety doc says the server acts with full access to the host and doesn't start Windows Sandbox, and suggests a
separate virtualisation server for isolation.
Choose it when you want an approval gate before the agent's input, a local operator UI, or pywinauto's control coverage. Choose Anode when nobody should have to step away from the PC.
Terminator
mediar-ai/terminator is a Rust automation library with an MCP
server (terminator-mcp-agent, 35 tools), from Mediar. Its README lists "Doesn't take over your cursor or keyboard" among its features. Its source, read on 16 October 2026, shows that the click_element tool moves the real pointer
with SendInput to click and then puts it back by default (restore_cursor), and that its
action tools bring the target window to the front by default; most restore your keyboard focus afterwards, but
click_element and invoke_element don't unless asked. invoke_element (UI Automation Invoke) is the route that doesn't move the pointer. A
stop_execution tool cancels running tools, and a full-screen action overlay is on by default. PostHog
analytics and Sentry error reports (a default build feature) are on by default; environment variables turn both off. Its optional OmniParser and Gemini vision modes call Mediar's hosted service by default.
Choose it when you want its Rust automation library as well as the MCP server, its Chrome extension in your own signed-in browser, or Mediar's workflow builder and managed hosting for teams. Choose Anode when the agent's clicks and windows must stay off your desktop.
Anode's limits
- Windows 10/11 Pro, Enterprise or Education, or Windows Server, on x64. Windows Home has no child sessions.
anode setupneeds one administrator prompt; it turns on Remote Desktop and child sessions and can restart Remote Desktop Services (what it changes).- One seat per Windows session, shared by your agents in turn.
- The seat runs as you, with your files, accounts and network: desktop isolation, not a security sandbox.
- Apps that allow one copy may already be open in your own session; browsers need a separate profile.
- Builds are unsigned, so SmartScreen may warn. Anode is young and has few users so far (2 GitHub stars).
Also in the same searches
- umbriel (2 stars) drives windows in your session through UI Automation and posted messages so that invoke, scroll, set-value and toggle move no cursor, even on hidden or minimised windows; its README says typing and real clicks still need an unlocked desktop. Read, not run.
- Cua Driver, Desktop Commander and Windows 365 for Agents are compared in Anode's When to use Anode, and when to use something else.
Method
- The searches this page answers, run on 16 October 2026: "Windows desktop automation for AI agents MCP server", "best MCP server for Windows desktop GUI automation" and "MCP server automate Windows apps without taking over mouse and keyboard background". Directories and marketplaces ranked (Glama, Playbooks, Enterprise DNA, mcpservers.org, G2 and others), with Claude's connector listing for Windows-MCP and two blog posts; none of the results was a head-to-head comparison, and Anode appeared in none.
- Anode was built and checked as described above. We did not start a seat for this page; the live results come from the release record.
- The other tools were not installed or run. They act on the live desktop, and we compare such tools from their docs and source only. We read each README and the files named below. Star counts and releases come from GitHub on 16 October 2026.
Sources
All read on 16 October 2026, at the commit shown.
- Windows-MCP at
a3d8e01: README (Desktop control, Telemetry, Supported Operating Systems), uia/core.py (Click), desktop/service.py (window switching,type), tools/, SECURITY.md; Claude connector listing. - Desktop Touch MCP at
4368a8f: README, docs/guide.md (mouse speed, force-focus, recovery hints, security), desktop-executor.ts (route order), stub-tool-catalog.ts (tool descriptions). - windows-computer-use-mcp at
1ace9e5: README, docs/SAFETY.md, dispatch.py (default mode), tools/__init__.py, app.py (approve_automation), pyproject.toml (Windows 10 and 11). - Terminator at
73a381c: README, element.rs (click,invoke, window activation), input.rs (send_mouse_click), MCP agent README, server.rs (click_element,stop_execution, window-management defaults), utils.rs (restore_cursor, window-management options), Cargo.toml (default features), posthog.rs, sentry.rs. - umbriel at
752d5f2: README. - Anode at
47feb59: RELEASE-READINESS.md, ARCHITECTURE.md (how the seat works), and this page's data: quick checks and tool list.