fenestra-mcp
fenestra-mcp
A Model Context Protocol server that lets an
AI assistant render and verify native UIs described as
fenestra fenestra/1 JSON.
Install
cargo install fenestra-mcpThe server speaks MCP over stdio — point your MCP client at the fenestra-mcp
binary.
Related MCP server: precision-desktop
Tools
describe_vocabulary— the description grammar: every node type with a minimal example, and the theme color roles a color may name. Call this first.describe_schema— the formal JSON Schema for afenestra/1description, the machine-checkable complement todescribe_vocabulary.render_ui— render to a typed access tree, a downscaled preview image, and automatic accessibility warnings.query_ui— find nodes by a semantic selector (role, name, value, or id); a miss returns the nearest candidates to guide a retry.interact— drive scripted interactions (click, type, key, tab, hover, wheel, drag) by semantic selector, never coordinates.check_a11y— theme contrast, labeling of every interactive control, and per-text-node APCA + WCAG 2 legibility.focus_order— the keyboard focus order: the refs a Tab cycle visits, in order, honoring a modal focus trap.check_layout— layout geometry from the real frame: interactive targets below the minimum hit size, and signal-bearing nodes clipped off-screen.match_aria_snapshot— assert an expected accessibility snapshot (partial / strict / regex).match_screenshot— compare against a baseline PNG, pixel by pixel, with an optional tolerance, differing-pixel budget, and mask rectangles to ignore.validate— validate a description without rendering; problems come back path-pointed.run_scenario— drive a description + optional steps through a whole bundle of expectations (emitted intents, a11y, aria, screenshot, queries) in one pass, asserted against the post-interaction frame.film_ui— drive optional steps (applied first, so a click can trigger the transition to watch), then capture frames with real motion on and compose them into one captioned filmstrip. The one tool that turns reduced motion off — every other tool stays reduced-motion for deterministic pixels.
Each tool leads with a typed structured result — query_ui, check_a11y,
focus_order, check_layout, match_aria_snapshot, and describe_vocabulary
carry a formal outputSchema so a client knows the result shape up front. The
visual tools also attach a downscaled preview image and a resource_link to
the full-resolution PNG (a file:// temp path), so a large image never
bloats the response yet stays one fetch away.
Registry
MCP Registry name:
mcp-name: io.github.richer-richard/fenestra-mcp
License
Licensed under either of MIT or Apache-2.0 at your option.
Maintenance
Latest Blog Posts
- 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/richer-richard/fenestra'
If you have feedback or need assistance with the MCP directory API, please join our Discord server