Hyprland Controller
STDIOLightweight server exposing Hyprland Wayland compositor functionality to language models.
Lightweight server exposing Hyprland Wayland compositor functionality to language models.
https://github.com/user-attachments/assets/b4fc1d26-ec04-451a-b7c9-7f87b44d9c9e
A lightweight, unofficial Model Context Protocol (MCP) server that exposes all the functionality of hyprctl
—the command-line interface for the Hyprland Wayland compositor—to language models.
This server enables natural language interfaces to query and control Hyprland's window management, layouts, inputs, and more.
Note: This project is experimental and in beta.
git clone https://github.com/stefanoamorelli/hyprmcp.git cd hyprmcp
HYPRLAND_INSTANCE_SIGNATURE
echo $HYPRLAND_INSTANCE_SIGNATURE
For example, in Claude Desktop, modify the ~/.config/Claude/claude_desktop_config.json
file as follows:
"Hyperland MCP Server": { "command": "uv", "args": [ "run", "--with", "mcp[cli]", "--with", "subprocess", "mcp", "run", "<global path of the repo>/hyprmcp/hyprmcp/server.py" ], "env": { "PYTHONPATH": "<global path of the repo>/hyprmcp", "HYPRLAND_INSTANCE_SIGNATURE": "<your-hyprland-instance-signature>" } },
Tool Name | Description |
---|---|
run_hyprctl_command | Executes arbitrary hyprctl commands. |
get_version | Retrieves the Hyprland version and build info. |
list_monitors | Lists all connected monitors and properties. |
list_workspaces | Lists all active workspaces. |
list_clients | Lists all windows and their properties. |
list_devices | Lists all connected input devices. |
get_active_window | Shows the currently active window details. |
list_layers | Displays all layers in the compositor. |
get_splash | Retrieves the current random splash message. |
dispatch_command | Dispatches a command to Hyprland. |
set_keyword | Dynamically sets a configuration keyword. |
reload_config | Forces a reload of the Hyprland config file. |
enter_kill_mode | Enables kill mode to terminate windows by click. |
These tools allow language models to interact with Hyprland's features seamlessly.
User Prompt: "Switch to workspace 2."
MCP Server Action: Executes hyprctl dispatch workspace 2
.
User Prompt: "What is the current active window?"
MCP Server Action: Executes hyprctl activewindow -j
and returns the details.
To run the server locally for development:
mcp dev server.py
Ensure that Hyprland is running and the necessary environment variables are set.
MIT License © 2025 Stefano Amorelli