computer-use-linux
Linux desktop control over MCP: accessibility trees, screenshots, clicks and typing on Wayland and X11
Desktop app control over MCP on macOS, Linux and Windows through each system's accessibility APIs
By Qwen Go Local · stdio Developer tools
54 popularity score ★ 304 ↓ 988/wk
Opens the app, which asks before it adds the server.
npm install -g @qwen-code/open-computer-useclaude mcp add open-computer-use -- open-computer-use mcp{
"mcpServers": {
"open-computer-use": {
"command": "open-computer-use",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"open-computer-use": {
"command": "open-computer-use",
"args": [
"mcp"
]
}
}
}{
"servers": {
"open-computer-use": {
"type": "stdio",
"command": "open-computer-use",
"args": [
"mcp"
]
}
}
}[mcp_servers.open-computer-use]
command = "open-computer-use"
args = ["mcp"]gemini mcp add --scope user open-computer-use open-computer-use -- mcp| Set together: screenshots | |
|---|---|
OPEN_COMPUTER_USE_IMAGE_MAX_DIMENSION |
Optional: macOS: long-edge pixel cap for screenshots. |
OPEN_COMPUTER_USE_IMAGE_MAX_BYTES |
Optional: macOS: byte budget for the encoded PNG. |
OPEN_COMPUTER_USE_IMAGE_MIN_SCALE |
Optional: macOS: lowest downsample ratio, between 0 and 1. |
OPEN_COMPUTER_USE_IMAGE_CAPTURE_TIMEOUT |
Optional: macOS: seconds to wait for a screenshot. |
OPEN_COMPUTER_USE_ALLOW_GLOBAL_POINTER_FALLBACKS |
Optional: macOS: set to 1 to let clicks move the real pointer when accessibility cannot handle them. Off when unset. |
open-computer-use is a local stdio MCP server that drives the apps on your own desktop. It reads a running app's window as an accessibility tree plus a screenshot, then acts on it: clicking elements by index or by pixel position, typing, pressing key combinations, scrolling, dragging, setting field values and invoking secondary accessibility actions. The Qwen team maintains it for their Qwen Code agent, but any MCP client can use it.
The npm package (version 0.2.3 is what you get) is a Node launcher that picks a bundled native runtime for your platform: Swift on macOS, Go with PowerShell UI Automation on Windows, and Go calling a Python AT-SPI2 helper on Linux. The same command doubles as a CLI with doctor, call, snapshot and list-apps, and it can register itself with Claude Code, Gemini CLI and opencode.
The published package is a fork of iFurySt/open-codex-computer-use, which we also list. Be aware that the repository's main branch has since been replaced by a different, unreleased 0.28 development snapshot. There the MCP server is a Node REPL built from source that exposes only js and js_reset. None of that is on npm yet, and its README warns of an open macOS crash investigation. This page describes the npm release.
On macOS, a click the accessibility layer cannot handle fails instead of moving the real pointer, unless OPEN_COMPUTER_USE_ALLOW_GLOBAL_POINTER_FALLBACKS is set to 1 (ComputerUseService.swift at v0.2.3). The README never mentions this switch.
| Runtime | Node.js |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
Node.js and npm for the global install. On macOS, run open-computer-use once and grant Accessibility and Screen Recording. On Linux, install python3 with PyGObject (gi) and the Atspi 2.0 bindings from your distribution yourself, because the npm install does not bring them.
Screenshot size tuning (the OPEN_COMPUTER_USE_IMAGE_* settings) applies on macOS only; Windows and Linux return full-size PNGs. Action tools need a get_app_state call for that app first and fail otherwise. On Linux, coordinate clicks and synthetic key input are best-effort fallbacks and not reliable under Wayland; element-based actions work best. The Linux helper reads at most 500 elements and 64 levels of a window's tree. It works only on apps already running; it has no tool to launch apps or run commands.
Suits someone who wants an assistant to operate ordinary desktop apps on their own machine, especially on Windows or Linux, or who uses Qwen Code. It runs locally and needs no account or key, but it acts with the user's full desktop session, so it fits a machine where that is acceptable. The upstream open-codex-computer-use, which we also list, is the project this one was forked from. For web pages alone, a browser automation server is a narrower choice. Anyone following the current README on the main branch will build a different, unreleased server, so install the npm package if you want the tools listed here.
2 only read, 7 change things. A ? marks an optional parameter.
list_appsget_app_stateapp: stringclick changesapp: stringelement_index?: stringx?: numbery?: numberclick_count?: integermouse_button?: enumperform_secondary_action changesapp: stringelement_index: stringaction: stringscroll changesapp: stringelement_index: stringdirection: stringpages?: numberdrag changesapp: stringfrom_x: numberfrom_y: numberto_x: numberto_y: numbertype_text changesapp: stringtext: stringpress_key changesapp: stringkey: stringset_value changesapp: stringelement_index: stringvalue: string