Provides automation capabilities for Electron applications through accessibility interfaces, enabling semantic element targeting and control.
Supports automation of GNOME desktop applications through accessibility features, allowing interaction with UI elements when accessibility is enabled.
Enables automation and control of GTK-based applications through accessibility interfaces, supporting element discovery and interaction.
Supports automation of KDE desktop applications through accessibility features, allowing interaction with UI elements when accessibility is enabled.
Provides semantic element targeting and automation for native Linux desktop applications using AT-SPI2, enabling discovery, clicking, typing, and keyboard control across GTK, Qt, and Electron applications.
Supports input simulation and automation on Wayland display server environments, including element discovery and interaction capabilities.
Linux Desktop MCP Server
Built with - This entire MCP server was developed using Claude Code, Anthropic's AI-powered coding assistant. We're proud to showcase what's possible with AI-assisted development!
An MCP server that provides Chrome-extension-level semantic element targeting for native Linux desktop applications using AT-SPI2 (Assistive Technology Service Provider Interface).
Features
Semantic Element References: Just like Chrome extension's
ref_1,ref_2systemRole Detection: Identifies buttons, text fields, links, menus, etc.
State Detection: Tracks focused, enabled, checked, editable states
Natural Language Search: Find elements by description ("save button", "search field")
Cross-Platform Input: Works on X11, Wayland, and XWayland
GTK/Qt/Electron Support: Works with any application that exposes accessibility
Installation
System Dependencies
Python Package
Enable Accessibility
Ensure accessibility is enabled in your desktop environment:
GNOME: Settings → Accessibility → Enable accessibility features
KDE: System Settings → Accessibility
Most modern desktops have this enabled by default
Configuration
Add to ~/.claude/settings.json:
Or if installed from source:
Available Tools
desktop_snapshot
Capture the accessibility tree with semantic element references.
desktop_find
Find elements by natural language query.
desktop_click
Click an element by reference or coordinates.
desktop_type
Type text into an element.
desktop_key
Press keyboard keys/shortcuts.
desktop_capabilities
Check available automation capabilities.
Example Usage
Platform Support
Feature | X11 | Wayland | XWayland |
AT-SPI discovery | Full | Full | Full |
Click by ref | Full | Full | Full |
Type text | Full | Full | Full |
ydotool input | Full | Full | Full |
xdotool input | Full | No | Yes |
Troubleshooting
"AT-SPI2 not available"
"AT-SPI2 registry not running"
Ensure accessibility is enabled in your desktop settings. You may need to log out and back in.
"No input backend available" (Wayland)
Elements not showing up
Some applications may not expose accessibility information. Modern GTK3/4, Qt5/6, and Electron apps generally work well.
Architecture
Contributing
This project was created with Claude Code and we warmly welcome contributions! Whether you want to:
Report bugs or request features
Submit pull requests
Fork and build your own version
Improve documentation
We're very open to help and collaboration. See CONTRIBUTING.md for guidelines.
License
MIT - See LICENSE for details.