← Back to directory
D

Desktop Touch MCP

Community
Windows computer-use MCP server: drive any desktop app with semantic discover-then-act targeting.
GitHub source repository ↗
★ 18 Stars Category · Dev Tools Popular Source revision 6d7107e5e281
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.

Reliability
8/20
Security and permissions
9/20
Maintenance
7/20
Documentation
12/20
Setup experience
9/20
Read the FMRS scoring method →

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.

Tools

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

Setup

  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"
      ]
    }
  }
}

Fit and risk

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.

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.

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 DesktopFull support
Claude CodeFull support
CursorFull support
VS Code CopilotFull support