Skip to main content
Glama
emadaljumah-camel

desktop-control-mcp

desktop-control-mcp

Claude Desktop Controller MCP

Ein Windows-Desktop-Automatisierungsserver, der Maus-, Tastatur-, Bildschirmaufnahme- und KI-gestützte UI-Elementerkennung über zwei Schnittstellen bereitstellt:

  • MCP-Server (mcp_server.py) — stdio-Transport, ausgelegt für die Verwendung mit Claude Code, Claude Desktop und anderen MCP-Clients

  • HTTP-Server (server.py + app.py) — eine Flask-API unter http://localhost:7845, über ein Symbol in der Taskleiste ausführbar

Beide Schnittstellen nutzen dieselben zugrunde liegenden controller.py- (Windows-Automatisierung) und ui_parser.py- (Vision-Modelle) Dateien, sodass die Funktionen identisch sind.


Highlights

  • KI-basiertes Klicken per Sicht — UI-Elemente werden mit Microsoft OmniParser v2 (YOLO-Symbolerkennung + Florence-2-Beschriftung + EasyOCR) erkannt, sodass Sie Schaltflächen/Felder nach Absicht ansteuern können, anstatt Pixelkoordinaten aus einem Screenshot zu erraten.

  • DPI-bewusst — läuft als PROCESS_PER_MONITOR_DPI_AWARE, sodass Koordinaten unabhängig von der Windows-Anzeigeskalierung immer physischen Pixeln entsprechen.

  • Cursor in Screenshots — Das echte Windows-Cursor-Bitmap wird über die Win32-GDI-API in jeden Screenshot eingefügt, sodass KI-Clients sehen können, wo sich die Maus befindet.

  • Drei Screenshot-Modi — einzelnes komprimiertes JPEG, kommentierte Erkennungsansicht und zeitlich gestaffelte Serienaufnahme (zur Beobachtung von Animationen oder Ladezuständen).

  • Intelligente Tastatursteuerung — separate Werkzeuge für wörtlichen Text, einzelne Tasten und Tastenkombinationen, sodass "ctrl+c" nie versehentlich als Text eingegeben wird.


Related MCP server: desktop-automation-mcp

Installation

Erfordert Windows und Python 3.10+.

git clone https://github.com/ahmetdenizyilmaz/desktop-control-mcp.git
cd desktop-control-mcp
pip install -r requirements.txt

Beim ersten Start werden die OmniParser-v2-Modellgewichte (~1 GB) von Hugging Face in den lokalen Cache heruntergeladen. Eine GPU wird automatisch verwendet, wenn ein CUDA-fähiges PyTorch installiert ist; andernfalls wird die CPU verwendet.


Ausführen

Als MCP-Server (stdio)

Fügen Sie einen Eintrag wie diesen zu Ihrer MCP-Client-Konfiguration hinzu (z. B. Claude Desktop / Claude Code):

{
  "mcpServers": {
    "desktop-control": {
      "command": "python",
      "args": ["C:\\path\\to\\desktop-control-mcp\\mcp_server.py"]
    }
  }
}

Der Server startet sofort; Modelle werden in einem Hintergrundthread geladen, sodass der erste detect_ui_elements-Aufruf auf sie wartet, die übrigen Werkzeuge jedoch sofort verfügbar sind.

Als HTTP-Server mit Taskleistensymbol

python app.py

Ein Taskleistensymbol mit Start / Stopp / Beenden erscheint. Die Flask-API lauscht auf http://localhost:7845. Endpunktdetails finden Sie in API_DOCS.md.


MCP-Werkzeuge

Bildschirminformationen

Werkzeug

Beschreibung

get_screen_size()

Auflösung des primären Monitors. Einmal aufrufen, um den Koordinatenraum zu erfahren.

get_active_window()

Titel, Position und Größe des aktuell fokussierten Fensters.

Screenshots

Werkzeug

Beschreibung

take_screenshot(quality=30)

Komprimiertes JPEG des primären Monitors. Nur zur Beobachtung — leiten Sie daraus keine Koordinaten ab.

detect_ui_elements(confidence_threshold=0.5, full_response=False)

Führt OmniParser + EasyOCR aus und gibt ein kommentiertes Bild sowie eine Tabelle mit (id, type, confidence, center, label) für jedes erkannte Element zurück. So finden Sie Koordinaten zum Klicken.

take_screenshot_burst(frame_count=10, duration_seconds=1.0)

Erfasst N Bilder, gleichmäßig über eine Dauer verteilt. Nützlich für Animationen, Ladekreise oder zeitkritische Benutzeroberflächen.

Maus

Werkzeug

Beschreibung

click_mouse(x, y, button="left")

Einfacher Klick. Verwenden Sie immer Koordinaten aus detect_ui_elements.

double_click(x, y)

Doppelklick.

move_mouse(x, y)

Cursor bewegen, ohne zu klicken.

drag_mouse(x1, y1, x2, y2, button="left")

Klicken und ziehen.

scroll(x, y, direction, amount=3)

Mausrad an einer Position (up/down/left/right).

Tastatur

Werkzeug

Wann verwenden

type_text(text)

Texteingabe (Dateinamen, Suchanfragen, URLs, Code). Interpretiert + nie als Tastenkombination.

press_key(key, presses=1)

Eine einzelne benannte Taste (enter, tab, escape, f5, Pfeiltasten, delete usw.).

send_keys(text)

Nur Tastenkombinationen mit Modifikatoren (ctrl+c, alt+tab, win+d, ctrl+shift+s).


Der verbindliche Klick-Workflow

Koordinaten sind über Bildschirmänderungen hinweg nicht stabil – jedes Menü, jeder Dialog, jedes Scrollen verschiebt Dinge. Der Server erzwingt diese Schleife:

  1. ERKENNENdetect_ui_elements gibt die aktuelle Elementtabelle zurück.

  2. FINDEN – Gleichen Sie Ihr Ziel in der Spalte Label ab.

  3. KLICKENclick_mouse(x, y) mit den exakten Center-Koordinaten aus der Tabelle.

  4. ÜBERPRÜFENtake_screenshot, um zu bestätigen, dass der Klick angekommen ist.

  5. WIEDERHERSTELLEN – Wenn der Klick danebenging, erneut erkennen (der Bildschirm hat sich möglicherweise geändert) und erneut versuchen.

Erraten Sie niemals Koordinaten aus einem rohen Screenshot. Die Elementtabelle aus detect_ui_elements ist die maßgebliche Quelle.

Beispiel-Elementtabelle

  ID  Type   Conf   Center         Label
   1  text   0.98   ( 499,   55)   File  Edit  View
   2  icon   0.91   ( 674,  200)   Search button
   3  icon   0.87   (1200,  400)   Close

Um die Suchschaltfläche zu klicken: click_mouse(x=674, y=200).


HTTP-API

Wenn als app.py ausgeführt, spiegelt der Flask-Server auf Port 7845 die MCP-Werkzeuge wider:

Endpunkt

Zweck

GET /health

Lebenszeichenprüfung.

POST /screenshot

Gibt ein Base64-PNG des Bildschirms zurück.

POST /move

{x, y} – Cursor bewegen.

POST /click

{x, y, button?} – Klicken.

POST /keys

{keys} – Text oder Tastenkombination (automatisch erkannt).

POST /command

Einzelner Befehl in eckigen Klammern wie [ClickMouse(500,300)].

POST /actions

Liste von Befehlen in eckigen Klammern, die nacheinander mit optionaler delay ausgeführt werden.

Vollständige Anfrage-/Antwortschemata finden Sie in API_DOCS.md.


Dateistruktur

mcp_server.py          FastMCP server — tool definitions and lifespan
controller.py          Win32 / pyautogui / mss core — screenshots, input, window info
ui_parser.py           OmniParser v2 loading + UI detection + image annotation
screenshot_manager.py  Disk-side screenshot cache (cleanup, naming, burst dirs)
overlay.py             On-screen overlay utilities
lock_manager.py        Concurrency lock for shared resources
server.py              Flask HTTP API
app.py                 Tray-icon launcher for the Flask server
templates/index.html   Web UI for the Flask server
requirements.txt       Python dependencies
API_DOCS.md            HTTP endpoint reference
run_agents.bat         Convenience launcher for Claude Code in this folder

Plattformhinweise

  • Nur Windows. Die Cursor-Komposition, DPI-Erkennung und der Code für aktive Fenster verwenden direkt Win32-APIs.

  • Nur primärer Monitor. Alle Koordinaten liegen im Pixelraum des primären Monitors.

  • Die erste Erkennung ist langsam. Das Laden des OmniParser-Modells und die EasyOCR-Initialisierung können beim ersten Aufruf 30–60 Sekunden dauern. Nachfolgende Erkennungen sind schnell (unter einer Sekunde auf der GPU, einige Sekunden auf der CPU).

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that provides computer control capabilities including mouse movements, keyboard actions, screenshot capture with OCR, and window management through a unified API.
    158
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for driving any Windows app through five layers including OCR, UI Automation, and direct OS operations. Enables AI agents to control Windows desktop and OS cursor-free, even on background/locked windows.
    151
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.

  • The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.

View all MCP Connectors

Latest Blog Posts

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/emadaljumah-camel/desktop-control-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server