fenestra-mcp
This server enables AI assistants to render, interact with, and verify native UIs described in fenestra/1 JSON, offering a full suite of visual, accessibility, layout, and interaction testing tools.
Learn & Validate:
describe_vocabularyanddescribe_schemaexpose the description grammar and formal JSON Schema;validatechecks structural correctness without rendering.Render & Preview:
render_uiproduces a typed accessibility tree, downscaled preview image, and automatic accessibility warnings, with a link to the full-resolution PNG.Query & Interact:
query_uifinds nodes by semantic selector (role, name, value, id) with fallback candidates;interactdrives scripted interactions (click, type, key, tab, hover, wheel, drag) via selectors, returning emitted intents and the resulting access tree.Accessibility Checks:
check_a11yaudits theme contrast, interactive control labeling, and per-node text legibility (APCA + WCAG 2);match_aria_snapshotasserts expected accessibility snapshots in partial, strict, or regex modes.Layout & Focus:
check_layoutidentifies interactive targets below the 24px minimum hit size and off-screen signal-bearing nodes;focus_orderreturns the keyboard Tab cycle order, honoring modal focus traps.Visual Regression & Filmstrips:
match_screenshotperforms pixel-by-pixel comparison against a baseline PNG with tolerance, budget, and masks;film_uicaptures animated frames with motion enabled, composing a captioned filmstrip.Full Scenarios:
run_scenarioexecutes a description with optional interaction steps and bundles assertions for emitted intents, accessibility, ARIA snapshot, screenshot, and queries in one pass.Baseline Security: Reads baseline PNGs only from a configurable root directory, preventing path traversal even via symlinks.
Structured Outputs: Many tools provide typed
outputSchema; visual results include downscaled previews and resource links to avoid large responses.
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: Windows AppShots
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.
Where baselines are read from
Two tools take a path to a PNG on disk: match_screenshot, and
run_scenario through its expect.screenshot.baseline. That path arrives
inside a tool call, which means it comes from an agent — and an agent is only
as trustworthy as whatever it last read. So the server reads baselines from
one directory and no further.
By default that directory is the working directory the MCP client launched
the server in, which is the project being worked on. Set
FENESTRA_MCP_BASELINE_ROOT to point somewhere else. Paths in a tool call
may be relative to the root or absolute inside it; anything that resolves
outside — including a symlink inside the root pointing out of it — is
refused, and the refusal names the root so a legitimate call can be retried.
A root that is not a readable directory stops the server from starting rather
than silently widening to the default.
The diff image a failed comparison returns draws the rendered pixels, never the baseline's, for the same reason.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityBmaintenanceA Windows-only MCP server for controlling a real browser using native screenshots, Windows accessibility, and node-interception mouse/keyboard input, without CDP or Playwright.4
- AlicenseNot gradedqualityBmaintenanceMCP server that captures a Windows application's pixels and bounded UI Automation tree with provider-exposed text for Codex inspection. It supports capture, listing, retrieval, and watcher control commands.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that lets an LLM see and drive any running Windows app: attach a window, screenshot it, read its UI Automation tree, and send clicks, typed text, and key presses with pixel coordinates.
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control Windows by clicking, typing, and navigating with a visible cursor overlay, using a layered approach (native UIA, browser CDP, pixel fallback) for reliable interaction.1
Related MCP Connectors
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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