SH

stefanoamorelli/hyprmcp

Developer tools
35 stars 6 forks Quality 53 Trend 26MIT

Community MCP server for hyprctl

Overview

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. This project is experimental and in beta. For example, in Claude Desktop, modify the ~/.config/Claude/claude_desktop_config.json file as follows: These tools allow language models to interact with Hyprland's features seamlessly. Executes hyprctl activewindow -j and returns the details. To run the server locally for development:

README

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.

🚀 Quick Start

1. Clone the repository

git clone https://github.com/stefanoamorelli/hyprmcp.git
cd hyprmcp

2. Grab your HYPRLAND_INSTANCE_SIGNATURE

echo $HYPRLAND_INSTANCE_SIGNATURE

3. Install the server in your MCP client

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",
   "/hyprmcp/hyprmcp/server.py"
  ],
  "env": {
    "PYTHONPATH": "/hyprmcp",
    "HYPRLAND_INSTANCE_SIGNATURE": ""
  }
},

🧰 Available Tools

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.

💡 Example Usage

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.

🛠️ Development

To run the server locally for development:

mcp dev server.py

Ensure that Hyprland is running and the necessary environment variables are set.

📚 References

📜 License

MIT License © 2025 Stefano Amorelli

View this README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide