Electron MCP Server

io.github.YawLabs由 GitHub 账号 YawLabs 发布v1.7.1更新于 Oct 31, 2026

Electron.js MCP server — IPC scaffolding, security auditing, build tooling for AI assistants

已验证STDIO仅桌面开发者工具安全与监控

概览

AI 生成的概览

Electron 开发辅助服务器:生成 IPC、preload 桥接与项目配置,审计安全与性能,并解释特定版本的 Electron 行为。

可以做什么
  • 生成 IPC 通道、preload 桥接、窗口管理器和完整项目脚手架
  • 按 Electron 安全建议审计代码、检查危险写法并审查 IPC 安全
  • 生成 CSP、fuses、自动更新与深度链接配置
  • 根据 electron-builder、forge 或 packager 的输出诊断构建与打包错误
  • 规划版本迁移并扫描已弃用或已移除的 API
  • 解释 Electron 概念并报告内置知识覆盖的 Electron 版本
适用场景
适合在开发或加固 Electron 桌面应用时,让助手给出正确且与版本匹配的样板代码和安全建议,而不是泛泛而谈。也适合审查现有的主进程与 preload 代码、规划 Electron 大版本升级,或排查打包失败。
运行要求
需要一个能启动 stdio 服务器的本地 MCP 客户端,以及 Node.js 20.11 或更高版本以通过 npx 运行该 npm 包。无需 API 密钥或环境变量。Windows 上需用 cmd /c 包装启动命令。另有可选的沙箱变量 ELECTRON_MCP_SANDBOX 与 ELECTRON_MCP_RUNTIME,但并非必需。
安装前请注意
工具被描述为只读,仅对传入的参数进行计算,因此你提供的代码、配置和构建日志会作为工具输入发送给助手。生成的脚手架和配置属于建议,使用前应自行审查;内置知识有验证日期,可能落后于较新的 Electron 大版本。可选的沙箱设置若未将 ELECTRON_MCP_RUNTIME 设为 oam,可能静默回退为无沙箱运行。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Electron MCP Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@yawlabs/electron-mcp

[Add to Yaw MCP]

One click adds this to your local Yaw MCP config so it's available in every Yaw Terminal session. Or install manually below.

[npm version] [License: MIT] [GitHub stars]

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_channel generates main handler + typed preload bridge + contextBridge exposure + renderer usage in one call. No nodeIntegration: true, no direct ipcRenderer on window.
  • 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/latest/tutorial/security that can be verified from static inputs. (The 20th, session permission handling, needs runtime context and is flagged in the report footer.) Not a vibe check.
  • Version-aware migration — electron_migrate_version knows the breaking changes from v28 through v41 and tells you exactly what will break when you bump. electron_check_deprecated_apis scans your code for APIs that were removed.
  • Build errors, explained — electron_diagnose_build_error parses electron-builder/forge output and identifies root causes: Apple signing, Windows code signing, native module rebuilds, ASAR packaging, entitlements, path quoting.
  • Modern production hardening — electron_configure_fuses generates the @electron/fuses block for disabling unused runtime features (cookie encryption, Node CLI flags, legacy load behaviour). electron_configure_csp generates a CSP that actually works with your bundler and framework instead of blocking your own assets.
  • Knowledge freshness is declared, not assumed — every response includes a _Knowledge last verified YYYY-MM-DD (Electron vN stable)_ footer. Call electron_knowledge_version to get the metadata directly. If your Electron is newer than the footer, the tool tells you.
  • Read-only, no side effects — every tool declares readOnlyHint, destructiveHint: false, idempotentHint: true, so MCP clients can skip confirmation. The tools never touch your filesystem, never run code, never call exec.
  • Zero runtime dependencies — ships as a single bundled file. No 5-minute node_modules install, no electron or electron-builder installed as dependencies to inflate your project. The published package's dependencies is {}; Dependabot alerts on this repo are against devDependencies. Most of that surface (the MCP SDK's HTTP transport: hono, express, ip-address, qs) is not in the bundle — this server uses stdio only — but fast-uri, which the SDK's default JSON Schema validator (ajv) needs, is inlined into dist/index.js, so an advisory against it is cleared by a new release, not by reinstalling.

Quick start

No API keys. No environment variables required. Just install it.

1. Create .mcp.json in your project root

macOS / Linux / WSL:

json
{  "mcpServers": {    "electron": {      "command": "npx",      "args": ["-y", "@yawlabs/electron-mcp@latest"]    }  }}

Windows:

json
{  "mcpServers": {    "electron": {      "command": "cmd",      "args": ["/c", "npx", "-y", "@yawlabs/electron-mcp@latest"]    }  }}

Why the extra step on Windows? Since Node 20, child_process.spawn cannot directly execute .cmd files (that's what npx is on Windows). Wrapping with cmd /c is the standard workaround.

2. Restart and approve

Restart Claude Code (or your MCP client) and approve the Electron MCP server when prompted.

That's it. Now ask your AI assistant:

"Add a file picker to my Electron app"

"Audit my BrowserWindow config for security issues"

"My electron-builder is failing with a signing error — here's the output"

"Generate a CSP for my Vite + React renderer"

"What breaks if I upgrade from Electron 32 to 41?"

Alternate MCP clients

ClientConfig file
Claude Code.mcp.json (project root) or ~/.claude.json (global)
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor~/.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
VS Code.vscode/mcp.json

Use the same JSON block shown above in any of these.

Runtime and sandbox

The launcher prefers the oam runtime when a current one (0.19.1 or newer) is installed, and falls back to the Node that is already running it. Nothing to configure; both serve the same server.

Opt-in sandbox. With oam, the server can run under --permission with no grants at all: no filesystem, no child processes, no network, no environment. This server needs none of them (every tool computes over its arguments and returns markdown), so the sandbox costs no capability and turns anything the server merely happens not to use into a runtime refusal. Add an env block to whichever config block you used above (npx on macOS / Linux / WSL, cmd /c npx on Windows):

json
"env": { "ELECTRON_MCP_SANDBOX": "1", "ELECTRON_MCP_RUNTIME": "oam" }

The second variable is what makes the sandbox required: it needs a freshly spawned oam (0.19.1 or newer) to apply it, and with ELECTRON_MCP_RUNTIME=oam a missing or unusable oam is a startup error instead of an unsandboxed server. Under the default ELECTRON_MCP_RUNTIME=auto the launcher still serves in that case, without --permission, and prints a line on stderr saying so and how to fix it. Use auto when you want the sandbox where available; use oam when you want to be sure.

How to tell it took: every path that serves without the sandbox after it was asked for prints an electron-mcp: line on stderr containing runs WITHOUT --permission, plus how to fix it (most MCP clients show server stderr in their logs). When the sandbox is applied there is no such line. To confirm from a shell:

sh
ELECTRON_MCP_SANDBOX=1 ELECTRON_MCP_RUNTIME=oam npx -y @yawlabs/electron-mcp@latest --version

The version on stdout, exit 0, and no WITHOUT --permission line means a sandboxed oam served it; with ELECTRON_MCP_RUNTIME=oam set, a missing oam is an error instead.

It is off by default because it is a behaviour change: a future version that legitimately needs a capability should fail in review, not in your session. Two more things to know:

  • If the launcher itself is already running under oam (Yaw MCP does this), the sandbox spawns a second oam (the host's own binary, if nothing newer is installed), because only a fresh one can apply a process-level flag. That adds one runtime boot to startup, plus a --version probe per oam binary the launcher finds.
  • Request the sandbox through the variable, not by putting --permission on the host command: a launcher running under bare --permission cannot read its environment, so every ELECTRON_MCP_* setting would be ignored. A host that also grants --allow-env (with --allow-child-process) does let them through; then a handoff to Node (ELECTRON_MCP_RUNTIME=node, or a host oam below the floor) runs node --permission with no grants, because oam otherwise copies the host's --permission / --allow-* flags into Node's NODE_OPTIONS and Node refuses oam-only ones such as --allow-env= (exit 9, nothing served); the launcher prints one electron-mcp: line saying so. (The direct, no-launcher form is oam --permission run <path>/dist/index.js.)
VariableEffect
ELECTRON_MCP_RUNTIME=autonewest usable oam, else Node (default)
ELECTRON_MCP_RUNTIME=oamnewest usable oam, else exit with an error
ELECTRON_MCP_RUNTIME=nodealways Node (the sandbox is not applied, and the launcher says so)
ELECTRON_MCP_SANDBOX=1run oam under --permission with no grants; true / yes / on also enable it, 0 / false / no / off disable it
OAM_BIN=/path/to/oamuse this oam when it is usable, before discovery
OAM_INSTALL_DIR=/diroam's own install-target variable; when set, <dir>/oam is searched before the default install locations and PATH

Both values are case-insensitive and trimmed. A value the launcher does not recognise is never a silent no-op: it is treated as the default (auto; sandbox off) and named on stderr, so a typo cannot quietly turn "sandbox required" into "sandbox if convenient".

Tools (18)

IPC & process architecture (5)

  • electron_scaffold_ipc_channel — Generate a complete IPC round-trip: main handler, preload bridge, contextBridge exposure, TypeScript types, renderer usage.
  • electron_generate_preload_bridge — Generate a secure preload.ts with contextBridge for multiple API methods.
  • electron_audit_ipc_security — Analyze preload/main/renderer code for IPC security issues (direct ipcRenderer, missing sender validation, channel injection).
  • electron_generate_window_manager — Multi-window management with lifecycle tracking and inter-window communication.
  • electron_explain_process_model — Version-aware explanation of Electron's multi-process architecture (main vs renderer vs utility, what lives where).

Security (4)

  • electron_audit_security — Audit against 19 of the 20 official security recommendations that can be detected from static inputs: BrowserWindow, preload, CSP, remote content, sandbox. (Session permission handling is the 20th; it needs runtime context and is flagged in the report footer.)
  • electron_configure_fuses — Generate @electron/fuses config for production hardening (disable cookie encryption fallback, Node CLI flags, legacy load behaviour).
  • electron_configure_csp — Generate a Content Security Policy aware of your bundler (Vite/webpack/Parcel) and framework (React/Vue/Svelte).
  • electron_lint_security — Static analysis for dangerous patterns: shell.openExternal with untrusted input, @electron/remote, enableBlinkFeatures, etc.

Build & distribution (4)

  • electron_diagnose_build_error — Parse electron-builder/forge errors and identify root causes: code signing, native modules, ASAR, entitlements, path quoting.
  • electron_configure_auto_update — Generate complete electron-updater setup with events and platform-specific signing concerns.
  • electron_configure_deep_linking — Custom protocol registration across Windows/macOS/Linux.
  • electron_scaffold_project — Generate a secure, modern Electron project scaffold (contextIsolation: true, sandbox: true, preload, TypeScript, chosen framework).

Migration & compatibility (2)

  • electron_migrate_version — Migration checklist between Electron versions with breaking changes, deprecated APIs, platform support changes.
  • electron_check_deprecated_apis — Scan source for APIs deprecated or removed in the target Electron version.

Performance (1)

  • electron_audit_performance — Detect the 7 official Electron performance anti-patterns (sync I/O on main, eager loading of heavy modules, etc).

Reference (2)

  • electron_explain_concept — Authoritative explainer for 8 topics: process model, context isolation, sandbox, IPC, ASAR, fuses, code signing, build tools.
  • electron_knowledge_version — Metadata about the embedded knowledge: last-verified date, Electron stable at verification, supported version range. Call this if an agent is unsure whether advice is current.

Knowledge freshness

Tools that depend on embedded Electron knowledge (breaking changes, deprecated APIs, security recommendations, anti-patterns, concept explanations) append a footer like:

_Knowledge last verified 2026-04-13 (Electron v41 stable). For anything newer, check https://releases.electronjs.org._

Call electron_knowledge_version to get the metadata directly. When a new Electron major releases, KNOWLEDGE.md documents the update process.

Examples

Add a file picker the safe way

> "Add a file picker that lets the renderer read the selected file's contents"→ electron_scaffold_ipc_channel({    direction: "renderer-to-main",    channel: "open-file",    returns: "string"  })  # Generates: main handler (dialog.showOpenDialog + fs.readFile),  # preload bridge (contextBridge.exposeInMainWorld),  # TypeScript types for window.api.openFile,  # renderer usage example

Audit an existing app's security

> "Check my Electron app for security issues — here's my main.ts and preload.ts"→ electron_audit_security({ mainCode: "...", preloadCode: "..." })  # Returns a graded report against 19 of 20 recommendations  # (session permissions needs runtime context),  # flagging nodeIntegration, missing contextIsolation,  # unsandboxed renderers, loose CSP, and more.

Diagnose a failing signing step

> "electron-builder is exiting with: errSecInternalComponent — help"→ electron_diagnose_build_error({ output: "..." })  # Identifies macOS Keychain Access issue with code signing,  # returns specific `security` CLI fix and CI reconfiguration.

Plan an Electron major bump

> "We're on Electron 32. What breaks if we jump to 41?"→ electron_migrate_version({ from: 32, to: 41, sourceCode: "..." })  # Returns breaking changes across each major (33, 34, 35, ...),  # deprecated APIs found in your code,  # platform support changes,  # recommended test plan.

Generate a real CSP

> "Generate a CSP for my Vite + React renderer that actually works"→ electron_configure_csp({    bundler: "vite",    framework: "react",    allowedOrigins: ["https://api.mycompany.com"]  })  # Returns a CSP that accounts for Vite's dev-mode WebSocket,  # React's inline runtime, and blocks everything else.

Troubleshooting

"Tool output is cut off / too long"

  • A few scaffolders produce >10KB of generated code. Ask the assistant to regenerate with a narrower scope (single channel vs multi-channel bridge; one framework scaffold vs comparison).

"The advice is wrong for my Electron version"

  • Check electron_knowledge_version. If Electron has shipped a new major since the verified date, cross-check with the official breaking-changes page linked there.
  • File an issue on the repo with the specific tool + version + expected vs actual. Knowledge updates ship in minor versions.

"Windows: MCP server doesn't start"

  • Use the cmd /c npx ... pattern from the Quick start section. Node 20+ can't spawn .cmd files directly.

Requirements

  • Node.js 20.11+
  • No runtime dependencies

Contributing

bash
git clone https://github.com/YawLabs/electron-mcp.gitcd electron-mcpnpm installnpm run lint       # Biome checknpm run lint:fix   # Auto-fixnpm run build      # tsc + esbuild bundlenpm test           # node --test

See CONTRIBUTING.md for the full workflow, including release process.

License

MIT

[Follow @YawLabs on X]

来源:README.md,提交 380010e

工具

18

electron_scaffold_ipc_channel

Scaffold IPC channel

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.

输入参数argsdirection必填returnTypechannelName必填description必填apiNamespace

electron_generate_preload_bridge

Generate preload bridge

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.

输入参数methods必填namespace

electron_audit_ipc_security

Audit IPC security

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.

输入参数mainCodepreloadCoderendererCode

electron_generate_window_manager

Generate window manager

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.

输入参数windows必填persistState

electron_explain_process_model

Explain Electron process model

Get a clear, version-aware explanation of Electron's multi-process architecture. Covers the main process, renderer processes, preload scripts, utility processes, contextBridge, and how they interact. Useful for understanding the mental model before building features.

输入参数topic必填electronVersion

electron_audit_security

Audit app security

Audit an Electron app against the official security checklist. Covers 19 of the items that can be detected from static inputs (BrowserWindow configuration, main process code, package.json, preload, HTML): HTTPS-only content, nodeIntegration, contextIsolation, sandbox, webSecurity, CSP, allowRunningInsecureContent, experimentalFeatures, enableBlinkFeatures, raw ipcRenderer exposure, direct window assignment, @electron/remote, supported Electron version, shell.openExternal validation, file:// usage, <webview> tag, will-navigate handler, setWindowOpenHandler, and IPC sender validation. The remaining checklist items (session permissions, fuse configuration) require runtime / packaging context and are flagged in the report's footer.

输入参数mainCodehtmlContentpackageJsonpreloadCodeelectronVersionbrowserWindowConfig

electron_configure_fuses

Configure Electron fuses

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.

输入参数level必填customFuses

electron_configure_csp

Configure Content Security Policy

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.

输入参数bundlerneedsEvalexternalImagesneedsInlineStylesexternalConnections

electron_lint_security

Lint for security issues

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.

输入参数code必填fileType

electron_diagnose_build_error

Diagnose build error

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.

输入参数platformbuildToolerrorOutput必填

electron_configure_auto_update

Configure auto-update

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.

输入参数provider必填s3BucketgenericUrlgithubRepogithubOwnerautoDownloadautoInstallOnQuit

electron_configure_deep_linking

Configure deep linking

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.

输入参数routesprotocol必填singleInstance

electron_scaffold_project

Scaffold Electron project

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.

输入参数name必填featuresbuildToolframework

electron_migrate_version

Migrate Electron version

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.

输入参数targetVersion必填currentVersion必填

electron_check_deprecated_apis

Check for deprecated APIs

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.

输入参数code必填electronVersion

electron_audit_performance

Audit performance

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.

输入参数mainCodepackageJsonpreloadCoderendererCode

electron_explain_concept

Explain Electron concept

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.

输入参数concept必填

electron_knowledge_version

Get embedded-knowledge version

Return metadata about the embedded Electron knowledge used by this MCP's analysis tools -- the date it was last verified against official Electron docs, the current Electron stable version at that time, and the supported version range for migration/deprecation checks. Call this when you need to know whether the advice from other tools is current.

无需输入参数。

版本历史

6
  1. v1.7.1最新Oct 31, 2026
  2. v1.7.0Oct 9, 2026
  3. v1.6.5Oct 7, 2026
  4. v1.6.4Oct 6, 2026
  5. v1.6.3Sep 30, 2026
  6. v1.6.2Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分