loading…
Search for a command to run...
loading…
Give Claude Desktop full desktop control on Linux/X11: screenshot, mouse, keyboard, windows, clipboard, app launch. Zero-dependency MCP extension, MIT-licensed.
Give Claude Desktop full desktop control on Linux/X11: screenshot, mouse, keyboard, windows, clipboard, app launch. Zero-dependency MCP extension, MIT-licensed.
A Claude Desktop extension that gives Claude full desktop control on Linux/X11: screenshot, mouse, keyboard, window management, clipboard, and app launch.
Fills the same niche as Windows-MCP but for Linux. Built to pair with claude-terminal-mcp — Terminal handles the shell; this handles the GUI.
Installing this extension gives Claude full control over your desktop. Anything you can do with a keyboard and mouse, Claude can do through this tool:
Treat installing this like giving someone physical access to your keyboard and mouse while they sit at your desk. Don't install it on machines with sensitive data you wouldn't want Claude to interact with, on shared systems, or if you're going to leave a chat unattended.
The denylist-style protection used by claude-terminal-mcp doesn't really apply here — a mouse click is a mouse click; you can't pattern-match intent. The safety rails in v0.1 are: (1) honest framing in this README, (2) destructiveHint: true annotations on every tool that changes system state, so Claude's own reasoning layer is aware, (3) the install flow requires explicit Extension Developer mode (red "unverified" warning).
Fourteen tools:
| Tool | Purpose |
|---|---|
screenshot |
Capture full screen (or active window if active_window: true) as PNG. Returns path. |
list_windows |
Enumerate visible windows with id/pid/geometry/title. |
focus_window(title_pattern) |
Bring a window to the foreground. |
move_window(title_pattern, x?, y?, width?, height?) |
Move/resize a window. |
close_window(title_pattern) |
Request a window to close gracefully. |
mouse_move(x, y) |
Move pointer to absolute screen coordinates. |
mouse_click(button?, x?, y?) |
Click left/middle/right; optional coords. |
mouse_drag(x1, y1, x2, y2, button?) |
Drag from → to. |
mouse_scroll(direction, amount?) |
Scroll up/down/left/right by N clicks. |
type_text(text, delay?) |
Type a string into the focused window. |
key_press(combo) |
Press a combo like ctrl+c, alt+Tab, super, Return. |
clipboard_get() |
Read the CLIPBOARD selection as text. |
clipboard_set(text) |
Write a string to the CLIPBOARD. |
launch_app(command) |
Spawn an application detached (e.g. firefox, gnome-terminal, code /path). |
All shell out to small, well-known X11 CLI tools — no npm dependencies.
Display server: X11. Wayland is not supported in v0.1 because Wayland's security model deliberately blocks cross-process input injection. To check which session you're on:
echo $XDG_SESSION_TYPE
If it says wayland, log out and pick "Ubuntu on Xorg" (or your distro's equivalent) at the login screen.
System tools (one-time install):
sudo apt install xdotool wmctrl xclip
gnome-screenshot ships with Ubuntu GNOME; if you're on a different DE, install a screenshot tool:
# One of:
sudo apt install gnome-screenshot # GNOME, works everywhere
sudo apt install scrot # Minimal CLI
sudo apt install maim # Modern replacement for scrot
OCR (optional, for screenshot_text — added in v0.2):
sudo apt install tesseract-ocr tesseract-ocr-eng
# Add tesseract-ocr-<lang> for other languages (fra, deu, nld, …).
If tesseract isn't installed, only screenshot_text is unavailable — the other 14 tools work normally.
Claude Desktop: ≥ 0.10.0 on Linux (bundles a recent Node; no system Node required).
LinuxDesktop.mcpb from the latest release..mcpb file.On first tool call, the server detects missing X11 utilities and returns a clear "install with: sudo apt install …" error — you don't have to read the full README to discover what's missing.
Try asking Claude:
nvtop into it."ydotool + privileged daemon, portal APIs for screenshots). Adding Wayland support is on the roadmap but nontrivial.No data leaves your machine. This extension runs entirely locally:
/tmp/claude-linux-mcp/shots/ so Claude can reference them later in the same conversation. Nothing else is persisted by the extension itself.clipboard_get() reads whatever is currently on your X11 CLIPBOARD selection and passes it back to Claude Desktop in the tool result. Treat this the same way you'd treat pasting into a chat — don't ask for it if sensitive data is on your clipboard./tmp/claude-linux-mcp/ is cleared at every reboot. To clear manually: rm -rf /tmp/claude-linux-mcp.MIT. Use freely, attribution appreciated, no warranty.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"claude-linux-mcp": {
"command": "npx",
"args": []
}
}
}