# fenestra-mcp

Renders native Rust interfaces headlessly and validates layouts in Claude Code. Enables AI agents to verify UI states from JSON descriptions without compiling code.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 14
- Author: richer-richard
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/richer-richard/fenestra
- Updated: 2026-09-19
- HTML: https://affpapa.org/en/nevibecode/mcp/fenestra-mcp

## What it does

The server connects Claude Code with the fenestra native graphics framework. Coding agents describe UI layouts using the fenestra JSON specification instead of writing Rust structs directly. From that JSON input, the engine constructs an element tree, calculates geometry using `taffy`, and outputs raw pixels with `vello` over `wgpu`. No browser or display server is needed.

Agents interact through specialized MCP tools, including `render_a2ui` for the Agent-to-UI specification and `film_ui` for animation inspection. The `film_ui` tool captures sequential frames into a single annotated filmstrip. That makes reviewing interactive state transitions straightforward.

Headless output produces deterministic images by enforcing fixed scaling and reduced motion. Because embedded typefaces only cover the Latin character set, checking CJK glyphs, emoji, and right-to-left scripts requires launching an actual operating system window.

## Requirements
- Needs: a prebuilt binary from the repository releases

## Install

### Claude Code (native platform)

**Install**
- The MCP registry has no launch command for it: see the repository README

## When to use it
- render native Rust user interfaces headlessly
- inspect layout states from JSON specifications
- generate motion filmstrips using `film_ui`
- evaluate layouts following the A2UI standard

## Example prompts
- Render the layout in `dashboard.json` and output a preview image
- Verify button styling with `render_a2ui` without opening a window
- Capture the screen transition into a filmstrip using `film_ui`

## Similar
- [fingerprint-failure-triage](https://affpapa.org/en/nevibecode/skills/fingerprint-failure-triage.md) — skill · 102400 installs
- [native-sdk](https://affpapa.org/en/nevibecode/skills/native-sdk.md) — skill · 1500 installs
- [OpenScreenShot](https://affpapa.org/en/nevibecode/mcp/openscreenshot.md) — MCP server · ★ 90
- [glass](https://affpapa.org/en/nevibecode/mcp/glass.md) — MCP server · ★ 20
- [PySide6 MCP](https://affpapa.org/en/nevibecode/mcp/pyside6-mcp.md) — MCP server · ★ 6
- [Agent Browser](https://affpapa.org/en/nevibecode/skills/am-will-agent-browser.md) — skill · 1200 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
