fixed-width/glass

๐Ÿ–ฅ๏ธ OS Automation๐ŸŸข Verified Active
0 Views
0 Installs

๐Ÿฆ€ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - Gives a coding agent a build โ†’ see โ†’ interact โ†’ debug loop over the native GUI app it is writing: launch the app, screenshot it, read its accessibility tree, inject mouse/keyboard/gestures, tail its logs, and diff frames to confirm a change landed. Drives apps as an external black box with no app integration, so any toolkit or language works. 30 tools with text-first responses (element ids, diffs, waits) so the agent need not screenshot every step, plus optional sandboxing of the launched app. Backends: X11, Wayland, Windows, macOS, Android emulators, and the iOS Simulator.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "fixed-width-glass": {
      "command": "npx",
      "args": [
        "-y",
        "fixed-width-glass"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

glass

CI
glass MCP server

Give your coding agent hands for the app it's building โ€” launch it, drive it, and verify the result, without burning a screenshot on every step.

A Rust MCP server that gives an AI coding agent a closed build โ†’ see โ†’ interact โ†’ debug loop over external native GUI applications.

glass lets an agent launch a GUI app, capture what is on screen, inject mouse and keyboard input, read the app's logs, and detect visual changes โ€” so a coding agent can build and debug UI applications independently instead of asking the user "does this look right?".

glass drives apps as an external black box, so it works with any native GUI app regardless of toolkit or language. It has two Linux backends (X11 and Wayland), a Windows backend, an Android backend (an AVD emulator, driven over adb from any host), an iOS backend (native apps in the Simulator over xcrun simctl, with input and the accessibility tree via idb_companion; multi-touch gestures excepted), and a macOS backend, behind a platform-agnostic core.

See it

An agent debugging a GTK app under glass

An agent building a GUI app runs it under glass, reproduces a bug from the accessibility tree (no screenshots), fixes the code, and re-verifies โ€” the loop it otherwise can't close on its own. Try it yourself.

Try it in 60 seconds

  1. Download glass for your platform from the Releases page and connect it to your agent โ€” glass works with any MCP host (see which are verified).

  2. Get the example app โ€” clone this repo, or download examples/tasks-demo/tasks_demo.py (on Linux it needs sudo apt install python3-gi gir1.2-gtk-4.0).

  3. Paste this to your agent:

    Use glass to run examples/tasks-demo/tasks_demo.py with accessibility on. There's a bug: clicking Add doesn't add the typed task. Reproduce it by driving the UI and checking the accessibility tree (don't just screenshot), then find and fix the bug in the code and verify a task actually appears.

Your agent launches the app, reproduces the bug from the accessibility tree, fixes the one-line wiring bug, and confirms the task appears โ€” the whole build โ†’ see โ†’ interact โ†’ debug loop, start to finish. (glass-mcp doctor checks your environment if anything's off.)

The loop in practice

Point an agent at a GUI app and it runs the whole cycle itself. When the app exposes an accessibility tree, the agent drives it semantically โ€” addressing widgets by #id and confirming each step from text, no per-step screenshot:

glass_start            { "run": ["python3", "app.py"] }   // launch (accessibility on by default)
glass_a11y_snapshot                        // the tree: role, name, #id, bounds โ€” as text
glass_click_element    { "id": 5 }         // click by #id, not pixels
glass_wait_for_element { "name": "Save", "condition": "enabled" }       // wait on state โ€” no polling
glass_set_value        { "id": 4, "value": "hello" }   // set a field / toggle / dropdown
glass_logs                                 // read the app's stderr

For a canvas or custom-rendered app with no accessibility tree, drive it by pixels instead โ€” glass_screenshot, glass_click {x,y}, and glass_diff, which returns changed_pct + a bbox as text, so routine checks between screenshots cost no vision tokens. Why the loop is shaped this way: the build โ†’ see โ†’ interact โ†’ debug loop.

glass_click_element tries the platform's native accessibility action first โ€” AT-SPI Action on Linux, UI Automation patterns on Windows, AXPress on macOS โ€” which actuates elements that are occluded or scrolled off-screen and, on macOS, without moving the cursor. Not every control exposes one (some toolkit checkbuttons expose no action even on a backend that otherwise supports it), so the click falls back to a synthetic pointer click at the element's center when it doesn't. iOS and Android always use the pointer path today. The result's method field (native-action/pointer) says which path actually ran for that click, with native_fallback explaining why when it fell back โ€” the source of truth per click, not the backend alone. On those three backends the native attempt re-checks the element against the live tree, so a click whose element no longer matches errors instead of clicking stale coordinates; the pointer-only iOS and Android paths have no such live check.

Install at a glance

Download the latest build for your platform from the Releases page, then set up your host:

Every asset is listed in docs/reference/platforms.md. Prefer to compile, or on an architecture with no published asset? See docs/how-to/build-from-source.md โ€” it is a single cargo build.

Then connect glass to your agent and run glass-mcp doctor to check the environment. New here? Follow the tutorial for a guaranteed first success.

Drive it well โ€” the glass-drive skill

glass needs no app integration and no skill to run, but an agent drives it far more reliably with the open glass-drive Agent Skill โ€” it stops the agent spending its first turns rediscovering the verify-cheaply-then-look loop. Installing it is the single highest-leverage thing you can add when pointing an agent at glass.

Platform support

โœ“ supported ยท โ—‘ partial ยท โ€“ not supported ยท ๐Ÿšง planned.

CapabilityLinux (X11 + Wayland)WindowsAndroid (AVD)iOS (Simulator)macOS
Capture ยท input ยท windows ยท clipboard ยท logsโœ“โœ“โœ“โœ“โœ“
Accessibility (semantic addressing)โœ“ AT-SPIโœ“ UI Automationโœ“ UIAutomatorโœ“ idbโœ“ AX
Containment / sandboxingโœ“ bubblewrapโœ“ Sandboxieโœ“ the emulator VMโœ“ the Simulatorโœ“ Seatbelt
Display isolation (app off your desktop)โœ“ headless Xvfb / swayโ—‘ virtual display ยท VM tierโœ“ headless emulatorโœ“ headless simctl boot๐Ÿšง

Full matrix, per-capability detail, and system requirements: docs/reference/platforms.md. Transport is MCP over stdio (default) or network HTTP.

Documentation

The full docs โ€” tutorial, how-to guides, reference, and explanations โ€” are under docs/. See CHANGELOG.md for release notes, and Stability and versioning for what a 1.0 release guarantees.

License

glass is open core, licensed Apache-2.0 โ€” see LICENSE-APACHE.

Related MCP Servers

dimpagk92/cellar

๐Ÿฆ€ ๐Ÿ“‡ ๐Ÿ  ๐ŸŽ ๐Ÿง - Hybrid computer-use runtime. Fuses accessibility tree + Chrome DevTools Protocol + vision into structured context with per-element confidence. 4 MCP tools (see/act/think/perceive). Continuous awareness engine (Cortex) with freshness + side-effect detection. Works offline with Ollama + local models.

๐Ÿ–ฅ๏ธ OS Automation0 views
faze79/WPFVisualTreeMcp

๏ธโƒฃ ๐Ÿ  ๐ŸชŸ - Inspect, debug and drive running WPF (.NET desktop) apps: visual tree, dependency properties, data bindings and binding errors, DataContext, and screenshots with open popups/menus included, plus clicking, item selection, text input and keyboard shortcuts. Auto-injects into any running WPF process (x64/x86) with no source changes. dotnet tool install -g WpfVisualTreeMcp

๐Ÿ–ฅ๏ธ OS Automation0 views
Harusame64/desktop-touch-mcp

๐Ÿ“‡ ๐Ÿฆ€ ๐Ÿ  ๐ŸชŸ - Windows desktop automation for LLM agents with entity-based actions instead of coordinate-only clicking. Uses UIA, CDP, screenshots, keyboard/mouse/clipboard, and terminal control, plus entity leases, verified delivery, causal context, and interaction memory to reduce silent UI automation failures.

๐Ÿ–ฅ๏ธ OS Automation0 views
juergenkoller-software/freezetext-mcp

๐Ÿ  ๐ŸŽ - MCP server for FreezeText โ€” OCR anything on your Mac screen. Freeze the screen and extract text via Apple Vision (videos, popups, protected PDFs), OCR a region or base64 image, and manage a searchable capture history. 12 tools.

๐Ÿ–ฅ๏ธ OS Automation0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Active

Recent health check succeeded.

Last checked: 7/29/2026, 7:31:01 AM

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.