← Back to directory
D

Desktop Touch MCP

Community
Windows computer-use MCP server: drive any desktop app with semantic discover-then-act targeting.
Category
Dev Tools #308 of 438
Stars
★ 22 Popular
Transport
stdio (local process)
Runtime
Node.js v20+ · Prebuilt binary
Credentials
No credential needed
License
MIT
Last commit
Tools
32
45FMRS · D

This server is a powerful, token-efficient option for Windows desktop automation. Its native Rust engine and thoughtful safety features (auto-guards, failsafe) make it suitable for supervised automation contexts. Be mindful of its Windows-only nature and the inherent risks of agent-driven desktop control.

Strongest · Documentation 12/20 Weakest · Maintenance 7/20

Reliability
8/20
Security and permissions
9/20
Maintenance
7/20
Documentation
12/20
Setup experience
9/20
Why each score
Reliability 8/20
The repository shows a rich feature set and architecture (Rust native engine, PowerShell fallback, many tools), but this review is based only on the README and manifest; no source code, tests, or CI were inspected. The manifest claims 32 tools, consistent with the README tool list, but no actual run evidence is present. Award 8 instead of higher: no verification of startup or handshake reliability from static review; deductions for missing execution evidence (e.g., CI config and tests not seen).
Security and permissions 9/20
No obvious red lines: no malware or credential theft indications. Key Locker uses Windows DPAPI for encryption, but README admits helper exe is unsigned and may trigger SmartScreen; auto-guards and emergency stop are pluses, but allowlist details not verified in source. Score 9: primary risks visible with mitigations, but unsigned executable unverified.
Maintenance 7/20
Repository has versioning, releases, and MIT license, but no evidence of recent commit history or issue response. Version 1.16.0 suggests release process, but no contributor activity, dependency updates, or security advisory channels evident. Score 7: active releases and license, but governance and update path opaque.
Documentation 12/20
README is very detailed: installation, usage, tool parameters, environment variables, troubleshooting, security considerations all documented. But some claims unverifiable (e.g., performance benchmarks). Docs layered but lacking a verified API reference; somewhat verbose. Score 12: usable with examples and limitations, but unverifiable claims and organizational issues.
Setup experience 9/20
Clear setup steps provided: package on npm with config examples. However, no independent verification that it runs. Platform-specific (Windows 10/11) stated. Config examples for common clients are sufficient. Score 9: setup appears straightforward, but lack of reproducible build or test evidence reduces score.

Static review · not runListed 2026-09-08

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local filesRuns commands or codeUses the networkChanges third-party account dataControls a browser

Best for

  • Windows users wanting AI agents to operate desktop apps intuitively.
  • Developers using Claude or Cursor for end-to-end desktop testing.
  • Those needing high-fidelity UI automation with low token overhead.

Not for

  • macOS or Linux – Windows only.
  • Those needing pixel-coordinate-based automation exclusively (though available).
  • Games or RDP sessions where UIA fails and must rely on OCR.
  • Headless environments – requires an interactive desktop.

Required permissions

  • Read screen content (screenshots).
  • Enumerate UI elements via Windows UI Automation API.
  • Simulate keyboard and mouse input.
  • Control browsers via CDP.
  • Access filesystem for screenshot and log caching.
  • Store credentials encrypted with DPAPI.

Risks and side effects

  • Malicious prompts could cause destructive actions: deleting files, downloading malware. Since the agent can control the desktop, use in a sandboxed environment if possible.
  • Credentials are stored locally encrypted with DPAPI, but Key Locker uses unsigned helper executable (SmartScreen may warn).
  • Automation could inadvertently interfere with other apps; user supervision is advised.
  • Could be used for keylogging or unauthorized data access if not properly configured.

Setup

Before you start

Runtime:Node.js v20+ · Prebuilt binary

GITHUB_TOKEN optionalsecret GitHub personal access token (github.com/settings/tokens) to avoid the 60 req/hour anonymous limit on shared networks; optional.
GH_TOKEN optionalsecret Alias for GITHUB_TOKEN; optional.
Other optional settings (32)
DESKTOP_TOUCH_AUTO_GUARD optional Set to '0' to disable automatic action guards; optional.
DESKTOP_TOUCH_PERCEPTION_RESOURCES optional Set to '1' to enable MCP perception resources; optional.
DESKTOP_TOUCH_PERCEPTION_IDLE_MS optional Idle ms before the WinEvent sidecar enters dormancy; default 60000.
DESKTOP_TOUCH_PERCEPTION_DORMANCY_DISABLE optional Set to '1' to keep the WinEvent sidecar always running; optional.
DESKTOP_TOUCH_DIAGNOSTIC_LOG_DISABLE optional Set to '1' to disable the JSONL diagnostic event log; optional.
DESKTOP_TOUCH_DIAGNOSTIC_LOG_PATH optional Overrides the diagnostic event log path; optional.
DESKTOP_TOUCH_DIAGNOSTIC_LOG_MAX_BYTES optional Diagnostic log rollover size threshold; default 64 MiB; optional.
DESKTOP_TOUCH_RESOLVE_LOG_RAW optional Set to '1' to record window titles in clear text in the diagnostic log; optional.
DESKTOP_TOUCH_MCP_HOME optional Overrides the runtime cache root directory; optional.
DESKTOP_TOUCH_MCP_ALLOW_UNVERIFIED optional Set to '1' to skip runtime integrity verification; development from source only; optional.
DESKTOP_TOUCH_DOCK_TITLE optional Target window to auto-dock on startup; '@parent' finds the hosting terminal; optional.
DESKTOP_TOUCH_DOCK_CORNER optional Dock corner; default bottom-right; optional.
DESKTOP_TOUCH_DOCK_WIDTH optional Docked window width (px or percent); default 480; optional.
DESKTOP_TOUCH_DOCK_HEIGHT optional Docked window height; default 360; optional.
DESKTOP_TOUCH_DOCK_PIN optional Always-on-top toggle; default true; optional.
DESKTOP_TOUCH_DOCK_MONITOR optional Target monitor for docking; default primary; optional.
DESKTOP_TOUCH_DOCK_SCALE_DPI optional Set to true to scale dock size by DPI; optional.
DESKTOP_TOUCH_DOCK_MARGIN optional Screen-edge padding in px; default 8; optional.
DESKTOP_TOUCH_DOCK_TIMEOUT_MS optional Max wait in ms for the target window; default 5000; optional.
DESKTOP_TOUCH_SCREENSHOTS_DIR optional Pins the screenshot cache to a specific folder; optional.
DESKTOP_TOUCH_SCREENSHOT_MAX_COUNT optional Max captures kept in cache; default 200; optional.
DESKTOP_TOUCH_SCREENSHOT_MAX_BYTES optional Total cache size cap on disk; default 256 MiB; optional.
DESKTOP_TOUCH_SCREENSHOT_MAX_AGE_MS optional Drops captures older than this many ms; off by default; optional.
DESKTOP_TOUCH_SCREENSHOT_AUTOPRUNE optional Auto-trims cache as new captures are saved; default on; optional.
DESKTOP_TOUCH_SCREENSHOT_MIN_EVICT_AGE_MS optional Minimum age in ms before auto-eviction; default 60000; optional.
DESKTOP_TOUCH_CAPTURE_BACKEND optional Diagnostic override for capture path; set to nutjs to force the older backend; optional.
DESKTOP_TOUCH_FAILSAFE_HOLD_MS optional Cursor dwell ms before emergency stop; default 500; optional.
DESKTOP_TOUCH_MOUSE_SPEED optional Default mouse movement speed in px/sec; default 1500; optional.
DESKTOP_TOUCH_FORCE_FOCUS optional Set to '1' to make forceFocus the default for input tools; optional.
DESKTOP_TOUCH_DISABLE_KEY_LOCKER optional Set to '1' to disable Key Locker credential autofill; optional.
DESKTOP_TOUCH_DISABLE_FUKUWARAI_V2 optional Set to '1' to hide desktop_discover/desktop_act (V2 kill switch); optional.
DESKTOP_TOUCH_ALLOWLIST optional Path to a JSON allowlist of executables permitted for workspace_launch; optional.
  1. Run via npx: npx -y @harusame64/desktop-touch-mcp.
  2. Add the config snippet above to Claude Desktop config or Claude Code's .claude.json under mcpServers.
  3. Ensure Windows 10/11 64-bit, Node.js v20+ (v22+ recommended), PowerShell 5.1+ (fallback).
  4. For browser automation, start Chrome with remote debugging: chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\tmp\cdp.
  5. For other clients use HTTP mode: npx -y @harusame64/desktop-touch-mcp --http (default port 23847).
claude_desktop_config.json
{
  "mcpServers": {
    "desktop-touch": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@harusame64/desktop-touch-mcp"
      ]
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "desktop-touch": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@harusame64/desktop-touch-mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add desktop-touch -- npx -y @harusame64/desktop-touch-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After starting Claude CLI, the tool list should show 32 tools including desktop_discover, screenshot, and server_status; calling server_status confirms native engine health, or simply ask the AI to "take a screenshot and describe my desktop" to prove the connection works.

Troubleshooting

  1. Check Node.js version (v20+).
  2. Ensure running on 64-bit Windows.
  3. Check if logs are written to desktop (e.g., when launched from MCP client).
  4. If browser tools fail, confirm Chrome is started with remote debugging port.
  5. If input doesn't go to intended window, call focus_window first and then keyboard.
  6. For force-focus errors, set forceFocus: true or set env DESKTOP_TOUCH_FORCE_FOCUS=1.
  7. If something is silently blocked, look for balloon notifications in corner.

Things to try

Once connected, you can ask your AI assistant things like:

  • Show me what windows are open on my desktop and summarize each one.
  • Open Notepad, type "Hello, world", then take a screenshot to confirm.
  • Open https://example.com in Chrome and tell me the page title.
  • Dock my terminal window to the bottom-right corner and pin it on top.

Tools 32

desktop_discover read-only
Observe the desktop and return interactive entities with leases (UIA, CDP, Terminal, Visual SoM).
desktop_act writes
Perform actions (click, type, drag) on entities after lease validation; returns semantic diffs and optional ROI capture.
desktop_state read-only
Lightweight check of focus, active window, cursor, and attention signal.
screenshot read-only
Multi-mode capture: text (UIA/OCR), diffMode (P-frame), dotByDot (1:1), etc., with by-ref links to save tokens.
screenshot_query read-only
Inspect screenshot cache entries without re-reading pixels.
screenshot_gc destructive
Prune screenshot cache by retention policy (dry-run by default).
workspace_snapshot read-only
Full session orientation with all window thumbnails and UI summaries in one call.
server_status read-only
Diagnostic for native engine health and feature activation.
Show 24 more tools
keyboard writes
Send keyboard input; supports background input and IME-safe clipboard bypass.
mouse_click writes
Precision coordinate-based click with homing and force-focus protection.
mouse_drag writes
Coordinate-based drag; cross-window drags blocked by default.
scroll writes
Multi-strategy scrolling: raw, to_element, smart (virtual lists), or capture.
click_element writes
Legacy UIA click by name/ID as fallback when entities unavailable.
browser_open writes
Launch Chrome in debug mode (idempotent) or connect to existing CDP endpoint.
browser_navigate writes
Navigate via CDP to URL without address bar interaction.
browser_click writes
High-level DOM click via CDP, stable across repaints and framework re-renders.
browser_fill writes
Fill controlled inputs for React/Vue/Svelte state-safe.
browser_form writes
Advanced DOM interaction for multiple fields.
browser_eval read-only
Evaluate JS, read DOM, or extract SPA state.
browser_overview read-only
List links, buttons, inputs with ARIA toggles and positions.
browser_search read-only
Grep-like DOM search with confidence ranking.
browser_locate read-only
CSS selector → physical screen coordinates, accounting for browser chrome.
terminal writes
Execute commands and wait for completion or output; supports quiet/pattern/exit modes.
wait_until read-only
Efficient server-side polling for window, focus, text, or URL changes.
window_dock writes
Window management: pin, unpin, dock to corner.
focus_window writes
Bring a window to foreground.
workspace_launch writes
Launch apps and auto-detect new HWNDs; supports localized titles.
run_macro writes
Batch up to 50 operations into a single call for maximum efficiency.
clipboard writes
System-level text exchange.
notification_show writes
Show user notifications.
key_locker writes
Manage SSH key passphrases and passwords, stored encrypted with DPAPI; autofills in terminals.
excel writes
Author and run Excel VBA macros via COM.

Use cases

Let Claude or Cursor automate desktop tasks like Notepad, Excel, Chrome.
Perform GUI testing or UI regression on Windows.
Automate repetitive workflows with keyboard/mouse across multiple monitors.
Safely autofill SSH/sudo passwords with Key Locker.

Supported clients

Claude Desktop
Claude Code
Cursor
VS Code

Listed from the project's documentation, not tested by this site.

Overview

Desktop Touch MCP is a computer-use MCP server for Windows 10/11. It provides 32 tools covering screenshots, UI Automation, Chrome CDP, keyboard/mouse input, and terminal control. Its core design uses semantic discover-then-act targeting (entities with leases instead of pixel coordinates) and per-action perception guards to prevent wrong-window actions. Under the hood is a native Rust engine (UIA focus query in 2 ms) with transparent PowerShell fallback. It includes Key Locker for secure SSH/sudo password autofill. Compatible with Claude, Cursor, and other MCP clients. Licensed under MIT.

Similar servers

Context7 80 · B

Upstash's official server providing up-to-date third-party library docs for AI coding assistants

★ 63.3k · Tools 2 Compare with this →

Source revision 4368a8f91d5a Data synced 2026-10-19 Read the FMRS scoring method