omarchy-mcp
omarchy-mcp

Gib jeder MCP-kompatiblen LLM die volle Kontrolle über einen Omarchy Linux-Desktop.
omarchy-mcp verwandelt KI-Codierungsagenten in echte Desktop-Operatoren. Über einen einzigen MCP-Server kann ein Agent Themes und Erscheinungsbild verwalten, Apps starten, Screenshots und Aufnahmen machen, Audio und Netzwerk steuern, den Systemzustand auslesen, Hyprland-Fenster und Kachel-Layouts steuern und ganze Multi-Agent-Arbeitsbereiche orchestrieren – 108 Tools in 15 Modulen.
Das Projekt basiert auf einer Regel: Eine Desktop-Änderung ist nicht allein deshalb erfolgreich, weil ein Befehl ausgeführt wurde. Jede Aktion wird anhand des gemessenen Desktop-Zustands bestätigt – Geometrie, Fokus, Servicestatus –, damit Agenten autonom handeln können, ohne stillschweigend zu scheitern.
Status
Aktueller Zustand | |
MCP-Tools | 108 registrierte Tools in 15 Modulen |
Transport | Lokaler stdio-MCP-Server |
Laufzeit | Node.js 20+ und TypeScript |
Desktop | Omarchy mit der Hyprland-Lua-Konfigurationsbrücke |
Tiling | Natives |
Sicherheit | Destruktive Tools standardmäßig deaktiviert; Selbstschutz für Host-Fenster |
Verifizierung | Unit-Tests, MCP-Smoke-Test und Live-Desktop-Evidenzprotokoll |
Siehe COMMANDS.md für den Verifizierungsstatus pro Tool und ROADMAP.md für geplante Meilensteine.
Related MCP server: linux-computer-use
Warum es das gibt
Desktop-Steuerungstools melden oft, dass eine Aktion ausgelöst wurde, ohne zu prüfen, ob sie funktioniert hat. Das ist besonders unzuverlässig bei Kachel-Fenstermanagern, wo Fokus, Floating-Regeln, Vollbildstatus, Workspace-Regeln und die Maus das Ziel verändern können.
Dieser Server fügt die fehlende Rückkopplungsschleife hinzu:
Fenstermutationen melden den gemessenen Vorher/Nachher-Zustand und ein klares Urteil.
Explizite Adress- und Match-Selektoren reduzieren fokusbedingte Fehler.
Ein PID-Abstammungs-Schutz verhindert, dass der Agent sein eigenes Host-Fenster schließt.
Destruktive Systemoperationen erfordern eine explizite Konfigurationsfreigabe.
health_checkdiagnostiziert fehlende Befehle, Layout-Installation und Desktop-Konnektivität.agent_gridverwandelt eine gesamte Multi-Agent-Workspace-Anfrage in eine verifizierte MCP-Operation.
Schnellstart
Anforderungen
Ein installierter Omarchy-Desktop
Hyprland mit Omarchys Lua-Konfigurationsbrücke
Node.js 20 oder neuer
npm
Einzelne Funktionen können auch wtype, nmcli, bluetoothctl, wpctl, grim und wl-copy verwenden. health_check meldet, welche optionalen Befehle verfügbar sind.
Build
git clone https://github.com/hlsitechio/Omarchy-MCP.git
cd Omarchy-MCP
npm ci
npm run build
npm testDer MCP-Einstiegspunkt ist:
node /absolute/path/to/Omarchy-MCP/build/index.jsInstallieren des nativen Raster-Layouts
Die regulären Desktop-Tools können ohne das benutzerdefinierte Layout ausgeführt werden, aber deterministisches Raster-/Master-Tiling und agent_grid erfordern es.
install -Dm644 hypr/layouts.lua ~/.config/hypr/layouts.luaStellen Sie sicher, dass die Benutzer-Hyprland-Konfiguration es lädt:
require("hypr.layouts")Laden Sie dann neu und überprüfen Sie die Konfiguration:
hyprctl reload
hyprctl configerrorsOmarchy-Paketdateien unter /usr/share/omarchy sollten unberührt bleiben; das Layout gehört in die Benutzerkonfiguration unter ~/.config/hypr.
Einen MCP-Client verbinden
Jeder Client, der lokale stdio-MCP-Server unterstützt, kann build/index.js starten.
OpenCode
Fügen Sie dies zu ~/.config/opencode/opencode.json hinzu und ersetzen Sie den Pfad durch den absoluten Pfad des Repositorys:
{
"mcp": {
"omarchy": {
"type": "local",
"command": [
"node",
"/absolute/path/to/Omarchy-MCP/build/index.js"
],
"enabled": true
}
}
}Claude Desktop
{
"mcpServers": {
"omarchy": {
"command": "node",
"args": ["/absolute/path/to/Omarchy-MCP/build/index.js"]
}
}
}Starten Sie nach dem Neubauen einen vorhandenen MCP-Client neu oder verbinden Sie ihn erneut, damit er das Tool-Schema neu lädt.
Erste Prompts zum Ausprobieren
„Prüfe, ob mein Omarchy MCP gesund ist.“
„Zeige jedes Fenster mit seinem Workspace und seiner Geometrie.“
„Öffne ein 2x2-Raster von OpenCode auf dem nächsten leeren Workspace.“
„Platziere Claude oben rechts und Codex unten rechts.“
„Verschiebe Firefox auf Workspace 4 und bestätige, wo es gelandet ist.“
„Fange dieses Fenster oben links ein und sage mir seine endgültige Größe.“
„Liste nahegelegene Wi-Fi-Netzwerke auf, aber verbinde dich mit nichts.“
Codierungsagent-Workspaces mit einem Befehl
agent_grid startet unabhängige Omarchy-TUI-Fenster, wendet das native Raster-Layout an, weist exakte oder spärliche Zellen zu und verifiziert die Anwendungsklasse, den Workspace, den Floating-Zustand und die beobachtete Geometrie jedes Fensters.
Für vier Anwendungen fragen Sie nach einem 2x2-Raster. Ein wörtliches 4x4-Raster enthält 16 Zellen und startet bei voller Belegung 16 Anwendungen.
Homogenes Raster
Prompt:
Öffne ein 2x2-Raster von OpenCode in diesem Repository.
Äquivalente Argumente:
{
"agent": "opencode",
"cols": 2,
"rows": 2,
"workspace": "next_empty",
"cwd": "/path/to/project"
}Gemischtes spärliches Raster
Prompt:
Öffne Claude oben rechts und Codex unten rechts.
Äquivalente Argumente:
{
"cols": 2,
"rows": 2,
"placements": [
{ "agent": "claude", "position": "top_right" },
{ "agent": "codex", "position": "bottom_right" }
]
}Unterstützte Agenten sind OpenCode, Claude, Codex, Gemini, Copilot, Crush, Grok, Oh My Pi (omp) und Pi. Verwenden Sie dry_run: true, um einen vollständigen Plan zu validieren, ohne Fenster zu öffnen.
Benannte Eckzuweisungen und explizite Zeilen-/Spaltenzuweisungen bleiben erhalten, wenn der Benutzer die Workspaces wechselt. Vor dem Start werden vorhandene gekachelte Fenster gezählt, und die Anfrage wird abgelehnt, wenn sie die Rasterkapazität überschreiten würde.
Tool-Gruppen
Bereich | Tools | Beispiele |
Fenster- und Layoutsteuerung | 24 | focus, type, keys, snap, resize, close, workspaces, grid/master |
Desktop-Grundlagen | 11 | launch, screenshots, reminders, audio, brightness, system status |
Shell und lokale Benutzeroberfläche | 13 | notifications, DND, OSD, bar state/configuration, plugin inspection |
Lokaler Plugin-Lebenszyklus | 4 | bounded detail, enable, disable, and packaged local clone workflows |
Geräte- und Audiosteuerung | 7 | audio inventory/defaults, media source, keyboard and input devices |
Lokale Starter | 3 | Files/About, validated config files, and allow-listed terminal tools |
Netzwerk und Strom | 11 | Wi-Fi, Bluetooth, battery, power profiles |
Theme und Erscheinungsbild | 11 | themes, local backgrounds, thumbnail cache, fonts |
Aufnahme und lokale Medien | 7 | recording, OCR/QR selectors, transcoding, ASCII conversion |
Lokaler Systemzustand | 6 | versions, resources, monitor state, toggles, hardware readiness |
Gesteuerte Systemoperationen | 5 | shutdown, packages, update, configuration refresh |
Standardwerte und Anzeige | 3 | application defaults and coordinated text sizing |
Gesundheit und Erkennung | 2 | readiness diagnostics, installed command search |
Orchestrierung von Codierungsagenten | 1 | homogeneous and mixed agent grids |
Die vollständige Liste und ihr Live-Test-Status werden in COMMANDS.md gepflegt.
Sicherheitsmodell
Keine Shell-Interpolation
Befehle werden mit Argument-Arrays über Node's execFile oder spawn ausgeführt; Benutzereingaben werden nicht in Shell-Befehle verkettet.
Destruktive Operationen sind optional
Herunterfahren, Neustart, Paketinstallation, Systemupdates und Konfigurationsaktualisierungen sind standardmäßig deaktiviert. Aktivieren Sie sie mit:
mkdir -p ~/.config/omarchy-mcp
printf '%s\n' '{"enableDangerous": true}' > ~/.config/omarchy-mcp/config.jsonOder setzen Sie die Prozessebenen-Überschreibung:
OMARCHY_MCP_ENABLE_DANGEROUS=1 node build/index.jsVerwenden Sie diese Einstellung nur für einen Client und eine Sitzung, denen Sie vertrauen.
Schutz des Host-Fensters
Fensterschließ- und andere risikoreiche Operationen lösen die PID-Abstammung des MCP-Hostprozesses auf und weigern sich, das eigene Terminalfenster anzusteuern. Explizite Fensteradressen werden für Mutationen bevorzugt, da der Hyprland-Fokus der Maus folgen kann.
Verifizierte Ergebnisse
Mutierende Fenster-Tools geben Status wie confirmed, split_confirmed, opened_but_not_split oder not_detected zurück, zusammen mit dem gemessenen Zustand und gegebenenfalls einem Wiederherstellungshinweis.
Architektur
MCP client
│ JSON-RPC over stdio
▼
MCP tool + Zod input validation
│
├── Omarchy CLI ───────────── themes, capture, power, applications
├── Hyprland Lua dispatcher ─ windows, workspaces, native layout
└── System CLIs ───────────── nmcli, bluetoothctl, wpctl, upower
│
▼
State reread + geometry/verdict engine
│
▼
Structured MCP result with STATUS, evidence, and HINTQuellstruktur:
src/index.ts server and tool registration
src/exec.ts shell-free process execution
src/hypr.ts desktop introspection and verification helpers
src/result.ts consistent MCP success/error results
src/config.ts safety configuration
src/tools/ tool domains
hypr/layouts.lua native deterministic grid/master layout
test/ automated and manual live testsHyprland-Fensterdispatches verwenden die Omarchy-Lua-API, zum Beispiel:
hl.dsp.window.resize({ window = "address:0x...", x = 900, y = 700, relative = false })Das native Layout unterstützt grid- und master-Modi sowie Laufzeitnachrichten für erzwungene Abmessungen, Reihenfolge, Tausche, spärliche Zellen und den Zustand pro Workspace.
Entwicklung und Verifizierung
npm run build # TypeScript compilation
npm test # compilation + deterministic planner tests
npm run smoke # live local MCP/Omarchy smoke testDer Smoke-Test ist bewusst desktop-bewusst. Er prüft die Tool-Registrierung, den Gesundheitsbericht, den schreibgeschützten Omarchy/Hyprland-Zugriff, das Tor für destruktive Operationen und einen agent_grid-Trockenlauf. Visuelle Mutationen werden manuell in einer echten Omarchy-Sitzung verifiziert und in COMMANDS.md festgehalten.
Für eine Live-Übung mit Agent-Raster:
node test/live-agent-grid.mjsDieser Befehl öffnet echte Fenster und ändert den aktiven Workspace; er ist nicht Teil von npm test.
Fehlerbehebung
Das neue Tool erscheint nicht
Führen Sie npm run build aus und starten Sie dann den MCP-Client neu oder verbinden Sie ihn erneut. MCP-Clients speichern die Tool-Liste normalerweise für die Lebensdauer des Serverprozesses zwischen.
health_check meldet, dass das Raster-Layout nicht vollständig installiert ist
Bestätigen Sie, dass ~/.config/hypr/layouts.lua existiert, dass die Benutzer-Hyprland-Konfiguration require("hypr.layouts") enthält und dass hyprctl configerrors leer ist.
Ein Fensterbefehl hat das falsche Ziel ausgewählt
Rufen Sie window_list auf und versuchen Sie es dann mit der zurückgegebenen Adresse erneut, anstatt sich auf das fokussierte Fenster zu verlassen. Dies vermeidet input:follow_mouse-Fokusänderungen.
Ein gefährliches Tool meldet, dass es deaktiviert ist
Das ist die sichere Standardeinstellung. Aktivieren Sie es nur explizit, nachdem Sie das Sicherheitsmodell überprüft haben.
Ein Layout-Befehl meldet eine Hyprland-Warnung
Einige Compositor-No-Ops sind zu erwarten – zum Beispiel das Tauschen eines Vollbildfensters oder das Tauschen in eine leere Zelle. Das MCP-Ergebnis unterscheidet diese Warnungen von bestätigten Mutationen.
Mitwirken
Beiträge sind willkommen in den Bereichen Implementierung, Live-Verifizierung, Dokumentation, Tests, Barrierefreiheit und Release-Engineering. Das Repository bietet strukturierte Issue-Formulare für Fehler, Tool-Vorschläge und Verifizierungsberichte sowie eine Pull-Request-Checkliste, die auf das Sicherheitsmodell des Projekts abgestimmt ist.
Beginnen Sie mit CONTRIBUTING.md und wählen Sie dann einen Beitragsbereich aus ROADMAP.md. Umfangreiche oder risikoreiche Änderungen sollten mit einem Issue beginnen, damit Umfang, Nachweise und Wiederherstellungsverhalten vor dem Codieren vereinbart werden können.
Projektdokumente
COMMANDS.md — Implementierungs- und Live-Verifizierungsprotokoll
ROADMAP.md — Meilensteine, Prioritäten und Release-Gates
CONTRIBUTING.md — Beitrags- und Testworkflow
GOVERNANCE.md — Rollen, Entscheidungen, Reviews und Releases
SECURITY.md — private Meldung und Sicherheitsgrenzen
CODE_OF_CONDUCT.md — Standards für die Teilnahme an der Community
AGENTS.md — technischer Kontext für Codierungsagenten, die am Repository arbeiten
Lizenz
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
- AlicenseBqualityDmaintenanceProvides AI assistants with the ability to control Linux desktop environments through tools for file management, application launching, and system operations like clipboard access. It includes a multi-level security model to manage permissions for safe, elevated, and restricted actions.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Linux/X11 desktops by providing tools for taking screenshots, clicking, typing, and managing windows via AT-SPI and xdotool.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables full Linux desktop control including windows, mouse, keyboard, clipboard, audio, screenshots, OCR, accessibility, and system management through MCP-compatible AI agents.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables computer control via mouse, keyboard, OCR, and screen/window management, similar to Anthropic's computer-use.MIT
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Runtime permission, approval, and audit layer for AI agent tool execution.
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/hlsitechio/Omarchy-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server