Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1266Tools index

Previous survey · No. 1240 ·

Pricing
Open Source
Type
TOOL
Use case
Workflow Automation
Interfaces
MCP
GitHub
86 stars
Latest release
v7.6.1
Date

About

An MCP server built in Rust that exposes 64 stable tools for cross-platform desktop automation on macOS, Windows, and Linux, covering screenshots, mouse/keyboard input, accessibility trees, filesystem, process, registry, and virtual-desktop control. Version 7.1 adds stateless MCP 2026-07-28 protocol support, resource subscriptions, sanitized logging, and a long-running tasks extension while preserving backward compatibility with legacy 2025 clients.

What it does

Lets an AI agent operate a real desktop on macOS, Windows or Linux: see the screen, click, type, read the clipboard, inspect an app's accessibility controls, and run AppleScript or PowerShell. It speaks the Model Context Protocol (MCP), the standard way agents call outside tools, so any MCP client can use it. A TypeScript server checks each request against permissions and policy, then hands the action to a native Rust module that talks to the operating system. It prefers structured routes, app scripting and accessibility controls, and falls back to screenshots and raw mouse input when an interface offers nothing better.

Why it's ranked here

Desktop control is the hard, platform-specific part of computer use, and this ships it for three operating systems on both Intel and ARM as one npm install with prebuilt native binaries, no Rust toolchain needed. MIT licensed. The security design is unusually explicit for the category: approvals are one-shot and bound to the exact call, the bundled HTTP listener refuses non-loopback binds, file access can be fenced to allowed folders, and logs exclude arguments, screenshots and clipboard data. The documentation is candid about residual risk, which is what anyone handing a model their mouse should want to read first.

What's good

The guardrails are specific and bounded. An approval signed for one call cannot approve another, expires after ten minutes, and the server never holds more than 4,096 outstanding. Waits cap at 300 seconds, file reads at 1 MiB, directory listings at 1,000 entries. Mutating actions take a cross-process lock so two agents cannot fight over the cursor, while read-only calls stay concurrent. A native emergency stop latches off every mutation until the host resets it. Operators can allow or block target apps by name and require approval for chosen operations. Newer and older MCP clients are both supported, and the core protocol libraries are pinned to an exact version.

Tradeoffs

Leave the profile unset and you get every tool, including process kill, registry edits and script execution; an unrecognised profile name also falls back to that full set rather than failing. The project's own security notes say that without a folder allow-list and a client that reports allowed folders, the filesystem tool can reach any path the process can. The documentation has drifted: the architecture guide describes version 7.2 and says it serves no interactive UI, while the package is 7.4 and ships a run console app. Tool counts disagree across files. The Linux native layer builds against X11 libraries, so test Wayland before relying on it.

How to use it well

Fits a developer building an agent that has to drive desktop software with no API: Office documents, design tools, legacy line-of-business apps. Start with the smaller core profile and widen it only as a task demands. Set a folder allow-list and an allowed-apps list before the first run, and turn on approval for destructive operations. Always name the target app or window, since coordinate clicks land on whatever is in front. Keep web browsing and desktop control in separate sessions; the project itself flags that mixing them opens a prompt-injection path. For work reachable through an API or plain files, skip the desktop entirely.

Technical notes+

src/server.ts builds an McpServer from @modelcontextprotocol/server 2.0.0 with a createRequestStateCodec keyed by COMPUTER_USE_REQUEST_STATE_SECRET (else a random per-process key) and ttlSeconds 600, binding method plus principalKey from src/authority.ts, which hashes issuer, tenant, subject and clientId from host-verified authInfo only. Elicited approvals time out at 60_000 ms and fail closed on any error. src/approval-ledger.ts keeps an in-memory issued-state allowlist (cap 4096, 600000 ms expiry, consumed on non-preflight use), so a restart invalidates old approvals. src/tool-catalog.ts defines 70 entries while its header comment says 64; parseProfile maps unknown or missing values to full. MUTATING_TOOLS derives from the mutates flag and gates the session lock in src/session.ts, which also checks isNativeEmergencyStopActive before dispatch. native/Cargo.toml uses napi 2, x11 with xtest on Linux, windows 0.58 and core-graphics on macOS; native/src/lib.rs declares a keychain module alongside mouse, keyboard, screenshot and accessibility.

Observed

License
MIT (LICENSE, package.json)
Language
TypeScript server with a Rust native module via N-API
Packaging
npm package with prebuilt native binaries for macOS, Windows and Linux on x64 and arm64
Runtime requirement
Node.js 20 or newer, interactive desktop session
Interfaces
MCP over stdio, loopback-only Streamable HTTP, in-process JavaScript client, run console host
Default tool profile
full, when COMPUTER_USE_PROFILE is unset or unrecognised (src/tool-catalog.ts)
Filesystem limits
1 MiB per file read, 1,000 entries per directory listing (SECURITY.md)
Approval model
One-shot, HMAC-signed request state bound to method, client, tool and arguments, ten-minute expiry
Linux input backend
X11 with XTest (native/Cargo.toml)
Documentation drift
Architecture guide describes version 7.2 while package.json declares 7.4.0

Read from README.md, package.json, LICENSE, SECURITY.md, docs/ARCHITECTURE.md, src/server.ts, src/tool-catalog.ts, src/authority.ts, src/approval-ledger.ts, src/session.ts, native/Cargo.toml, native/src/lib.rs.

What it can do

  • Simulate mouse and keyboard input

    Input commands → Simulated device events

  • Perform filesystem operations

    File paths/commands → File data or status

  • Control system processes

    Process commands → Process status

  • Access and modify Windows registry

    Registry keys/values → Registry data or status

  • Manage virtual desktops

    Desktop control commands → Desktop state changes

Tags

mcpcomputer-usedesktop-automationrustcross-platformai-agentsaccessibility

Tech Stack

Node.jsTypeScript

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.