io.github.dot-ASH/umbriel-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
umbriel-mcp
mcp-name: io.github.dot-ASH/umbriel-mcp
An MCP server for the Umbriel Wayland compositor.
Exposes Umbriel to MCP clients: list and control windows, workspaces and outputs, drive the pointer and keyboard, capture the screen with optional OCR, and read or write the clipboard.
Compositor state and actions go straight to Umbriel's IPC socket rather than shelling out to the CLI, so inspection costs one round trip and no process spawn. Pointer, keyboard, and clipboard use Wayland protocols directly. Only screen capture and OCR call external programs.
Read this before installing
Full access means full control of your desktop. In the default full profile an agent
connected to this server can launch arbitrary commands, type and click anywhere, read and
overwrite your clipboard, and see your screen. Anything on screen or in the clipboard is
visible to the model. Use the profiles to grant less.
This is a best-effort personal project that tracks an actively evolving compositor. Expect 0.x behavior changes, and expect it to break when Umbriel changes. There is no support promise beyond what I can do in my spare time.
Related MCP server: claude-workman
Compatibility
Support follows Umbriel's own availability: if Umbriel runs on your system, this server should. The server itself is a static binary for x86_64 and aarch64 Linux with no runtime libraries, so the distribution only matters for installing Umbriel and the two screen helpers.
Distribution | Umbriel | umbriel-mcp |
Arch Linux | AUR |
|
Ubuntu 26.04+ | Noctalia APT repository ( | release binary |
Debian Trixie / Sid | Noctalia APT repository ( | release binary |
Fedora | Terra ( | release binary |
anything else | release binary or |
Older Ubuntu releases are not supported because Umbriel is not packaged for them.
Warning for Arch users: the AUR package named umbriel is a placeholder and is not
the compositor. Do not install it; the compositor is umbriel-git.
Install
Each path below installs Umbriel, the screen helpers, and umbriel-mcp, then checks the
result. Skip the Umbriel step if you already run it. The Umbriel commands are copied from
its installation page; check there if
they have changed.
Arch Linux
yay -S umbriel-git # the compositor, if needed
sudo pacman -S grim tesseract tesseract-data-eng # screen capture and OCRThen install the server as a pacman package built from this repository's recipe. It downloads the prebuilt release binary and checks its checksum, so nothing is compiled:
git clone https://github.com/dot-ASH/umbriel-mcp
cd umbriel-mcp/packaging/aur-bin
makepkg -si
umbriel-mcp doctorRemove it later with sudo pacman -R umbriel-mcp-bin. An AUR package of the same name is
planned; this section will switch to yay -S umbriel-mcp-bin once it is published.
Ubuntu 26.04 and newer
Install Umbriel from the Noctalia APT repository (amd64 and arm64 only), if needed:
wget https://pkg.noctalia.dev/deb/nickh-archive-keyring.deb sudo dpkg -i nickh-archive-keyring.deb sudo wget -O /etc/apt/sources.list.d/noctalia-resolute.sources \ https://pkg.noctalia.dev/deb/noctalia-resolute.sources sudo apt update sudo apt install umbrielInstall the screen helpers:
sudo apt install grim tesseract-ocr tesseract-ocr-engInstall the server from the latest GitHub release:
arch=$(uname -m) # x86_64 or aarch64 tag=v0.2.1 base="https://github.com/dot-ASH/umbriel-mcp/releases/download/$tag" curl -LO "$base/umbriel-mcp-$tag-$arch-linux.tar.gz" curl -LO "$base/SHA256SUMS" sha256sum --check --ignore-missing SHA256SUMS tar -xzf "umbriel-mcp-$tag-$arch-linux.tar.gz" sudo install -Dm755 "umbriel-mcp-$tag-$arch-linux/umbriel-mcp" /usr/local/bin/umbriel-mcp/usr/local/binis on every user'sPATH, so harnesses started from the Umbriel session find the binary without extra setup. To install withoutsudo, use~/.local/bin/umbriel-mcpinstead; Ubuntu adds~/.local/bintoPATHat login only if the directory already existed, so log out and back in after creating it.Check the setup from a terminal inside the Umbriel session:
umbriel-mcp doctor
Debian Trixie and Sid
Same as Ubuntu, with the Debian repository source and, on Trixie, the backports suite:
wget https://pkg.noctalia.dev/deb/nickh-archive-keyring.deb
sudo dpkg -i nickh-archive-keyring.deb
sudo wget -O /etc/apt/sources.list.d/noctalia-trixie.sources \
https://pkg.noctalia.dev/deb/noctalia-trixie.sources # Sid: noctalia-unstable.sources
sudo apt update
sudo apt install -t trixie-backports umbriel # Sid: sudo apt install umbriel
sudo apt install grim tesseract-ocr tesseract-ocr-engThen install the server from the release binary as in step 3 above and run
umbriel-mcp doctor.
Fedora
sudo dnf install umbriel-nightly # from the Terra repository
sudo dnf install grim tesseract tesseract-langpack-engThen install the server from the release binary as in Ubuntu step 3 and run
umbriel-mcp doctor.
Other distributions
Install Umbriel following its installation page,
then grim, tesseract, and Tesseract's English data (eng.traineddata) from your package
manager. Install the server from the release binary as in Ubuntu step 3, or build it with
Cargo (needs Rust 1.89 or newer, for example from rustup):
cargo install umbriel-mcp --lockedumbriel-mcp doctor names the exact packages to install on Arch, Debian/Ubuntu, and Fedora,
and gives generic guidance elsewhere.
Requirements
Pointer, keyboard, and clipboard need nothing beyond a running Umbriel session. These external programs are needed only for the screen tools:
Tool | Used for | Arch | Debian/Ubuntu | Fedora |
|
|
|
|
|
|
|
|
|
|
English OCR data | same |
|
|
|
The tools are always listed; a call that needs a missing program fails with an error naming the package to install.
The socket is found through UMBRIEL_SOCKET, falling back to
$XDG_RUNTIME_DIR/umbriel-$WAYLAND_DISPLAY.sock.
Register with your harness
umbriel-mcp install pi # also: claude-code, vscode
umbriel-mcp install opencode # also: cursor, zed (prints config to paste)
umbriel-mcp install claude-code --profile no-execFor pi, claude-code, and vscode this runs the harness's own CLI (pi mcp add,
claude mcp add, code --add-mcp). For opencode, cursor, and zed it prints the
configuration to paste; it never reads or edits your config files. A profile is added to
the registration only if you pass --profile, so the default stays full. The pi
registration uses direct exposure and a description, so the model sees the tools in its tool
list and answers "what's on workspace 4?" with one list_windows call instead of searching
for tools or trying hyprctl. If you registered by hand earlier, run umbriel-mcp install pi
again to switch to direct exposure. The Zed snippet keeps "args": [] because Zed rejects its whole settings file
if it is missing.
Any other MCP client can use the plain stdio form:
{
"mcpServers": {
"umbriel": { "command": "umbriel-mcp", "args": [] }
}
}Checking your setup
umbriel-mcp doctor verifies that the Umbriel socket is reachable, that the compositor
offers the virtual-pointer and virtual-keyboard protocols, and that grim, tesseract, and
Tesseract's English data are installed. Each problem is listed on its own with the command to
fix it on Arch, Debian/Ubuntu, and Fedora, or generic advice on other distributions. It exits
with status 0 only when everything is ready.
Profiles
--profile limits what the server will do. Every tool stays visible in every profile; a
call the profile does not allow returns an error that names the profile.
Profile | Allows |
| everything, including |
| everything except starting programs: |
| queries, screenshots, OCR, and reading the clipboard |
no-exec stops the server from starting programs; it is not a sandbox. An agent that can
type into a focused terminal can still run commands through the input tools.
Tools
Inspection — list_windows, list_workspaces, list_outputs, get_active_window,
list_layers
Window and workspace control — switch_workspace, focus_window, close_window,
kill_window, move_window_to_workspace, toggle_fullscreen, toggle_floating,
resize_window, set_workspace_layout, toggle_overview, launch_app, run_action
Input — mouse_move, mouse_click, mouse_scroll, mouse_drag, type_text,
key_press
About Umbriel itself — umbriel_info (version, keyboard layouts, submap, color and
tearing state), list_actions (every action run_action and keybinds accept, filterable),
config_options (exact config keys with types, defaults and allowed values, from Umbriel's own
schema), read_config (your config or one section such as keybinds, plus validation). These
read from the installed umbriel command and your config, so they match the version you run.
The schema has no prose descriptions; explanations live in the
Umbriel documentation.
Changing keybinds — set_keybind and remove_keybind edit the [keybinds] table of your
~/.config/umbriel/config.toml. Each edit is checked with umbriel config validate before the
file is replaced, so a rejected action or chord never goes live. The previous config is saved
next to it as config.toml.bak-<time>, only the changed line differs (comments and formatting
are kept), a symlinked config stays a symlink, and a chord bound in an [include] file is left
alone. Umbriel applies the change immediately. read-only refuses edits, and no-exec refuses
any binding to a spawn: action, because a keybind that starts a program would let an agent run
commands later through you. Backups are not cleaned up automatically.
Screen and clipboard — screenshot, screenshot_with_ocr, find_text_on_screen,
click_text, clipboard_read, clipboard_write. With a window_id, screenshot and
screenshot_with_ocr capture that window even on a hidden workspace, without switching to it
(needs grim 1.5 or newer; older grim can only capture windows that are on screen).
key_press takes chords such as ctrl+shift+Tab, super+q, F5 or alt+Left; an uppercase
letter (ctrl+A) implies Shift. type_text accepts any Unicode text, with \n typed as Return
and \t as Tab.
run_action accepts any action from umbriel msg --help, so the compositor's full verb
set stays reachable even where there is no dedicated tool.
Notes
Workspaces in Umbriel belong to an output rather than to a global pool. Selectors take a
position or a name and accept an optional /output suffix, which the workspace and
output arguments build for you.
Screenshots are downscaled to 1024px wide by default and returned as JPEG alongside a
coordinate-mapping note, so screen coordinates can be recovered from image coordinates.
OCR is different: it always runs on the full-resolution capture, because recognising text in
the downscaled preview finds nothing. find_text_on_screen and click_text therefore report
absolute screen coordinates directly, and match multi-word phrases such as Open File.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Securely control computers you explicitly pair through files, terminals, processes, screenshots, desktop UI/input, clipboard, browser automation, diagnostics, and document tools.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Securely control paired computers with ReMCP.
Hosted MCP memory and agent control plane for durable conversations, jobs, and operations.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients to control macOS via accessibility and screen recording, providing tools to list apps, observe UI, click, type, press keys, and scroll.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to control a Linux/X11 desktop like a human: see the screen, move the mouse, click UI elements via the accessibility tree, type text, and manage windows.MIT
- AlicenseAqualityCmaintenanceEnables LLMs to capture desktop screenshots and control the mouse and keyboard on Linux, including Wayland, through MCP.11MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to inspect and control an Omarchy/Hyprland desktop by taking screenshots, focusing windows, moving/clicking the mouse, scrolling, typing text, and sending keyboard shortcuts.MIT