Show HN: Desktopmcp – MCP server for the Linux desktop Desktopmcp, a new MCP server for the Linux desktop, gives AI models access to the desktop through 144 tools via XDG Desktop Portals, AT-SPI, and D-Bus, enabling visual and semantic interaction with the UI. The open-source tool runs on Wayland compositors and requires user permission for sensitive operations. MCP server for the Linux desktop. It gives AI models access to the Linux desktop. desktopmcp connects AI assistants to the Linux desktop through three system interfaces: XDG Desktop Portals for sandboxed desktop operations, AT-SPI for semantic UI understanding, and D-Bus for low-level system access. It exposes 144 tools over the Model Context Protocol, letting an AI see what's on screen, understand UI structure, move cursor, click buttons, type text, manage files, and interact with desktop services. AI models are blind to the desktop. They can't see a window, read a button label, click a menu item, or control the desktop. desktopmcp solves this by giving AI models two complementary ways to interact with the desktop: Visual : screenshots, screen capture, color picking, mouse and keyboard input Semantic : the full accessibility tree AT-SPI , where every UI element has a name, role, position, and set of actions the AI can invoke directly The semantic path means an AI can call find element role="push button", name="Save" instead of scanning pixels to find where "Save" might be. It can read text content, check which element is focused, traverse the UI tree, and perform actions like "click" on any element -- all without needing a screenshot. Everything goes through XDG Desktop Portals, so the user gets permission dialogs, and a single binary runs on GNOME, KDE, Sway, or any Wayland compositor. 144 tools organized into five groups: | Category | Tools | What they do | |---|---|---| Remote Desktop & Input | 13 | Start sessions, take screenshots, move/click mouse, type text, touch events, scroll | XDG Portals | 35 | Notifications, file dialogs, clipboard, wallpaper, network status, location, email, printing, camera, settings, global shortcuts, secrets, power profile, game mode, and more | Dynamic Launcher | 8 | Install, launch, inspect, and remove .desktop application launchers | AT-SPI Accessibility | 76 | Full accessibility tree: find elements, read text, click buttons, get/set values, table and hyperlink inspection, document metadata, event subscriptions, collection search | D-Bus Bridge | 12 | Call any D-Bus method, read/write properties, introspect services, subscribe to signals | AI model Claude, etc. | | MCP protocol JSON-RPC over stdio or HTTP v desktopmcp Rust, async, single binary | |--- XDG Desktop Portals ashpd -- screenshots, input, files, settings, ... |--- AT-SPI bus zbus -- UI tree, element actions, text, events |--- D-Bus session/system zbus -- arbitrary service access |--- PipeWire pipewire-rs -- screen capture frames v Linux desktop GNOME / KDE / Sway / ... XDG Portals ensure every sensitive operation screen capture, input injection, file access goes through a user-facing permission dialog. The AI cannot act without the user granting consent. - Linux with a Wayland compositor GNOME 40+, KDE Plasma 5.27+, Sway, or similar xdg-desktop-portal and a desktop-specific backend xdg-desktop-portal-gnome , -kde , -wlr - PipeWire for screen capture - AT-SPI2 at-spi2-core , typically pre-installed on any desktop with accessibility support - D-Bus session bus present on all modern Linux desktops Build requirements: - Rust 1.85+ edition 2024 - System libraries: libdbus , libpipewire-0.3 , at-spi2-core , pkg-config - LLVM/Clang for pipewire-sys bindgen Run directly without cloning: nix run github:varbhat/desktopmcp -- --t http or stdio Or clone and build locally. The repository includes a flake.nix that provides all system dependencies automatically: git clone