Desktop MCP Server

Windows 11 desktop automation MCP server. Win32, UIA, CDP/Chrome, 56 tools. Windows-only.

Local serverstdio

What is the Desktop MCP server?

Most browser automation work still happens through a UI a human drives. Desktop MCP server moves it into the conversation instead. Windows 11 desktop automation MCP server. Win32, UIA, CDP/Chrome, 56 tools. Windows-only.

The short version

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.

  • LLM-native design — — Built around how LLMs think, not how humans click. run_macro batches multiple operations into a single API call; diffMode sends only the windows that changed since the last frame. Minimal tokens, minimal round-trips
  • Full CJK support — — Uses Win32 GetWindowTextW for window titles, avoiding nut-js garbling. IME bypass input supported for Japanese/Chinese/Korean environments
  • 3-tier token reduction — — detail="image" (~443 tok) / detail="text" (~100–300 tok) / diffMode=true (~160 tok). Send pixels only when you actually need to see them
  • 1:1 coordinate mode — — dotByDot=true captures at native resolution (WebP). Image pixel = screen coordinate — no scale math needed. With origin+scale passed to mouse_click, the server converts coords for you — eliminating off-by-one / scale bugs
  • Chromium smart fallback — — detail="text" on Chrome/Edge/Brave auto-skips UIA (prohibitively slow there) and runs Windows OCR. hints.chromiumGuard + hints.ocrFallbackFired flag the path taken
  • UIA element extraction — — detail="text" returns button names and clickAt coords as JSON. Claude can click the right element without ever looking at a screenshot

Getting it running

@harusame64/desktop-touch-mcp on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.

What it needs from you

Configuration is passed through the environment: GITHUB_TOKEN. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

| | | |---|---| | OS | Windows 10 / 11 (64-bit) | | Node.js | v20+ recommended (tested on v22+) | | PowerShell | 5.1+ (bundled with Windows) — used only as fallback when the Rust native engine is unavailable | | Claude CLI | claude command must be available | > Note: nut-js native bindings require the Visual C++ Redistributable. > Download from

Things to watch

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

How it compares

Plenty of browser automation servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. It is maintained by Harusame64; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

How to install the Desktop MCP server

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

Configuration as documented by the project. Restart the client after saving.

Configuration

| | | |---|---| | OS | Windows 10 / 11 (64-bit) | | Node.js | v20+ recommended (tested on v22+) | | PowerShell | 5.1+ (bundled with Windows) — used only as fallback when the Rust native engine is unavailable | | Claude CLI | claude command must be available | > Note: nut-js native bindings require the Visual C++ Redistributable. > Download from

VariableDescriptionRequired
GITHUB_TOKENCredential the server authenticates with.Yes

Frequently asked questions

It connects Desktop to MCP-compatible AI assistants such as Claude and Cursor. Instead of copying data back and forth by hand, the assistant works with Desktop directly.