omarchy-mcp
Provides tools for reading Hyprland desktop state, including monitors, workspaces, windows, and focus.
Click on "Install 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., "@omarchy-mcprun the command to increase volume"
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.
MCP Server for Omarchy
Lets a local AI agent drive your Omarchy desktop: every command in Omarchy's registry, plus the live shell's IPC targets, exposed over MCP on loopback.
Runs as an Omarchy plugin, so there is no systemd unit to enable, no second install step, and no separate package. The plugin supervises a small daemon; the daemon starts with your session and stops with it.
Status: Phase 4. Nineteen tools, seven resources, a supervised daemon, and a bar widget that says whether it is serving. What is left is hardening; see
ROADMAP.md.
Documentation
File | For |
| Using it — install, connect a client, configure, uninstall |
The tool reference, generated from the server's own schemas | |
How it works. Start here to read the source | |
What an agent can and cannot do, and why | |
What is done, what is left, what was decided against | |
Working agreement, and Omarchy plugin conventions |
Related MCP server: macos-control-mcp
Contents
What it does
Omarchy has two control surfaces, and this exposes both:
The command registry.
omarchy commands --jsondescribes several hundred commands — route, arguments, summary, examples, and whether each needs sudo. That listing is read live, so this server never goes stale when Omarchy is upgraded and there is no command catalogue to maintain.The shell's IPC targets. Everything
omarchy-shelldraws — the bar, the OSD, notifications, media, and every loaded plugin — is reachable only through Quickshell IPC.qs ipc showlists them with full method signatures, and that listing is the only documentation these interfaces have.
Four generic tools cover both surfaces completely:
Tool | Does |
| Finds commands, with arguments, examples, and whether they can be run |
| Runs one. Arguments never touch a shell |
| Lists IPC targets and every method signature |
| Calls one |
One tool per command would put tens of thousands of tokens of schema into a client's context before it did anything, so discovery and dispatch are separate.
Fifteen curated tools sit on top, each earning its place one of two ways.
Some return what the generic runner structurally cannot — an image, or data that is not Omarchy's at all:
Tool | Does |
| Returns the screen as an image, so an agent can see it |
| Hyprland's monitors, workspaces, windows, and focus |
| OCR, for reading what something says |
| The clipboard, which is not an Omarchy command |
| Eight probes in one call instead of eight round trips |
The rest are simply asked for constantly, and a search round trip before every volume change is a bad trade:
omarchy_notify, omarchy_osd, omarchy_theme, omarchy_background,
omarchy_audio, omarchy_brightness, omarchy_media, omarchy_toggle,
omarchy_launch.
Curated tools go through the same policy check and executor as omarchy_run — a
better-shaped door onto the same room, never a way around the lock. Any of them
can be switched off in the config, and everything they do stays reachable
through omarchy_run.
Seven resources carry the reference material. Tools are how an agent acts;
resources are how a person reads — in Claude Code they appear as @ mentions:
URI | Holds |
| The whole registry, annotated with what this server may run |
| Every IPC target with full method signatures — documented nowhere upstream |
| Monitors, workspaces, windows, focus |
| The system status aggregate |
Plus three URI templates — omarchy://command/{route},
omarchy://commands/{group}, omarchy://shell/target/{name} — which between
them cover every command and target without a listing of several hundred
entries.
Full reference, generated from the server's own schemas: TOOLS.md.
Install
omarchy plugin add https://github.com/bruce-forte/omarchy-mcp-server.git --enableThat clones the repository into
~/.config/omarchy/plugins/io.github.bruce-forte.mcp-server/, validates the
manifest, and enables it. Confirm it landed:
omarchy plugin list | grep mcp-serverOn first run the plugin builds a Python environment in
~/.local/state/io.github.bruce-forte.mcp-server/. This takes a second or two
and needs a network connection once. omarchy plugin add deliberately runs no
build and no install hook, so this happens lazily rather than at install time.
Connecting a client
The server requires a bearer token, generated on first run. Print the exact command to run:
omarchy-shell io.github.bruce-forte.mcp-server clientConfigor directly:
~/.config/omarchy/plugins/io.github.bruce-forte.mcp-server/bin/omarchy-mcpd --print-client-configwhich prints something like:
claude mcp add --transport http omarchy http://127.0.0.1:8765/mcp \
--header "Authorization: Bearer <your token>"For clients configured by file rather than by command, add --json:
{
"mcpServers": {
"omarchy": {
"type": "http",
"url": "http://127.0.0.1:8765/mcp",
"headers": { "Authorization": "Bearer <your token>" }
}
}
}Checking it works
omarchy-shell io.github.bruce-forte.mcp-server status
curl -s http://127.0.0.1:8765/healthstatus reports whether the daemon is serving, which is not the same as
running — a wedged HTTP loop still has a live process, so the plugin probes
/health rather than trusting the pid.
Configuration
Optional. Everything works without it. A commented template is written to
~/.config/omarchy/mcp/config.toml on first run; every key is commented out and
shows its default, so keys you leave alone keep tracking upstream defaults.
[server]
# port = 8765
# timeout_ms = 30000
# max_output_b = 262144
[policy]
# allow = ["omarchy system reboot"]
# allow_groups = ["install"]
# deny = ["omarchy launch browser"]
[log]
# level = "info"After editing:
omarchy-shell io.github.bruce-forte.mcp-server reloadConfigThe listen address is always 127.0.0.1 and is deliberately not configurable.
See SECURITY.md.
What an agent is allowed to run
Commands are classified automatically from the registry, so the policy does not rot when Omarchy adds commands:
Tier | Rule | Behaviour |
| needs sudo | Refused always. The daemon has no controlling terminal, so a password prompt could never be answered. Not overridable |
| installs, removes, migrates, reboots | Refused unless allowed in your config |
| everything else | Runs |
omarchy_search_commands reports the tier of every result, so an agent can see
what it may do before trying.
Development
Work on a checkout, then point Omarchy at it:
omarchy plugin add /path/to/omarchy-mcp-server --enable --yes
omarchy plugin update io.github.bruce-forte.mcp-serverplugin add clones, so only committed work gets installed.
make check # tests, qmllint, manifest validation
make test
make tools # regenerate TOOLS.md from the server's schemas
make run # run the daemon in the foregroundUse the Makefile rather than bare uv commands: it puts the dev virtualenv
outside the repository, because omarchy plugin validate rejects symlinks
anywhere inside a plugin folder and a virtualenv is largely symlinks.
Reload rules. Editing Python takes effect on the next daemon restart
(omarchy-shell io.github.bruce-forte.mcp-server restart). Editing QML needs
omarchy restart shell.
Troubleshooting
Symptom | Cause and fix |
The bar icon shows | The daemon is not serving. |
Client cannot connect | Wrong or stale token. Re-run |
| Something else has port 8765. Set |
Bootstrap failed on first login | Usually no network yet. |
A command is refused | Check its tier with |
Tools do not appear in the client | The client caches the tool list; reconnect it |
Uninstall
omarchy plugin remove io.github.bruce-forte.mcp-server
rm -rf ~/.local/state/io.github.bruce-forte.mcp-server # venv and bearer token
rm -rf ~/.config/omarchy/mcp # your configuration
claude mcp remove omarchy # if you added it thereplugin remove takes the plugin directory only; the two directories above are
outside it by design and are not touched.
Requirements
Omarchy 4 (Quattro) or newer
/usr/bin/python3— present on every Omarchy installA network connection on first run, to build the environment
uv, or a network connection so the plugin can fetch a pinned copy of it
Security
This server runs commands on your desktop on behalf of a language model. Read
SECURITY.md before installing it.
License
Apache-2.0. See LICENSE.
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 gradedqualityBmaintenanceA local macOS MCP server for AI Agents that exposes safe endpoints for shell commands, files, processes, macOS automation, browser control, and more.2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI to fully control macOS — mouse, keyboard, terminal, screenshots, window management, UI element detection, and provides AI-optimized information reporting.20MIT
- AlicenseBqualityAmaintenanceEnables AI agents to directly access native macOS services, media, system health, and administration tools through a local MCP server.40218MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to securely control a remote Windows/Linux PC via MCP and REST, executing shell commands and driving coding-agent CLIs like Claude, Cursor, and Codex.
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
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/bruce-forte/omarchy-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server