core — Electron MCP server: what it does, how to install
An MCP server that drives real Electron apps: it launches or attaches, reads the accessibility tree, clicks stable refs and asserts state with retries.
claude mcp add core -- npx -y @electron-stagewright/coreWhat core does
The server gives an agent a handle on a running Electron app. It can start one or join an existing process, inspect the accessibility tree, and interact through element references that survive a re-render. Assertions use expect_* primitives with a timeout, so the usual read-compare-retry loop collapses into a single call.
Tools include electron_launch, electron_attach, electron_snapshot, electron_find, get_state and wait_for_state. Errors arrive with hints and near-miss refs, each response reports its token cost, and get_state returns the whole state of an element at once: visible, enabled, checked, focused. A snapshot marks what changed since the previous one and can return just the delta. Session traces can be replayed against a fresh app instance, with token budgets to stop runaway loops. Packaged builds get their own coverage: signing, Gatekeeper assessment and the autoUpdater feed.
Node.js 24 or newer is required. On Linux the server also needs a display, either DISPLAY, WAYLAND_DISPLAY or xvfb-run -a. Electron fetches its binary on first use rather than at install time, and that download writes a progress line to stdout, which would land in the MCP protocol stream. Fetch it beforehand with install-electron, then run doctor and check for exit code 0. Keep the --package list identical across commands, since npx caches each list on its own.
What it helps with
- launch an Electron app from an agent session and list its windows
- confirm a button became enabled without a chain of follow-up calls
- locate an element by role and partial name instead of a CSS selector
- attach to a dev server that is already running, without a restart
- check signing and packaging of a finished
.appbundle
Example prompts for the agent
- Launch the app and show me the accessibility tree of the main window.
- Find the button whose name contains "Submit" and verify it is enabled within 5000 ms.
- Attach to the running dev server and diff the snapshot against the last one.
How to install core
Platform CLI
claude mcp add core -- npx -y @electron-stagewright/corePlatform CLI
codex mcp add electron-stagewright-core -- npx -y @electron-stagewright/coreConfig file
{
"mcpServers": {
"electron-stagewright-core": {
"command": "npx",
"args": [
"-y",
"@electron-stagewright/core"
]
}
}
}Config file
{
"servers": {
"electron-stagewright-core": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@electron-stagewright/core"
]
}
}
}Platform CLI
gemini mcp add electron-stagewright-core npx -y @electron-stagewright/coreStep by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about core
How do I install core in Claude Code?
Run claude mcp add core -- npx -y @electron-stagewright/core. Then check claude mcp list or run /mcp inside a session to confirm it connected.
What does core do?
It controls a real Electron application over MCP: starting or attaching to a process, reading the accessibility tree, clicking elements and asserting their state with retries.
What should I set up before configuring the MCP host?
Fetch the Electron binary with install-electron and run doctor first. Otherwise the download on first launch prints a progress line into stdout, and that line reaches the MCP protocol stream.