desktop-mcp
desktop-mcp
Desktop-Sicht und -Steuerung für LLMs auf Linux, einschließlich Wayland – das Modell macht einen Screenshot des gesamten Bildschirms und klickt, tippt und scrollt auf dem, was es sieht. Einfaches MCP über stdio, sodass es in Claude Code, Claude Desktop, Cursor oder jedem anderen MCP-Client funktioniert.
Lesen Sie dies zuerst: Sie brauchen das vielleicht nicht
Anthropic liefert Computer Use nativ aus, und wo das funktioniert, sollten Sie es stattdessen verwenden – es ist besser integriert und wird tatsächlich gepflegt:
macOS und Windows: Claude Desktop hat Computer Use integriert, in Cowork und Claude Code. Es steuert Ihren echten Desktop. (Dokumentation)
Eigene Agenten bauen: Die Claude API hat ein First-Party-
computer-Tool (GA alscomputer_toolset_20260801-Toolset). (Dokumentation)
Die Lücke, die dies füllt, ist Linux. Stand August 2026 ist Computer Use in der Linux-Desktop-App nicht verfügbar, und Desktop-Automatisierung unter Wayland ist wirklich umständlich, wie es X11 nie war:
Der Compositor von COSMIC implementiert kein
wlr-screencopy, daher schlägtgrimkomplett fehl und jedes Screenshot-Tool benötigt einen pro-Compositor-Pfad.Es gibt kein Protokoll, um die Cursorposition abzufragen, und keins, um die Fenster eines anderen Clients aufzulisten.
Eingaben müssen unterhalb des Compositors über
/dev/uinputerfolgen, da das üblicherweise gepackteydotooleinen relativen Zeiger bereitstellt, dessen lange Sprünge durch die Zeigerbeschleunigung verzerrt werden.
Wenn Sie auf macOS oder Windows sind, ist dieses Repo größtenteils redundant. Wenn Sie auf Linux sind – insbesondere Wayland – ist es die funktionierende Option.
Desktop-Automatisierungs-MCP-Server sind keine neue Kategorie; es gibt Tausende von MCP-Servern. Was hier spezifisch ist, ist der Wayland-native absolute-uinput-Eingabepfad, der auf COSMIC pixelgenau gemessen wurde.
Related MCP server: mcp-linux-desktop
Status
Geschrieben, um plattformübergreifend zu sein, aber nur eine Konfiguration wurde tatsächlich getestet. Der Rest sind Codepfade, keine Beweise – behandeln Sie es entsprechend.
Plattform | Screenshot | Eingabe | Getestet |
Linux / Wayland |
|
| Ja — nur COSMIC |
Linux / X11 |
|
| Nein |
macOS |
|
| Nein |
Windows |
|
| Nein |
Was getestet wurde, und wie
End-to-End verifiziert auf:
Pop!_OS 24.04 LTS, Kernel 7.0.11, COSMIC (
cosmic-comp1.0.0), Wayland, einzelnes 2560x1440-Display, Python 3.13.
Ergebnisse:
Prüfung | Methode | Ergebnis |
Screenshot |
| 2560x1440 erfasst, auf 1400x788 verkleinert |
Zeigergenauigkeit | 5 Zielpunkte, über XWayland zurückgelesen | 5/5 exakt, 0px Fehler |
Tasten und Scrollen |
|
|
Ziehen |
| 26 |
Tippen | Sowohl | Text landete in einem fokussierten Editor |
Tastenkombinationen |
| Angewendet |
Klick über MCP | Vollständiger stdio-Roundtrip gegen eine native Wayland-App | Neuer Tab geöffnet |
Ungetestet und wissenswert: Multi-Monitor-Layouts, HiDPI-Skalierung, Nicht-US-Tastaturlayouts auf dem rohen Tastencode-Pfad (wtype behandelt diese korrekt; uinput-Tastencodes gehen von US aus), und jeder Nicht-COSMIC-Compositor.
Berichte von anderen Plattformen sind willkommen – desktop_info gibt alles aus, was zur Diagnose eines Backend-Problems benötigt wird.
Install
git clone <this repo> && cd desktop-mcp
uv venv && uv pip install -e .macOS, Windows und Linux/X11 benötigen außerdem die Eingabeabhängigkeiten:
uv pip install -e ".[gui]"Linux: einmalige Berechtigungseinrichtung
Das Injizieren von Eingaben unter Wayland bedeutet, in /dev/uinput zu schreiben, das standardmäßig root gehört:
bash scripts/setup-linux.sh # needs sudo once
# then log out and back inmacOS: einmalige Berechtigungseinrichtung
Gewähren Sie Bildschirmaufnahme und Bedienungshilfen der App, die den Server startet (Terminal, iTerm, Claude Desktop), in Systemeinstellungen → Datenschutz & Sicherheit.
Verbinden
Claude Code:
claude mcp add desktop -- /absolute/path/to/desktop-mcp/.venv/bin/python -m desktop_mcp.serverClaude Desktop (claude_desktop_config.json) und Cursor (.cursor/mcp.json) verwenden dieselbe Struktur:
{
"mcpServers": {
"desktop": {
"command": "/absolute/path/to/desktop-mcp/.venv/bin/python",
"args": ["-m", "desktop_mcp.server"]
}
}
}Werkzeuge
Werkzeug | Zweck |
| Desktop erfassen |
| Links-/Rechts-/Mittelklick, einfach oder doppelt |
| Zeiger bewegen ohne zu klicken (Hover) |
| Drücken, bewegen, loslassen – Auswahlen, Schieberegler, Fenster verschieben |
| Mausrad scrollen unter einem Punkt |
| In das fokussierte Element tippen |
| Tastenkombinationen wie |
| Wo sich der Zeiger befindet |
| Offene Fenster, wo das Betriebssystem es erlaubt |
| Pause, dann erneut schauen |
| Umgebung, aktive Backends, Sicherheitseinstellungen |
Koordinaten
Screenshots werden vor dem Senden verkleinert (standardmäßig 1400px lange Kante), sodass das Modell in Bild-Pixeln arbeitet; der Server bildet sie bei jedem Aufruf auf Bildschirmpixel zurück. Übergeben Sie genau die Koordinaten, die Sie vom Screenshot ablesen.
Dies ist das Detail, das die meisten selbstgebauten Computer-Use-Tools falsch machen. Wenn Sie es verpassen, landet jeder Klick bei einem konsistenten Bruchteil des Ziels.
Warum /dev/uinput statt ydotool auf Linux
Üblicherweise gepackte ydotool-Builds stellen einen relativen Zeiger bereit, sodass ein Sprung zu (1280, 720) als eine große relative Bewegung geliefert wird – die der Compositor durch die Zeigerbeschleunigung laufen lässt. Der Cursor landet in der Nähe des Ziels statt darauf, und der Fehler wächst mit der Entfernung. Ein absolutes uinput-Gerät umgeht die Beschleunigung: gemessen 5/5 exakt auf einem 2560x1440-Bildschirm. ydotool bleibt ein Fallback, wenn /dev/uinput nicht beschreibbar ist.
Klick-Timing
Compositors verteilen Zeigerbewegungen asynchron, und Toolkits ignorieren einen Tastendruck, der ankommt, bevor sie die Bewegung verarbeitet haben, die den Cursor über das Widget gebracht hat. Auf COSMIC gemessen: Eine Lücke von 30ms zwischen Bewegung und Drücken hebt einen Button zuverlässig hervor, aktiviert ihn aber nie – der Hover-Zustand ist der Beweis, dass die Koordinaten stimmen, was diesen Fehler leicht als Zielproblem fehlinterpretieren lässt. 250ms aktiviert ihn. Ein Druck muss auch gehalten werden (~90ms), um als echter Klick statt als verirrtes Ereignis zu registrieren.
Beide Verzögerungen sind einstellbar; senken Sie sie nur, wenn Ihr Desktop das toleriert.
Sicherheit
Dies gibt einem Modell die gleiche Reichweite über die Maschine wie der Person, die davor sitzt. Es kann alles auf dem Bildschirm lesen – geöffnete Passwortmanager, private Nachrichten, Tokens – und auf alles klicken, einschließlich destruktiver Schaltflächen. Behandeln Sie eine Sitzung so, als hätten Sie jemandem Ihre Tastatur übergeben.
Umgebungsvariablen:
Variable | Standard | Wirkung |
| aus | Screenshots erlaubt, alle Eingaben verweigert |
|
| Maximale Eingabeaktionen pro Minute |
| — | Zusätzliche, durch Kommas getrennte Tastenkombinationen, die abgelehnt werden |
| — | Jede Aktion an diese Datei anhängen |
|
| Lange Kante des Screenshots in Pixeln |
|
| Sekunden zwischen Bewegen des Zeigers und Drücken |
|
| Sekunden, die eine Maustaste gedrückt gehalten wird |
ctrl+alt+F1–F12 sind immer blockiert; VT-Umschaltung kann die grafische Sitzung unter Ihnen wegziehen.
Ein schreibgeschütztes Prüf-Setup:
DESKTOP_MCP_READ_ONLY=1 python -m desktop_mcp.serverVerifizieren
.venv/bin/python scripts/mcp_smoke.py # real stdio MCP round tripMaintenance
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.671395MIT
- AlicenseNot gradedqualityCmaintenanceEnables full Linux desktop control including windows, mouse, keyboard, clipboard, audio, screenshots, OCR, accessibility, and system management through MCP-compatible AI agents.1MIT
- FlicenseNot gradedqualityBmaintenanceAn MCP server that gives a model eyes and hands on a Linux Wayland desktop, enabling screenshot capture, mouse/keyboard control, OCR, and icon detection via OmniParser.1
- AlicenseAqualityDmaintenanceEnables LLM agents to capture screenshots, control mouse/keyboard, and manage windows on desktop platforms, primarily Windows, via an MCP server.161MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zetakai/desktop-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server