desktop-control-mcp
desktop-control-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-ClientsHTTP-Server (
server.py+app.py) — eine Flask-API unterhttp://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.txtBeim 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.pyEin 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 |
| Auflösung des primären Monitors. Einmal aufrufen, um den Koordinatenraum zu erfahren. |
| Titel, Position und Größe des aktuell fokussierten Fensters. |
Screenshots
Werkzeug | Beschreibung |
| Komprimiertes JPEG des primären Monitors. Nur zur Beobachtung — leiten Sie daraus keine Koordinaten ab. |
| Führt OmniParser + EasyOCR aus und gibt ein kommentiertes Bild sowie eine Tabelle mit |
| Erfasst N Bilder, gleichmäßig über eine Dauer verteilt. Nützlich für Animationen, Ladekreise oder zeitkritische Benutzeroberflächen. |
Maus
Werkzeug | Beschreibung |
| Einfacher Klick. Verwenden Sie immer Koordinaten aus |
| Doppelklick. |
| Cursor bewegen, ohne zu klicken. |
| Klicken und ziehen. |
| Mausrad an einer Position ( |
Tastatur
Werkzeug | Wann verwenden |
| Texteingabe (Dateinamen, Suchanfragen, URLs, Code). Interpretiert |
| Eine einzelne benannte Taste ( |
| Nur Tastenkombinationen mit Modifikatoren ( |
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:
ERKENNEN –
detect_ui_elementsgibt die aktuelle Elementtabelle zurück.FINDEN – Gleichen Sie Ihr Ziel in der Spalte
Labelab.KLICKEN –
click_mouse(x, y)mit den exaktenCenter-Koordinaten aus der Tabelle.ÜBERPRÜFEN –
take_screenshot, um zu bestätigen, dass der Klick angekommen ist.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) CloseUm 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 |
| Lebenszeichenprüfung. |
| Gibt ein Base64-PNG des Bildschirms zurück. |
|
|
|
|
|
|
| Einzelner Befehl in eckigen Klammern wie |
| Liste von Befehlen in eckigen Klammern, die nacheinander mit optionaler |
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 folderPlattformhinweise
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).
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityBmaintenanceMCP server that provides computer control capabilities including mouse movements, keyboard actions, screenshot capture with OCR, and window management through a unified API.158MIT
- AlicenseNot gradedqualityCmaintenanceWindows desktop automation MCP server supporting mouse, keyboard, screenshot, and image recognition, with native CJK text input via clipboard.MIT
- AlicenseNot gradedqualityBmaintenanceMCP 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.1512MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Windows desktop automation, enabling agents to control mouse, keyboard, and UI elements via 22 tools, with OCR, screenshots, macro recording, and autonomous mission execution.MIT
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.
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/emadaljumah-camel/desktop-control-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server