Electron MCP Server by amafjarkasi
MCP server for debugging Electron apps via Chrome DevTools Protocol. Start/attach processes, capture screenshots, read console errors & network logs, inspect DOM, evaluate JS, and automate UI — built for Cursor and other MCP clients.
Electron MCP Server is an open-source mcp server by amafjarkasi, written mainly in TypeScript, with 92 GitHub stars and the ISC license. Its code was last updated Oct 25, 2026.
Scan summary: scanned Nov 5, 2026 at commit 15f89d2. Seen able to run shell commands, run dynamic code, control a web browser, connect to databases. Scan policy
15f89d2 · Nov 5, 2026Findings (14)
- highHigh. Something risky that needs a close look before you install.code-execution issueDetails are available to the maintainer after claiming this listing.
- highHigh. Something risky that needs a close look before you install.code-execution issueDetails are available to the maintainer after claiming this listing.
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.@modelcontextprotocol/sdk@1.8.0: 5 known vulnerabilitiesGHSA-46jr-4wx8-v453, GHSA-6prh-2h8m-c8cw, GHSA-8r9q-7v3j-jr4g, GHSA-rvq5-wwqv-78pq, GHSA-w48q-cv73-mx4w
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.body-parser@2.2.0: 3 known vulnerabilitiesGHSA-27r3-jxmh-p828, GHSA-v422-hmwv-36x6, GHSA-wqch-xfxh-vrr4
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.electron@29.4.6: 45 known vulnerabilitiesGHSA-2p8c-gr87-2676, GHSA-3c8v-cfp5-9885, GHSA-3qxv-5xgr-q7w9, GHSA-4f78-qhmw-8j8m, GHSA-4p4r-m79c-wq3v +40 more
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.extract-zip@2.0.1: 2 known vulnerabilitiesGHSA-7pqw-9j4j-h8q3, GHSA-jmr9-qjv8-65gv
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.path-to-regexp@8.2.0: 2 known vulnerabilitiesGHSA-27v5-c462-wpq7, GHSA-j3q9-mxjg-w52f
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.ws@7.5.10: 1 known vulnerabilityGHSA-96hv-2xvq-fx4p
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.zod@3.24.2: 1 known vulnerabilityGHSA-mrhx-c7xc-m3w5
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
test/unit-helpers.test.mjs:1557 - lowLow. Minor, or common in normal tools. Shown for information.qs@6.14.0: 5 known vulnerabilitiesGHSA-4mjr-xmp4-gh2g, GHSA-6pq8-jhm2-2vcw, GHSA-6rw7-vpxm-498p, GHSA-q8mj-m7cp-5q26, GHSA-w7fw-mjwx-w883
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.package.json has a postinstall scriptnode scripts/ensure-electron.mjs
package.json - lowLow. Minor, or common in normal tools. Shown for information.No manifest declaring network access and environment variables (agent.json)
Network activity
Tools exposed (111)
start_appStart an Electron application with remote debugging enabled. Example: {"appPath":"D:/apps/my-electron-app","debugPort":9222}
attachAttach to an already-running Electron/Chromium app that was started with --remote-debugging-port. Example: {"debugPort":9222}
attach_by_pidAttach to a running Electron app by PID. Resolves the remote-debugging port from process arguments. App must have been started with --remote-debugging-port.
find_appsScan running OS processes for Electron apps. Returns PID, command, and any detected --remote-debugging-port / --inspect ports. Use to find targets for attach or attach_by_pid.
discover_appsScan a local port range (default: 9222-9235) for reachable Chrome DevTools Protocol endpoints. Useful when an app was started with an unknown debug port.
stop_appStop a process started by start_app, or detach bookkeeping for an attached session
list_appsList Electron applications managed or attached by this server
diagnoseSummarize process health: debug port reachability, target roles (page/worker/browser), recent console errors, and discovered local debug ports
doctorLocal environment health check: package/node/platform, Electron binary, env flags, managed process count, optional free-port sample (localhost bind only)
get_logsGet captured stdout/stderr logs for a managed Electron process
get_console_messagesGet buffered page console/log/exception messages captured via CDP
list_targetsList Chrome DevTools Protocol targets with role classification (page/worker/browser/other)
evaluateEvaluate JavaScript in an Electron target via CDP Runtime.evaluate. Defaults to the first page/renderer target.
screenshotCapture a PNG/JPEG screenshot of a page target via Page.captureScreenshot (optional CSS selector clips to element bounds)
save_screenshotCapture a screenshot and write it to a local file path (PNG/JPEG); optional selector clips to element
get_domRead documentElement.outerHTML or a specific element's outerHTML
query_selectorQuery DOM nodes with document.querySelectorAll and return tag/id/class/text summary
reloadReload a page target (or all page targets) in an Electron app
pausePause JavaScript execution on a target via Debugger.pause
resumeResume JavaScript execution on a target via Debugger.resume
cdp_commandExecute an arbitrary Chrome DevTools Protocol method on a target (Domain.method)
page_infoGet URL, title, readyState, and userAgent for a page target
navigateNavigate a page target to a URL (Page.navigate) and optionally wait for load
wait_forWait until a selector exists/hides/enables, text/URL/console matches, or node count is met
clickClick the center of a CSS selector via CDP Input.dispatchMouseEvent
hoverMove the pointer over a CSS selector (mouseover / hover menus). Does not click.
scrollScroll the page or an element. With a selector and no deltas, scrolls that element into view. With deltaY/deltaX, sends a mouse wheel at the element (or the viewport).
dragPress on fromSelector, move to toSelector, and release. Also sends an HTML5 drag with text/plain dataTransfer so drop listeners receive the payload. Pass data to override the source text.
type_textType text into the focused element (optionally click a selector first)
press_keyPress a key or shortcut (Enter, Escape, Tab, Arrow*, or a character) with optional modifiers
set_console_liveEnable/disable live MCP log notifications for console events (all levels when enabled; errors always notify)
get_cookiesRead cookies for the page (optionally filtered by URL)
set_cookieSet a cookie on the page (provide url or domain; defaults to current location.href). file:// pages usually reject cookies unless you pass an http(s) url or domain.
delete_cookieDelete a cookie by name. Provide url or domain, same as set_cookie. Defaults url to the page location.
get_storageRead localStorage or sessionStorage key/value pairs from the page
set_storageWrite localStorage or sessionStorage entries (optionally clear first)
clear_buffersClear buffered console messages, network events, process logs, ipc, and/or audits
snapshotAccessibility tree snapshot (roles/names) via CDP Accessibility.getFullAXTree — agent-friendly UI map
visionOne-shot app state: screenshot + page_info + recent console errors + network failures + windows
highlightScroll a CSS selector into view and paint a CDP overlay highlight (auto-hides when durationMs > 0)
click_axClick an element by accessibility name (optional role). Uses the AX tree, not CSS.
type_axFocus an element by accessibility name and insert text (optional clear)
handle_dialogAuto accept or dismiss the next JavaScript dialogs (alert/confirm/prompt). clear:true disarms.
assert_uiCheck url/title/text/selector/console-error budget/expression. Returns pass:false with per-check detail (does not throw on a failed check).
select_optionChoose an option in a <select> by value or visible label, then fire input and change.
act_and_verifyComposite action & assertion: performs a UI action (click, click_ax, type_text, type_ax), waits for network idle, verifies assertion (assert_ui), and captures a screenshot immediately if assertion fails.
triageOne-shot crash and failure triage: inspects page state, collects console errors, failed network calls, audit issues, log tail, and resolves the stack trace of the top exception.
save_storage_stateExport all page cookies, localStorage, and sessionStorage into a standardized JSON storage state artifact (Playwright-compatible format)
load_storage_stateRestore page cookies, localStorage, and sessionStorage from a saved JSON storage state file or payload
fill_formFill multiple input fields (text, password, checkboxes, radio buttons, dropdowns) and optionally submit in a single turn. Supports {{secret:VAR}} resolution and accessibility refs.
repro_bundlePackage a complete, self-contained repro investigation bundle (screenshot, MHTML DOM archive, HAR network replay, source-mapped stack traces, logs, and system/health info) into a zip artifact.
responsive_theme_matrixRun a multi-theme (dark/light) and multi-viewport responsive sweep, verifying UI layout, detecting text clipping/horizontal overflow, and capturing screenshot artifacts.
get_network_logGet buffered network request/response events captured via CDP Network domain. Supports optional filtering by tail, status code, failure status, or URL pattern.
get_response_bodyFetch body for a buffered network requestId (call after Network.loadingFinished)
block_urlsBlock URL patterns via Network.setBlockedURLs (e.g. *.analytics.com/*)
set_extra_headersSet extra HTTP headers for subsequent requests (Network.setExtraHTTPHeaders)
network_stubIntercept matching URLs via Fetch and fulfill or fail them. Replaces a rule with the same urlPattern. Pair with clear_network_stubs.
clear_network_stubsDisable Fetch interception and drop stub rules for this session
wait_network_idleWait until no network request is in flight and the log has been quiet for idleMs
export_harWrite the buffered network log as HAR 1.2 JSON (method, URL, status; no bodies). Also exposes the file as an artifact resource.
emulate_networkSet the page offline, or slow it with latency and throughput in bytes per second. clear:true restores a normal network. Does not change viewport, user agent, geolocation, or media; use emulate for those.
get_downloadsArm download capture and list files saved by the app. Requires inspectMain. The first call installs a will-download listener that writes into directory (default: OS temp) and suppresses the save dialog. Call it before the download starts, then call again for savePath.
network_failure_reportComposite network diagnostics: gathers all failed HTTP requests (status >= 400 or failed requests), fetches response bodies inline, and exports a HAR artifact.
offline_resilience_checkAudit how gracefully the Electron app handles network loss, high latency, or HTTP 500 server faults during interactions. Emulates faults, checks for crashes or unhandled rejections, restores network, and computes a Resilience Grade (A-F).
start_tracingStart Chrome DevTools Protocol performance tracing (pair with stop_tracing)
stop_tracingStop CDP tracing and write a JSON trace file (open in chrome://tracing)
get_performance_metricsRenderer Performance.getMetrics (JS heap, layout count, task duration, …)
start_cpu_profileStart V8 CPU profiler on a page target (pair with stop_cpu_profile)
stop_cpu_profileStop CPU profiler and write a .cpuprofile JSON file
heap_snapshotTake a V8 heap snapshot (.heapsnapshot) for leak investigation
diff_screenshotCapture (or compare) a screenshot against a baseline PNG; reports identical + byte similarity
get_audit_issuesBuffered Chromium Audits issues (cookie/CORS/mixed-content/deprecations) captured since attach
start_coverageStart JS precise coverage (optional CSS rule usage). Pair with stop_coverage.
stop_coverageStop coverage and return JS (and optional CSS) coverage data; optionally write JSON
set_file_inputSet files on an <input type=file> via DOM.setFileInputFiles (host paths)
emulateDevice metrics / UA / geolocation / media emulation (or clear=true to reset)
start_screencastStart Page.startScreencast; buffers up to maxFrames (ack frames). Pair with stop_screencast.
stop_screencastStop screencast; optionally write last frame PNG/JPEG to path
set_breakpointDebugger.setBreakpointByUrl (0-based lineNumber). Keep debugger enabled while BPs exist.
remove_breakpointDebugger.removeBreakpoint by breakpointId from set_breakpoint
resolve_stackResolve stack frames to source snippets (Debugger.getScriptSource / file://)
perf_auditLighthouse-lite: Performance.getMetrics + nav/paint timing + recent Audits issues (not full Lighthouse)
capture_mhtmlSave page as MHTML via Page.captureSnapshot. Also registers the file as an artifact resource.
virtual_clockEmulation.setVirtualTimePolicy — pause / advance virtual time (use budget when advancing)
print_pdfWrite the page to a PDF. Uses Page.printToPDF, and falls back to webContents.printToPDF when that method is missing (needs inspectMain). printBackground defaults to true. Also registers as an artifact resource.
perf_snapshotComposite performance profiler: coordinates start_tracing + start_cpu_profile + start_coverage, optionally captures an interaction or reload, stops all collectors, and bundles perf audit, metrics, and artifact URIs.
leak_checkMemory leak detector: triggers garbage collection, measures baseline DOM and heap counters, repeats an action or wait, runs GC again, and reports retained node/listener/heap growth.
evaluate_mainEvaluate JavaScript in the Electron main/node CDP target (use start_app with inspectMain:true for best results)
main_stateElectron main-process nervous system: windows, app paths, versions, metrics (requires inspectMain / node target)
ipc_tapInstall main-process IPC tap (ipcMain.handle wrap + webContents send/ipc-message). Requires inspectMain.
get_ipc_logDrain / read captured IPC entries after ipc_tap. Requires inspectMain.
find_installed_appsScan common install locations for packaged Electron apps (.app / exe / .desktop)
webcontents_topologyMap BrowserWindows / webContents (main) to CDP targets. Requires inspectMain.
open_deep_linkEmit Electron open-url and second-instance (requires inspectMain). Returns the URL the app recorded and mirrors it to window.__DEEP_LINK__.
focus_windowBring an Electron BrowserWindow forward (show, focus, moveTop). Requires inspectMain. Omit windowId to use the first window. Pass show:false to focus without showing a hidden window.
get_clipboardRead the OS clipboard. Returns text and, when present, imageDataUrl (PNG). Requires inspectMain.
set_clipboardWrite the OS clipboard. Pass text, imageDataUrl (a data:image/... URL), or both. Requires inspectMain.
set_permissionAllow or deny an Electron permission and grant it to the page via Browser.grantPermissions. Returns checked, the page's Notification.permission or equivalent. Requires inspectMain. Unlisted permissions are denied after the handler is installed.
set_window_boundsMove or resize a BrowserWindow. Omit a field to leave it unchanged. Requires inspectMain. Does not show a hidden window.
electron_security_auditRun security audit against Electron security recommendations (inspects webPreferences, sandbox, nodeIntegration, contextIsolation, setWindowOpenHandler, will-navigate guards, and binary fuses). Requires inspectMain.
ipc_invokeDirectly invoke a main-process IPC handle channel or emit an IPC event with arguments. Requires inspectMain.
ipc_schema_inferenceInfer IPC channel contracts, argument shapes, and generate TypeScript interfaces from captured IPC tap traffic. Requires inspectMain.
mock_electron_apiMock an Electron main-process API (e.g. dialog.showOpenDialog, shell.openExternal, app.getPath) with a custom return value or implementation. Requires inspectMain.
get_mock_callsGet recorded invocations and arguments for a mocked Electron API method
restore_electron_mocksRestore original implementations of mocked Electron APIs
get_application_menuInspect the native Electron application menu hierarchy, items, roles, accelerators, and enabled states
click_menu_itemTrigger a click on a native application menu item by path (e.g. 'File > Open File...'), id, or role
trigger_shortcutTrigger an Electron global shortcut accelerator (e.g. 'CommandOrControl+Shift+P')
get_process_healthWatchdog health check diagnosing renderer crashes (OOM, killed), window hangs, responsiveness, and process memory
ipc_fuzz_and_verifyFuzz test renderer-to-main IPC channels with boundary and malformed payloads (null, prototype pollution, path traversal, oversized buffers) and verify process crash resistance.
run_scriptAdvanced server-side step runner & workflow engine: executes an array of tool steps sequentially with templating ({{vars.x}}, {{steps[0].result.x}}, {{secret:KEY}}), conditional branching (if), assertions (expect), automatic retries, diagnostic failure screenshots, and optional export to Playwright
Automated result for the commit shown. See our scan policy. View the scan log
Maintainers can claim the listing to rescan, or dispute a result.
Electron MCP Server alternatives
View more →Similar mcp servers in Coding Agents, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Electron MCP Server (this page) amafjarkasi | 92 | ISC | Oct 25, 2026 | Scanned, no flagged issues |
| Context Mode mksglu | 33k | None found | Nov 1, 2026 | Not scanned yet |
| Serena oraios | 31k | None found | Oct 28, 2026 | Not scanned yet |
| Fastmcp PrefectHQ | 28k | Apache-2.0 | Nov 1, 2026 | Scanned, no flagged issues |
| Nuclear nukeop | 19k | AGPL-3.0 | Nov 1, 2026 | Scanned, no flagged issues |
| MCP For Beginners microsoft | 18k | MIT | Oct 30, 2026 | Scanned, no flagged issues |