kde-desktop-mcp
Provides screenshot-free control of a Hyprland session: reads application UI elements through AT-SPI (apps, tree, find, get_text), performs element actions (act, set_text, focus, click), sends keyboard input via /dev/uinput, moves the cursor with hyprctl dispatch movecursor, types text with wtype (or wl-copy), and focuses/activates windows through hyprctl clients and focuswindow, restricted by a per-app allowlist.
Provides screenshot-free control of a KDE Plasma (Wayland) desktop: reads running applications' UI elements from the AT-SPI accessibility tree (apps, tree, find, get_text), acts on individual elements (act, set_text, focus, click), sends keyboard input through /dev/uinput, writes text via wl-copy/Ctrl+V, and manages windows with KWin scripts, all restricted by a per-app allowlist.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kde-desktop-mcpclick the Save button in Kate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kde-desktop-mcp
KDE Plasma (Wayland), Hyprland ve Windows için ekran görüntüsü almadan çalışan bir masaüstü kontrol MCP sunucusu. Claude Code gibi MCP istemcilerine uygulamaların içini erişilebilirlik ağacından okuma ve öğelere doğrudan işlem yapma yeteneği verir.
A screenshot-free desktop control MCP server for KDE Plasma (Wayland), Hyprland and Windows, built on the platform accessibility APIs, with a per-app allowlist.
KDE Plasma gerçek masaüstünde doğrulanmıştır. Hyprland ve Windows desteği yenidir ve şimdilik yalnızca birim testleriyle doğrulanmıştır. Sonuçları
tools/smoke_test.pyile paylaşın.
Nasıl çalışır
Claude ekrana bakmak yerine pencerelerdeki öğeleri [55] button "Kaydet" gibi
bir liste olarak okur ve öğelere numarasıyla doğrudan işlem yapar.
Katman | KDE Plasma (Wayland) | Hyprland | Windows |
Okuma | AT-SPI (D-Bus) | AT-SPI (D-Bus) | UI Automation ( |
Öğe işlemleri | AT-SPI eylemleri, EditableText | AT-SPI eylemleri, EditableText | Invoke, Toggle, ExpandCollapse, SelectionItem, Value desenleri |
Klavye |
|
| Win32 |
Fare | Mutlak konumlu uinput |
|
|
Metin yazma |
|
|
|
Pencere | KWin betikleri ( |
|
|
Ekran görüntüsü (yedek) |
|
| Pillow |
Kod ortak bir araç katmanı (server.py) ve platform modüllerinden oluşur:
backends/linux_common.py (AT-SPI ve klavye, iki Linux masaüstü için ortak),
backends/linux_kde.py, backends/linux_hyprland.py ve backends/windows.py.
İzin listesi, öğe numaraları ve araçlar ortaktır; Claude her platformda aynı
araçları görür.
Masaüstü otomatik seçilir: Windows'ta Windows modülü, Linux'ta
HYPRLAND_INSTANCE_SIGNATURE tanımlıysa Hyprland, değilse KDE. Elle seçmek
için DESKTOP_MCP_BACKEND ortam değişkenine kde, hyprland ya da windows
verin.
Hyprland'de etkin pencere, AT-SPI'deki uygulamayla süreç kimliği (pid) üzerinden eşleştirilir; böylece araç takımının odak bayrağına güvenmek gerekmez.
focus önce erişilebilirlik altyapısından odak ister. Uygulama bunu reddederse
(Qt'de sık görülür) öğenin ortasına gerçek bir tıklama yapar.
Related MCP server: desktop-touch-mcp
Araçlar
apps,tree,find,get_text: okuma ve aramaact,set_text,focus,click: öğeye işlemkey,type_text: klavyeactivate_window: pencereyi öne getirmemouse,screenshot: yalnızca yedek
İzin listesi
Her çağrıda yeniden okunur; ilk çalıştırmada varsayılan liste oluşturulur.
KDE ve Hyprland:
~/.config/desktop-mcp/allow.txt, satır başına AT-SPI uygulama adı (kate,firefox…). Hyprland'de erişilebilirliği olmayan uygulamalar pencere sınıfıyla (xtermgibi) eşleşir.Windows:
%APPDATA%\desktop-mcp\allow.txt, satır başına.exeolmadan program adı (notepad,firefox,chrome…)
Kurallar:
Listede olmayan uygulamaların öğeleri okunamaz ve onlara işlem yapılamaz.
Klavye ve fare girdisi yalnızca öndeki pencere listedeki bir uygulamaya aitse gönderilir.
activate_windowyalnızca listedeki uygulamaların pencerelerini öne getirir.
Doğru adları görmek için apps aracını kullanın.
Kurulum: KDE Plasma (Wayland)
Gereksinimler:
KDE Plasma 6, Wayland oturumu
Sistem paketleri (Arch):
at-spi2-core,python-gobject,qt6-tools,libkscreen,wl-clipboard,spectacle/dev/uinputüzerinde kullanıcı yazma izni (getfacl /dev/uinput)Python 3.12+ ve uv
git clone https://github.com/ahmetadakli/kde-desktop-mcp.git
cd kde-desktop-mcp
uv venv --python /usr/bin/python3 --system-site-packages .venv
uv pip install --python .venv/bin/python -r pyproject.toml
claude mcp add --scope user desktop -- "$PWD/.venv/bin/python" "$PWD/server.py"--system-site-packages gereklidir: PyGObject ve AT-SPI PyPI'dan değil,
sistem paketlerinden gelir.
Kurulum: Hyprland
Gereksinimler:
Hyprland oturumu (
hyprctlvemovecursordispatcher'ı)Sistem paketleri (Arch):
at-spi2-core,python-gobject,wl-clipboard; önerilen:wtype(panoya dokunmadan yazma),grim(yedek ekran görüntüsü)Oturumda AT-SPI veri yolunun çalışması. Qt uygulamaları için Hyprland yapılandırmasına
env = QT_LINUX_ACCESSIBILITY_ALWAYS_ON,1eklemek gerekebilir./dev/uinputüzerinde kullanıcı yazma izniPython 3.12+ ve uv
Kurulum komutları KDE ile aynıdır. Claude Code'u Hyprland oturumunun içinden
başlatın ki HYPRLAND_INSTANCE_SIGNATURE sunucuya geçsin.
Kurulum: Windows
Gereksinimler: Windows 10 veya 11, Python 3.12+ ve uv. PowerShell'de:
git clone https://github.com/ahmetadakli/kde-desktop-mcp.git
cd kde-desktop-mcp
uv venv .venv
uv pip install --python .venv\Scripts\python.exe -r pyproject.toml
claude mcp add --scope user desktop -- "$PWD\.venv\Scripts\python.exe" "$PWD\server.py"Her iki platformda da yeni bir Claude Code oturumu açıp /mcp ile desktop
sunucusunun bağlı olduğunu kontrol edin.
Test
Birim testleri gerçek masaüstü gerektirmez (Hyprland ve Windows mantığı sahte
hyprctl çıktıları ve sahte UI Automation nesneleriyle denenir):
.venv/bin/python -m unittest discover -s teststools/smoke_test.py gerçek masaüstünde uçtan uca test yapar: düzenleyiciyi
(KDE ve Hyprland'de Kate, Windows'ta Not Defteri) geçici bir dosyayla açar, öğeyi bulur,
odak başka yere kaydıktan sonra geri odaklar, Türkçe karakterli metin yazar,
Ctrl+S ile kaydeder, diskten geri okur ve izin listesinin bilinmeyen bir
uygulamayı engellediğini kontrol eder. Çalışırken klavye ve fareye dokunmayın.
.venv/bin/python tools/smoke_test.py.venv\Scripts\python.exe tools\smoke_test.pyBilinen sınırlar
KDE:
Sunucu erişilebilirlik veri yolunu çalışma zamanında açar. Ondan önce başlamış uygulamaların bir kez yeniden başlatılması gerekir.
Chromium, Chrome ve Electron uygulamaları ağaçlarını yalnızca
--force-renderer-accessibilityile başlatılırlarsa gösterir.type_textpanonun içeriğini değiştirir.
Hyprland:
GTK uygulamalarının istemci tarafı gölgeleri,
clickvefocustıklamalarını birkaç piksel kaydırabilir.wtypeyoksatype_textpanoyu değiştirir.
Windows:
Yönetici olarak çalışan pencerelere, yönetici olmayan bir sunucudan girdi gönderilemez (Windows UIPI kuralı).
Microsoft Store uygulamaları
applicationframehostadı altında görünebilir.Tuş adları ABD klavye düzenindeki konumlara göredir; metin için
type_textkullanın.
İkisi için:
Oyunlar ve canvas tabanlı arayüzler erişilebilirlik ağacında çoğunlukla boş görünür.
Güvenlik
Sunucu sizin kullanıcı yetkilerinizle çalışır. İzin listesi bir güvenlik katmanıdır ama işletim sistemi düzeyinde bir yalıtım değildir. Terminalleri, dosya yöneticisini ve sistem ayarlarını listeye eklemeden önce iki kez düşünün.
Lisans
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
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.
Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceControls a real Linux desktop from any MCP host. Reads accessibility trees, takes screenshots, and drives clicks, scrolls, and keystrokes across GNOME, KDE/KWin, Hyprland, i3, and COSMIC.1,137 npm711MIT
- AlicenseAqualityCmaintenanceAllows AI clients to see and control Windows 10/11 desktops via MCP, with screenshots, UI Automation, Chrome CDP, keyboard/mouse, and terminal using semantic element targeting.30649 npmMIT
- 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