PlugWiki
Computer Use Linux logo

Computer Use Linux MCP Server: Setup for Claude, Cursor and Other Apps

CommunityLocal
Getnpm@agent-sh/computer-use-linuxagent-sh/computer-use-linux

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.

Install Computer Use Linux MCP

Claude Code

  1. 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. 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_state

  • Captures 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 · screenshot

  • Lists 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_windows

  • Shows which window has keyboard focus

    Returns the window that currently receives your typing.

    Try: “Which window is focused right now?”

    Read · focused_window

  • Lists running desktop apps

    Returns the desktop apps the accessibility service can see.

    Try: “Which apps are running on my desktop?”

    Read · list_apps

  • Pages 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_page

  • Clicks 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 · click

  • Types 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_text

  • Presses 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_key

  • Drags 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 · drag

  • Scrolls 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 · scroll

  • Triggers 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_action

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-onlyNo 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 toNone documented: the README says it opens no network listener, makes no outbound connections and ships no telemetry
Sign-in and keysNo 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

GitHubnpmChangelogIssues

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 2
  1. computer-use-linux README (v0.7.34) · github.com
  2. @agent-sh/computer-use-linux npm package · registry.npmjs.org

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.