electron-mcpCAUTION
Electron.js MCP server — IPC scaffolding, security auditing, build tooling, and development intelligence for AI assistants
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://yaw.sh/mcp/install?name=Electron&command=npx&args=-y%2C%40yawlabs%2Felectron-mcp&description=Electron.js%20development%20intelligence%20-%20IPC%2C%20security%2C%20builds%2C%20migration&source=https%3A%2F%2Fgithub.com%2FYawLabs%2Felectron-mcp)
One click adds this to your local Yaw MCP config so it's available in every Yaw Terminal session. Or install manually below.
[](https://www.npmjs.com/package/@yawlabs/electron-mcp) [](https://opensource.org/licenses/MIT) [](https://github.com/YawLabs/electron-mcp/stargazers)
Make your AI assistant actually good at Electron. 18 tools for the stuff AI models hallucinate about: context isolation, preload bridges, fuses, CSP, signing, auto-updates, breaking changes between majors, and the 20 official security recommendations.
This is not a runtime debugger. It is a development-intelligence layer that turns "write me some Electron code" from hit-or-miss into correct-on-the-first-try.
Built and maintained by Yaw Labs.
Why this one?
Other Electron MCP servers give your model a shell and hope. This one doesn't.
- IPC that isn't a security hole —
electron_scaffold_ipc_channelgenerates main handler + typed preload bridge + contextBridge exposure + renderer usage in one call. NonodeIntegration: true, no directipcRendereronwindow. - The official security recommendations, enforced —
electron_audit_securitychecks yourBrowserWindowconfig, preload scripts, and CSP against 19 of the 20 items from electronjs.org/docs/latest/tutorial/security that can be verified from static inputs. (The 20th, session permission handling, needs runtime cont
51b8f67ca909OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add electron-mcp -- npx -y @yawlabs/[email protected]
Exposed tools (16)
13 read · 1 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
electron_audit_ipc_security | read | Analyze preload script and main process IPC code for security issues. Checks for: raw ipcRenderer exposure, missing sender validation, synchronous IPC usage, listener memory leaks, prototype pollution via contextBridge, and insecure channel patterns. Provide the actual code content to analyze. |
electron_audit_performance | read | Analyze Electron app code for 7 official performance anti-patterns: eager module loading, synchronous main-process operations, excessive BrowserWindows at startup, unnecessary polyfills, CDN-loaded assets, heavy preload scripts, and unbundled dependencies. Returns specific fixes. |
electron_check_deprecated_apis | read | Scan code for usage of deprecated or removed Electron APIs. Returns a list of deprecated APIs found with their replacements and the version they were deprecated/removed in. |
electron_configure_auto_update | write | Generate complete auto-update configuration using electron-updater. Produces main process setup, update event handling, renderer notification UI code, and platform-specific signing requirements. Supports GitHub releases, S3, and generic HTTP update servers. |
electron_configure_csp | read | Generate a Content Security Policy for an Electron app. Accounts for the bundler (Vite, webpack), framework (React, Vue, Svelte), and whether dev-mode exceptions are needed. Returns both meta-tag and session.webRequest approaches. |
electron_configure_deep_linking | read | Generate complete custom protocol / deep linking setup for Electron. Produces protocol registration, URL handling in both single-instance and multi-instance modes, platform-specific configuration (macOS Info.plist, Windows registry, Linux .desktop), and electron-builder/forge config. |
electron_configure_fuses | read | Generate @electron/fuses configuration to harden your Electron app. Fuses are compile-time toggles that disable dangerous Electron features (like ELECTRON_RUN_AS_NODE, NODE_OPTIONS) and cannot be re-enabled by end users. Essential for production apps. |
electron_diagnose_build_error | read | Diagnose Electron build/packaging errors from electron-builder, electron-forge, or electron-packager output. Identifies common failures: code signing errors, native module rebuild issues, ASAR packaging problems, missing platform-specific configuration, and __dirname path resolution bugs. |
electron_explain_concept | destructive | Get a clear, authoritative explanation of an Electron concept. Counters outdated tutorial content with accurate, version-aware information. Covers: process model, context isolation, sandbox, IPC, ASAR, fuses, code signing, and build tool comparison. |
electron_explain_process_model | destructive | Get a clear, version-aware explanation of Electron |
electron_generate_preload_bridge | read | Generate a complete, secure preload.ts with contextBridge.exposeInMainWorld for multiple API methods. Produces the preload script, TypeScript declarations for window.electronAPI, and security best practices. Use this when you need to expose several main-process APIs to the renderer at once. |
electron_generate_window_manager | read | Generate multi-window management boilerplate for Electron apps. Creates a WindowManager class that handles window lifecycle, inter-window communication, window state persistence, and proper cleanup. Supports common patterns like main + child windows, modal dialogs, and detached panels. |
electron_lint_security | read | Static analysis of Electron code for dangerous patterns: shell.openExternal with user input, @electron/remote usage, disabled webSecurity, missing navigation restrictions, unrestricted window creation, and other OWASP-style vulnerabilities specific to Electron. |
electron_migrate_version | read | Generate a migration checklist for upgrading between Electron versions. Lists all breaking changes, deprecated APIs, and required code modifications between the current and target versions. |
electron_scaffold_ipc_channel | read | Generate complete IPC boilerplate for a new feature: ipcMain handler in the main process, preload bridge function with contextBridge, TypeScript type declarations, and renderer-side usage example. Produces all the files needed for a secure, type-safe IPC channel. |
electron_scaffold_project | read | Generate a complete, secure, modern Electron project scaffold. Includes proper process separation, TypeScript configuration, framework integration, build tooling, security defaults, and an example IPC channel. Produces a full project structure ready to develop. |
Trust audit
CAUTIONgrade B · trust 83/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (3 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (15)
const SSH = 'ssh -i ~/.ssh/gh_woods -o IdentitiesOnly=yes';
electron_explain_concept, electron_explain_process_model
return new Function(`${pieces}\nreturn runtimePlan;`)() as RuntimePlan;return new Function(`${pieces}\nreturn { pickNewest, floor: OAM_MIN };`)() as {return new Function(`${pieces}\nreturn fallbackInProcess;`)() as FallbackInProcess;const parse = new Function(
const parse = new Function(
${features.includes("tray") ? `\nfunction createTray(win: BrowserWindow): Tray {\n const icon = nativeImage.createFromPath(path.join(__dirname, "../../resources/icon.png"));\n const tray = new Tray(it("#1 does not flag http://0.0.0.0 as insecure (wildcard-bind exclusion)", async () => {const result = await tool({ mainCode: `win.loadURL("http://0.0.0.0:5173");` });assert.strictEqual(statusOf(result, 1), "PASS", `http://0.0.0.0 must not FAIL #1; got:\n${result}`);@biomejs/biome, @modelcontextprotocol/sdk, @types/node, esbuild, postject, typescript, zod
- **The bundled MCP SDK moves from 1.30.0 to 1.32.1** (GHSA-6qxp-vccf-f47h, high: the SDK's OAuth client could send credentials to an authorization server chosen by the MCP server; this server does no
- **The official security recommendations, enforced** — `electron_audit_security` checks your `BrowserWindow` config, preload scripts, and CSP against 19 of the 20 items from [electronjs.org/docs/late
→ Claude calls `electron_audit_security` against 19 of the [20 official recommendations](https://www.electronjs.org/docs/latest/tutorial/security) (session permissions is the 20th -- needs runtime con
Gates applied: no_behavioural_pass.
51b8f67ca909full audit observations/trust-audit/mcp-server/yawlabs__electron-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 51b8f67ca909 | CAUTION | B | 83 | first audit |
Questions
What is the electron-mcp MCP server?
Electron.js MCP server — IPC scaffolding, security auditing, build tooling, and development intelligence for AI assistants
What tools does electron-mcp expose?
16 in total: 13 read-only, 1 that write, and 2 that can delete or overwrite (electron_explain_concept, electron_explain_process_model). Every one is listed on this page with its risk.
Is electron-mcp safe to connect to an agent?
With care. The audit graded it B (83/100) and found 15 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does electron-mcp need?
It reads GH_TOKEN, GITHUB_TOKEN and SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does electron-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @yawlabs/electron-mcp at 1.7.0.
How current is this page?
The grade is for one exact copy of the source (51b8f67ca909), read on 2026-10-11. The repository is watched and re-audited when it changes.