Описание
Hyprland — Model Context Protocol server
README
MCP server (Model Context Protocol) for capturing screenshots and querying window/monitor/workspace state in the Hyprland Wayland compositor.
Enables LLMs to see your screen, inspect open windows, and navigate your desktop layout.
Requirements
| Binary | Source |
|---|---|
hyprctl |
Bundled with Hyprland |
grim |
https://sr.ht/~emersion/grim/ (pacman -S grim / apt install grim) |
The server must run inside an active Hyprland session with WAYLAND_DISPLAY set.
Installation
cd hyprland-mcp-server
npm install
npm run build
MCP Client Configuration
Claude Desktop / opencode
{
"mcpServers": {
"hyprland": {
"command": "node",
"args": ["/absolute/path/to/hyprland-mcp-server/dist/index.js"]
}
}
}
Run manually (for testing)
node dist/index.js
# or during development:
npm run dev
Tools
| Tool | Description |
|---|---|
hyprland_list_windows |
List all open windows with class, title, address, geometry, workspace |
hyprland_get_active_window |
Get metadata for the currently focused window |
hyprland_screenshot_window |
Capture a PNG of a specific window (by address, class, title, or PID) |
hyprland_screenshot_active_window |
Capture a PNG of the currently focused window |
hyprland_screenshot_monitor |
Capture a full monitor screenshot |
hyprland_list_monitors |
List monitors with resolution, refresh rate, position, scale |
hyprland_list_workspaces |
List workspaces with window counts and monitor assignments |
hyprland_click_at |
Simulates a mouse click at absolute global coordinates in Hyprland. Useful for programmatically interacting with specific screen positions. |
hyprland_click_window |
Targets the center of a specific window in Hyprland for a mouse click, with optional offsets. |
hyprland_click_window_relative |
Clicks inside a selected window using window-local coordinates (local_x,local_y) with optional bounds validation. |
hyprland_click_and_screenshot_active |
Performs click with optional bounded retries and returns active-window screenshot for immediate verification. |
hyprland_move_cursor |
Moves the mouse cursor to specified global coordinates without clicking. |
hyprland_get_cursor_pos |
Retrieves the current cursor position in the global layout coordinates. |
hyprland_type_text |
Types a text string into the currently focused window using Wayland-native input injection. |
hyprland_press_key |
Sends a single keypress event (e.g., Enter, Tab, Escape) to the currently focused window. |
hyprland_send_key |
Sends a key or a key combination (e.g., "Ctrl+C") to a specific window or the active window. |
hyprland_focus_window |
Brings keyboard and compositor focus to a specific window, enabling further interactions. |
Example Usage
"Screenshot the terminal window"
-> hyprland_screenshot_window(class="Alacritty")
"What apps are open on workspace 2?"
-> hyprland_list_windows(workspace_id=2)
"Take a screenshot of my screen"
-> hyprland_screenshot_monitor()
"What am I looking at right now?"
-> hyprland_get_active_window()
Screenshot Response
Screenshot tools return:
- A text block with geometry, file path, and window info
- An image block (base64 PNG) so the LLM can visually inspect the content
- A structuredContent block with JSON metadata
Screenshots are saved to a temporary directory under /tmp/hyprland-mcp-*.
Click Precision Notes
hyprland_click_atexpects global monitor coordinates.hyprland_screenshot_windowis naturally read as window-local pixels.- Convert local → global when needed:
global_x = window_x + local_x
global_y = window_y + local_y
To avoid coordinate-space mistakes, prefer:
hyprland_click_window_relativewhen targeting UI points from a window screenshot.hyprland_click_windowwhen clicking near window center with offsets.hyprland_click_and_screenshot_activewhen you want click+verify loop in one call.
Development
npm run dev # tsx watch mode
npm run build # compile TypeScript
npm run clean # remove dist/
Architecture
src/
index.ts # Server init, dependency check, tool registration
types.ts # TypeScript interfaces for Hyprland IPC structs
schemas/index.ts # Shared Zod schemas (ResponseFormat, WindowSelector)
services/
hyprland.ts # hyprctl wrapper, grim capture, window/monitor queries
tools/
list-windows.ts
get-active-window.ts
screenshot-window.ts
screenshot-active-window.ts
screenshot-monitor.ts
list-monitors.ts
list-workspaces.ts
Установка Hyprland
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/rodsilvavieira2/hyprland-mcp-serverFAQ
Hyprland MCP бесплатный?
Да, Hyprland MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Hyprland?
Нет, Hyprland работает без API-ключей и переменных окружения.
Hyprland — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Hyprland в Claude Desktop, Claude Code или Cursor?
Открой Hyprland на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Hyprland with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
