Agent-native MCP server for driving, inspecting, and asserting on real Electron desktop apps.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Agentic UX testing for real Electron apps. Cue the app, prove the experience, and return bounded evidence through MCP.
Electron Stagewright is a Model Context Protocol (MCP) server that lets Claude Code, Codex, Cursor, Cline, Aider, and any MCP-compatible agent operate real Electron applications. Launch or attach, inspect the accessibility tree, interact through stable refs, assert behavior with retrying expectations, and capture diagnostics without turning every check into another agent round-trip.
Browser automation already has mature agent tooling. Electron adds a different boundary: the main process, renderer surfaces, native menus and dialogs, multiple windows, packaged runtimes, and signed release artifacts. A browser API exposed through MCP does not cover that whole product.
Electron Stagewright is designed agent-first from the primitive level up:
get_state returns the full state envelope in one call β visible, enabled, checked, focused, disabled, aria-expanded, aria-busy, aria-invalid. No 4-call chain to decide if a button is clickable.wait_for_state accepts composite predicates β { visible: true, enabled: true, focused: false } evaluated atomically by the server. One call replaces three.recently_changed elements β agents focus reasoning on what differs from the last view instead of reprocessing the whole tree.electron_snapshot({ since: 'last' }) returns only deltas. Fewer APIs to remember.electron_snapshot({ format: 'text' }) renders one line per element ([3] textbox "Email" value="" focused) with only non-default state, cutting snapshot tokens 5-10x versus the JSON shape when the agent just needs to look.expect_* primitives replace read-compare-retry chains β electron_expect_text({ ref, equals: 'Welcome', timeoutMs: 5000 }) is one call, not five.electron_find queries the accessibility tree semantically β { role: 'button', name_contains: 'Submit', visible: true } β no CSS selectors, no XPath, no guessing.The server treats three Electron-specific workflows as first-class:
electron_attach connects to apps exposing a loopback CDP endpoint, and electron_inject can attach to a running main process via the Node Inspector handshake when no debug flag was arranged up front.trace.zip but designed for LLM agent sessions: a timeline of tool calls, arguments, results, timings, and token estimates β replayable against a fresh app instance, with budgets so agents can cap runaway loops..app bundles β codesign, Gatekeeper assessment, autoUpdater feed inspection, URL-scheme declaration checks, and crash reporter machinery. The full production surface, not just dev.Microsoft's official Playwright MCP team explicitly declined to support Electron ("you can release your own server for Electron" β Pavel Feldman, lead). This project takes the invitation seriously.
The default launch transport uses Playwright and an Electron runtime. For a private setup in the current project, keep the server local to that project and pin the release-tested package set:
Before configuring an MCP host, run the same package set once in a terminal to prime a fresh npx
cache. Electron may print binary-download progress to stdout during this first install, which would
corrupt an MCP stdio session; the terminal bootstrap completes the install before the host starts it.
The default Claude Code scope is local: it is available only in the current project and stays out
of unrelated workspaces. To share a reviewed configuration with a team, use --scope project,
which writes the same mcpServers shape to .mcp.json. See the
Claude Code MCP scopes for the host-specific behavior.
To verify a host before pointing it at your app, add the pinned
@electron-stagewright/demo@0.1.0 package and use the demo guide. The demo
is opt-in, so a normal core installation neither loads nor depends on it.
For local development, build the checkout and point your MCP host at the built CLI:
Shared project .mcp.json shape:
Then from any MCP-compatible agent:
The full tool list β every tool, its parameters, and operation type β is in
TOOL-REFERENCE.md, generated from the live dispatcher manifest
(pnpm docs:tools).
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/core)<a href="https://allmcps.com/mcp/core"><img src="https://allmcps.com/api/badge/core?style=directory" alt="Core on AllMCPs" /></a>