Repository navigation
computer-use-mcp v5.0.1
MCP server for Claude Code (and any MCP client): control desktop apps
through their accessibility tree plus screenshots.
What's new in v5.0.1
v5.0: the settings panel, and a hub that shares the screen out by what
each agent at work needs; with a fix for every Linux version so far (one
call could take a KDE session down). What was tried out as v5.0.0-preview
and v5.0.1-preview; a preview build takes this release
(plan,
guide,
upgrading,
all commits).
Fixes and the hub
- Qt apps crashed when the server read them, KWin and Plasma too. The
server asked each app for all of an element's properties at once
(Properties.GetAll). Qt's accessibility bridge, up to Qt 6.9, reads a
second argument from every such call, and that one has only one: the app
crashes. KWin is a Qt program, so onelist_apps(ordoctor, which
install.shruns) closed every window, and a restarted KWin was crashed
again by the next look. Each property is now asked for on its own, as Qt
expects, and an element is asked for its extents and actions only when it
says it has them (GTK printed warnings for the others). A new live test
in CI reads, clicks and types in a real Qt app; the old code fails it. - The desktop's own processes are never asked anything: the compositor
(KWin, GNOME Shell, Xwayland), Plasma, the session manager, portals,
kded, KWallet, the polkit agent. Their pid comes from the bus, not from
them, and they aren't listed as apps. - An app that quits while answering is left alone for 10 minutes (by
its program, so a restarted copy is too): a call that crashes an app is
never made to it again and again. Its windows are still listed, for
screenshots and the mouse and keyboard. doctorno longer switches the desktop's accessibility on; it says
whether it is on. A server switches it on when it is off (Qt, Firefox and
Chromium show nothing without it) and the last server to end switches it
off again.- The hub shares the screen out by need, among the agents at work.
Every server took a part of the screen as soon as it started, so other
chats that never used the computer split it with the one at work (one
agent working in a third of the screen, its glow around that third), and
the parts were even or a fixed half, third or quarter. Now only agents at
work have a part (one that makes no call forhub.release_after_secs,
120, gives it up until its next call); each gets what its window needs
(a full-size window and two small ones: a half and two quarters; 35% and
65% windows: just that); a window the agent moved, resized, tiled or
maximized itself stays where it put it while the others share the rest;
a window that won't shrink keeps its least size;agentsarea takes a
share such as35%. The parts follow where the windows are, a change of
under 4% of the screen moves nothing, and a window moves only when its
agent looks next.agentslist marks the idle ones. (The hub protocol is
version 2: a server of this version and a hub of an older one don't mix.) install.shandinstall.cmdadd the program aszero-use-computer
when Claude Code keeps the namecomputer-usefor itself ("this name
is reserved"), as the panel's Connect page already did, and say if adding
it failed.--uninstallremoves either name.
If a KDE session crashed: log out and back in (or restart), then update. To
switch accessibility off again: busctl --user set-property org.a11y.Bus /org/a11y/bus org.a11y.Status IsEnabled b false and, on GNOME-based
desktops, gsettings set org.gnome.desktop.interface toolkit-accessibility false.
The settings panel
- One panel for every setting (
computer-use-mcp settings,
Ctrl+Alt+J, ordecide setup="open"): 187 settings in 22 groups, each with
its help, its default and a reset, search, "changed from default", light,
dark and automatic themes in Material Design 3 style with an accent colour.
A test fails when a setting has no entry in the panel. Its address is the
same every time (panel.port, a token in a file only you can read); it
listens only while it is open. It sends its schema once and only the
values that differ from the defaults after that (45 KB a request to 0.2 KB). - The agent never uses it. A window whose title says "Zero panel
[private]" is refused by every tool. Settings that limit the agent or the
updates ask you to confirm, in the page and in the server; secrets are
written but never sent back. - Previews: how the pointer glides (from the program's own path maker),
how the overlay's border, label and colours fit, what a picture costs in
tokens. - Profiles (Low tokens, Balanced, Best quality, Showcase, and your own),
the tool list with what each tool costs, the apps report, the
audit log, the settings file as text (checked as a whole, secrets
covered) and import and export as TOML. - Update controls: look every 5 minutes or more (
check_every_mins) or
never, stable or pre-release channel, pin a version, skip a version. A look
asks GitHub only "has it changed?" (the tag is kept once a look is over);
GitHub's "slow down" is waited out for an hour. The program an update
replaces is kept, and Go back /update --rollbackputs it in place.
The panel shows when it last looked, what waits and its notes. - One button to add it to the agents you use: the Connect page and
computer-use-mcp installfor Claude Code, Claude Desktop, Codex, Cursor
and VS Code. Only its own entry is written, the rest of each file stays in
its own order with its comments, a.bakcopy is kept, a file with
mistakes is left alone, and the program is kept at
~/.computer-use/binso it stays where the agents look. Newer Claude Code
keeps the namecomputer-use; the program is then added as
zero-use-computer. - A shortcut that opens the panel: on the desktop and with the system's
apps (a.desktopfile on Linux, a small app on a Mac, a.lnkon
Windows), made, made again or taken away from the panel's Desktop shortcut
page or withcomputer-use-mcp shortcut. It starts
computer-use-mcp settings, which serves the panel on its own port and
opens it in the browser, or shows the one already open. Only shortcuts the
program made are ever removed.settingsnow serves the panel even when no
browser can be opened, and prints its address. - A guide inside the panel: nine short pages.
- More to turn: the pointer's
trail,lean_strengthandbreathe
(and how strong each is), and the real mouse'smouse_speed,
mouse_overshootandmouse_jitter. The real mouse travels only the last
stretch of a reach, somouse_overshoot(0 by default, as before) decides
how often a long reach comes in a touch past its target. - A reset leaves no empty section in the settings file.
Install
Windows: download computer-use-mcp-windows-x64.zip, extract it to a
permanent folder (for example C:\Tools\computer-use-mcp), then double-click
install.cmd (or run claude mcp add --scope user computer-use -- C:\Tools\computer-use-mcp\computer-use-mcp.exe serve).
Check with claude mcp list.
As a plugin (Customize ▸ Plugins ▸ Upload local plugin): upload the full
computer-use-mcp-<os>.zip. If "Upload failed" appears and a computer-use plugin is
already installed, remove the old one first, then upload again.
Only if the full zip is refused for containing a program, use the small
computer-use-plugin-<os>.zip (about 50 KB, no program inside on purpose): first run
install.cmd -NoRegister (Windows) / ./install.sh --no-register from the full zip,
which copies the program to ~/.computer-use/bin; then upload the plugin zip.
macOS / Linux: download your platform's zip, extract it, run ./install.sh.
macOS needs Accessibility and Screen Recording permission for the app that runs Claude Code.
Every zip contains the binary, the installers, docs/CONNECT.md (Claude Code, Claude Desktop,
Codex, Cursor, VS Code, HTTP) and ready-to-copy configs in examples/.
The binaries are not code-signed, so Windows SmartScreen may ask you to confirm.
Full Changelog: v4.0.1...v5.0.1