
Computer Use Linux MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude and other agents see and control a Linux desktop: take screenshots, read app controls, move windows, click and type.
Computer Use Linux is a community server that gives an agent hands and eyes on your real Linux desktop. It reads app controls through the accessibility service, takes screenshots, manages windows and sends clicks and keystrokes. It works on GNOME, KDE Plasma, Hyprland, niri, COSMIC, i3, labwc and X11.
It runs on your machine and acts as you in whatever app it targets. A built-in doctor check tells you what your desktop still needs, and an on-screen overlay shows when the agent is acting.
Good for
- Linux users who want an agent to operate desktop apps that have no API
- Developers testing GTK, Qt and browser apps through the accessibility tree
- People on Wayland (GNOME, KDE, Hyprland, niri, COSMIC) or X11 who need computer use there
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Computer Use Linux MCP
Claude Code
- 1
Copy this prompt.
Add the Computer Use Linux MCP server to Claude Code. Run this command: claude plugin marketplace add agent-sh/computer-use-linux && claude plugin install computer-use-linux@computer-use-linux Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Linux desktop.
Linux only. Run computer-use-linux doctor (or the doctor tool) first to see what your desktop needs, and computer-use-linux setup to turn on accessibility. The server is started with the mcp subcommand. Prebuilt binaries are downloaded on install and need glibc 2.28 or newer.
From the project README. Source.
Tools
Takes a screenshot and reads the on-screen controls of an app
Returns a screenshot plus a compact list of the buttons, fields and text the app exposes, each with a number the other tools can use. Large lists are saved to a private file and can be paged through.
Try: “Look at Firefox and tell me what is on the screen.”
Files ·
get_app_stateCaptures the whole screen or one window
Returns a size-limited PNG or JPEG of the desktop or a chosen window. For a window, it raises that window first.
Try: “Take a screenshot of my terminal window.”
Read ·
screenshotLists open windows with titles, apps and positions
Returns each window's ID, title, app, process, focus state and size. For terminals it adds the running command.
Try: “List my open windows.”
Read ·
list_windowsShows which window has keyboard focus
Returns the window that currently receives your typing.
Try: “Which window is focused right now?”
Read ·
focused_windowLists running desktop apps
Returns the desktop apps the accessibility service can see.
Try: “Which apps are running on my desktop?”
Read ·
list_appsPages through a long list of on-screen controls
Returns the next part of the latest control list when it was too large to send in one reply.
Try: “Show me the next page of the app tree.”
Read ·
get_tree_pageClicks a control or a point on screen
Clicks an element by its number, by role and name, or by coordinates. It supports left, right and middle clicks and double clicks.
Try: “Click the Save button in the open dialog.”
Write ·
clickTypes text into the app or terminal in focus
Enters literal text, optionally in a chosen window or terminal. It can warn when keyboard layout may change what was typed.
Try: “Type "git status" into the terminal running pytest.”
Write ·
type_textPresses a key or a shortcut like Ctrl+L
Sends one key or a chord to the focused window, or to a window it focuses first.
Try: “Press Ctrl+S in the editor.”
Write ·
press_keyDrags from one screen point to another
Presses at the start coordinates and releases at the end coordinates.
Try: “Drag the file icon onto the trash.”
Write ·
dragScrolls a page, element or point
Scrolls vertically or horizontally by pages on an element, window or coordinate.
Try: “Scroll down two pages in the browser.”
Write ·
scrollTriggers a control's built-in action
Runs an action the app exposes for an element, such as Press, Toggle or Activate. It uses the main action when you name none.
Try: “Toggle the dark mode switch in Settings.”
Write ·
perform_actionSets the value of a text box, slider or spinner
Writes straight into a settable field and reads it back to check. It reports a mismatch instead of retrying.
Try: “Set the volume slider to 40.”
Write ·
set_valueBrings a window to the front
Focuses a window chosen by ID, process, app, class, title or terminal details.
Try: “Switch to the Slack window.”
Write ·
activate_windowMoves a window
Repositions a window in desktop coordinates. It works with the GNOME extension and on X11.
Try: “Move the terminal to the top left.”
Write ·
move_windowResizes a window
Changes a window's size in desktop coordinates, on GNOME with the extension and on X11.
Try: “Make the browser window 1200 by 800.”
Write ·
resize_windowChecks whether your desktop is ready for control
Returns a JSON report on your session, portals, accessibility, windows and input, with blockers and a next step.
Try: “Run the doctor and tell me what is missing.”
Read ·
doctorTurns on the GNOME accessibility setting
Enables and checks the GNOME toolkit accessibility option, so apps expose their controls.
Try: “Enable accessibility so you can read app windows.”
Write ·
setup_accessibilityInstalls the GNOME window-control extension
Installs and enables the bundled GNOME Shell extension when the system locks down window listing.
Try: “Set up window targeting for GNOME.”
Write ·
setup_window_targeting
Read from the source code
Permissions
high risk · 9 things to watch
High risk
The agent can operate your real desktop, so a wrong click or keystroke can send, submit or change things in any open app. Run it with approval prompts on, close private windows first, and leave the shell tool off.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can click and type in any app as you
The click, drag, press_key, type_text, perform_action and set_value tools are marked destructive in the README. They can submit forms, send messages or run terminal commands, so watch what the agent does. github.com
Screenshots can show private windows
get_app_state and screenshot return what is on your screen and the text of app controls. Close anything private first. The README says screenshot consent depends on the desktop portal. github.com
Opt-in run_shell runs commands as you
Setting COMPUTER_USE_LINUX_ENABLE_SHELL=1 adds a shell tool with your full file and network access. The README says not to enable it for untrusted or unattended hosts. It is off by default. github.com
Input goes through a per-user ydotool service
On some desktops, input uses ydotoold with access to /dev/uinput. Any process that can reach its socket can type and click, so keep the default private socket and do not run it as root. github.com
Install downloads prebuilt binaries
The npm package runs a post-install script that downloads binaries from the project's GitHub release and checks a SHA-256 file. The Claude Code and Codex plugins keep private cached binaries. registry.npmjs.org
Setup tools change desktop settings
setup_accessibility turns on GNOME accessibility. setup_window_targeting installs and enables a GNOME Shell extension, and you must log out and in once. github.com
Large screen trees are saved to a file
When the control list is over 32,000 bytes, get_app_state saves the full list to a private file that can hold on-screen text. It is removed at the next snapshot or when the server exits. github.com
The overlay shows what the agent types
The on-screen indicator shows the last 64 characters typed unless the field may be a password. Set COMPUTER_USE_LINUX_INDICATOR_HIDE_TEXT=1 to mask it. github.com
Opt-in complete_interaction sends a desktop notification
Setting COMPUTER_USE_LINUX_NOTIFY_ON_COMPLETE=1 adds complete_interaction, a no-argument tool that raises a desktop notification with notify-send. It is off by default and needs notify-send and a notification service. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch is documented. Read-only tools are doctor, list_apps, list_windows, focused_window, get_app_state and get_tree_page, but click, type_text, press_key and others are on by default. |
|---|---|
| Talks to | None documented: the README says it opens no network listener, makes no outbound connections and ships no telemetry |
| Sign-in and keys | No account or key. Optional setting COMPUTER_USE_LINUX_PERSIST_REMOTE_DESKTOP=1 saves a desktop remote-control token in your user state folder. |
Questions
Is it official?
No. It is a community project by agent-sh and is not made by any desktop vendor. It was split out of the Linux build of Codex Desktop, which bundles it.
Which desktops does it support?
GNOME, KDE Plasma, Hyprland, niri, COSMIC, i3, labwc and X11. It also works on Wayland.
Does it work on macOS or Windows?
No. It targets Linux desktops only.
Which AI apps does it work with?
Any app that can start a local stdio server. The README documents Claude Code, Claude Desktop, Codex CLI, Pi and Hermes Agent. It does not work with ChatGPT or other hosted-only clients.
Can it run shell commands?
Only if you turn it on. A run_shell tool exists only when COMPUTER_USE_LINUX_ENABLE_SHELL=1 is set, and it is off by default; it runs /bin/sh -c with your user permissions. A second opt-in tool, complete_interaction, appears with COMPUTER_USE_LINUX_NOTIFY_ON_COMPLETE=1 and only sends a desktop notification. Typing into a terminal still works without either.
Is there a read-only mode?
No. Six tools only observe, but the click, type and key tools are on by default and there is no switch to remove them.
Does it send my screen anywhere?
The README says it makes no outbound connections and ships no telemetry. Screenshots go to the AI app you connect, which then handles them under its own terms.
Do I need a key or account?
No. It needs no API key. It needs a Linux desktop session with the accessibility bridge on, which the doctor check and setup tools help with.
What is the difference from agent-workspace-linux?
The README points to agent-workspace-linux for an isolated desktop where the agent never touches your real mouse, keyboard or windows. This server controls your real desktop.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
@agent-sh/computer-use-linux- Registry
- npm
- Transport
- stdio
- Version
- 0.7.34
- License
- MIT
- Last commit
- Oct 31, 2026
- Open issues
- 2
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- computer-use-linux README (v0.7.34) · github.com
- @agent-sh/computer-use-linux npm package · registry.npmjs.org