
Desktop Touch Mcp
A full-featured computer-use server that gives Claude direct control over Windows 10/11 desktops through 29 tools spanning UI Automation, Chrome DevTools Protocol, keyboard/mouse control, and terminal operations. The core innovation is a discover-then-act pattern: instead of guessing pixel coordinates, you call desktop_discover to get short-lived entity leases, then desktop_act operates on semantic targets with perception guards that verify window identity before input lands. Under the hood it's a Rust native engine (2ms UIA queries, SSE2 image diffing) with transparent PowerShell fallback. Includes Set-of-Marks visual OCR for non-accessible apps, reactive perception graphs to reduce screenshot round-trips, and 1:1 coordinate mode so image pixels map directly to screen positions. Ships with auto-dock CLI, full CJK support via GetWindowTextW, and a failsafe that kills the server when you mouse to the top-left corner.
- GitHub stars
- 25
- tools
- 32
- transport
- STDIO
- env vars
- 8
- last updated
- Nov 11, 2026
Tools
32 toolsPublic tool metadata for what this MCP can expose to an agent.
desktop_discoverObserve the desktop. Returns interactive entities with leases (UIA, CDP, Terminal, Visual SoM).
Observe the desktop. Returns interactive entities with leases (UIA, CDP, Terminal, Visual SoM).
No parameter schema in public metadata yet.
desktop_actPerform actions (click, type, set a value, select) on entities via lease validation. Returns semantic diffs — plus an optional `roiCapture` (changed-region PNG + next-target preview) on visual-only targets.
Perform actions (click, type, set a value, select) on entities via lease validation. Returns semantic diffs — plus an optional `roiCapture` (changed-region PNG + next-target preview) on visual-only targets.
No parameter schema in public metadata yet.
desktop_stateLightweight check of focus, active window, cursor, and Auto-Perception attention signal.
Lightweight check of focus, active window, cursor, and Auto-Perception attention signal.
No parameter schema in public metadata yet.
screenshotMulti-mode capture: `detail='text'` (UIA/OCR), `diffMode` (P-frame), `dotByDot` (1:1), and `background`. Returns a cheap `screenshot://by-ref/{id}` link to the saved image instead of inlining pixels every time.
Multi-mode capture: `detail='text'` (UIA/OCR), `diffMode` (P-frame), `dotByDot` (1:1), and `background`. Returns a cheap `screenshot://by-ref/{id}` link to the saved image instead of inlining pixels every time.
No parameter schema in public metadata yet.
screenshot_queryInspect and prune the on-disk screenshot cache behind the by-ref links: `screenshot_query` lists saved captures without re-reading pixels.
Inspect and prune the on-disk screenshot cache behind the by-ref links: `screenshot_query` lists saved captures without re-reading pixels.
No parameter schema in public metadata yet.
screenshot_gcReclaims space in the screenshot cache by retention policy (dry-run by default).
Reclaims space in the screenshot cache by retention policy (dry-run by default).
No parameter schema in public metadata yet.
workspace_snapshotInstant session orientation: all window thumbnails + UI summaries in one call.
Instant session orientation: all window thumbnails + UI summaries in one call.
No parameter schema in public metadata yet.
server_statusDiagnostic check for native engine health and feature activation.
Diagnostic check for native engine health and feature activation.
No parameter schema in public metadata yet.
keyboardSend keyboard input. Supports background input (WM_CHAR) and IME-safe clipboard bypass.
Send keyboard input. Supports background input (WM_CHAR) and IME-safe clipboard bypass.
No parameter schema in public metadata yet.
mouse_clickPrecision coordinate-based interaction with homing and force-focus protection.
Precision coordinate-based interaction with homing and force-focus protection.
No parameter schema in public metadata yet.
mouse_dragPrecision coordinate-based drag interaction with homing and force-focus protection.
Precision coordinate-based drag interaction with homing and force-focus protection.
No parameter schema in public metadata yet.
scrollMulti-strategy: `raw` (notches), `to_element`, `smart` (virtual lists), and `capture` (stitch).
Multi-strategy: `raw` (notches), `to_element`, `smart` (virtual lists), and `capture` (stitch).
No parameter schema in public metadata yet.
click_elementLegacy UIA-based click by name/ID (fallback when entities are unavailable).
Legacy UIA-based click by name/ID (fallback when entities are unavailable).
No parameter schema in public metadata yet.
browser_openIdempotent debug-mode launch of Chrome/Edge/Brave.
Idempotent debug-mode launch of Chrome/Edge/Brave.
No parameter schema in public metadata yet.
browser_navigateReliable navigation in a CDP-controlled browser.
Reliable navigation in a CDP-controlled browser.
No parameter schema in public metadata yet.
browser_clickHigh-level DOM click interaction stable across repaints and framework re-renders.
High-level DOM click interaction stable across repaints and framework re-renders.
No parameter schema in public metadata yet.
browser_fillHigh-level DOM form-fill interaction stable across repaints and framework re-renders.
High-level DOM form-fill interaction stable across repaints and framework re-renders.
No parameter schema in public metadata yet.
browser_formHigh-level DOM form interaction stable across repaints and framework re-renders.
High-level DOM form interaction stable across repaints and framework re-renders.
No parameter schema in public metadata yet.
browser_evalDeep inspection via `js` (scripting), `dom` (HTML), and `appState` (SPA data extraction).
Deep inspection via `js` (scripting), `dom` (HTML), and `appState` (SPA data extraction).
No parameter schema in public metadata yet.
browser_overviewSemantic discovery of the browser page.
Semantic discovery of the browser page.
No parameter schema in public metadata yet.
browser_searchGrep-like DOM search.
Grep-like DOM search.
No parameter schema in public metadata yet.
browser_locatePixel-accurate coordinate lookup in the browser page.
Pixel-accurate coordinate lookup in the browser page.
No parameter schema in public metadata yet.
terminalUnified command execution: `run` (send + wait + read), `read` (OCR/UIA), and `send`. `run` completion modes: `quiet`, `pattern`, and `exit`.
Unified command execution: `run` (send + wait + read), `read` (OCR/UIA), and `send`. `run` completion modes: `quiet`, `pattern`, and `exit`.
No parameter schema in public metadata yet.
wait_untilEfficient server-side polling for window, focus, text, or URL state changes.
Efficient server-side polling for window, focus, text, or URL state changes.
No parameter schema in public metadata yet.
window_dockWindow management: `pin` (always-on-top), `unpin`, `dock` (corner snap), and `focus`.
Window management: `pin` (always-on-top), `unpin`, `dock` (corner snap), and `focus`.
No parameter schema in public metadata yet.
focus_windowWindow management: focuses a window.
Window management: focuses a window.
No parameter schema in public metadata yet.
workspace_launchLaunch apps and auto-detect new HWNDs (supports localized titles).
Launch apps and auto-detect new HWNDs (supports localized titles).
No parameter schema in public metadata yet.
run_macroBatch up to 50 operations into a single round-trip for maximum efficiency.
Batch up to 50 operations into a single round-trip for maximum efficiency.
No parameter schema in public metadata yet.
clipboardSystem-level text exchange.
System-level text exchange.
No parameter schema in public metadata yet.
notification_showShows user alerts.
Shows user alerts.
No parameter schema in public metadata yet.
key_lockerManage credentials the terminal autofills for you (SSH key passphrases, sudo / login passwords), with secrets stored encrypted on this machine and never shown to the assistant.
Manage credentials the terminal autofills for you (SSH key passphrases, sudo / login passwords), with secrets stored encrypted on this machine and never shown to the assistant.
No parameter schema in public metadata yet.
excelAuthor and run Excel VBA macros via COM. `action='run_vba'` writes a macro into a managed Trusted Location and runs it; `action='check_access_vbom'` is a read-only preflight.
Author and run Excel VBA macros via COM. `action='run_vba'` writes a macro into a managed Trusted Location and runs it; `action='check_access_vbom'` is a read-only preflight.
No parameter schema in public metadata yet.
Sponsors
Configuration
DESKTOP_TOUCH_AUTO_GUARDSet to '0' to disable automatic action guards (reverts to v0.11.12 behavior).
DESKTOP_TOUCH_PERCEPTION_RESOURCESSet to '1' to enable MCP perception resources.
DESKTOP_TOUCH_PERCEPTION_IDLE_MSIdle ms before the WinEvent sidecar enters dormancy (default 60000).
DESKTOP_TOUCH_PERCEPTION_DORMANCY_DISABLESet to '1' to keep the WinEvent sidecar always running (no auto-dormancy).
DESKTOP_TOUCH_DIAGNOSTIC_LOG_DISABLESet to '1' to disable the JSONL diagnostic event log (issue #365 Phase 2).
DESKTOP_TOUCH_DIAGNOSTIC_LOG_PATHOverride path for the diagnostic event log.
DESKTOP_TOUCH_DIAGNOSTIC_LOG_MAX_BYTESSize in bytes at which the diagnostic event log rolls over to diagnostic.log.1 (default 67108864 = 64 MiB). Two rolled generations are kept. Values below 1 MiB are raised to 1 MiB and values above 1 GiB are lowered to 1 GiB; anything that is not a positive whole number falls back
DESKTOP_TOUCH_RESOLVE_LOG_RAWSet to '1' to record window titles and title queries in clear in the diagnostic event log. Off by default: titles are recorded as a short hash plus their length, because a title can contain a file name, a mail subject, or a browser page title.
Readme
desktop-touch-mcp
Computer-use MCP server for Windows. Lets Claude, Cursor, or any MCP client see and operate your Windows 10/11 desktop — screenshots, UI Automation, Chrome CDP, keyboard / mouse, terminal — with semantic discover-then-act targeting that avoids pixel-coordinate guessing, and per-action perception guards that catch wrong-window typing before it happens.
npx -y @harusame64/desktop-touch-mcp
32 tools, native Rust engine (UIA in 2 ms), zero-config PowerShell fallback, full CJK support, MIT licensed. Add the snippet above to your Claude / Cursor / VS Code Copilot config and Claude can drive Notepad, Excel, Chrome, Windows Terminal, and any other app on your machine.
Details
- Repository
- github.com/harusame64/desktop-touch-mcp
- Category
- Web & Browser Automation
- Package
@harusame64/desktop-touch-mcp- Transport
- STDIO
- Registry
- MCP registry, active