electric-cherry
Provides tools for discovering Electron apps, connecting to renderer and main processes, automating renderer via CSS selectors, managing breakpoints, stepping, call stack, evaluating JavaScript in both processes, capturing network requests, and taking screenshots.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@electric-cherry connect to my Electron app and list all network requests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Electric Cherry MCP
Electron debugging MCP server for both processes:
Renderer process via Chrome DevTools Protocol (CDP)
Main process via V8 Inspector Protocol
Features
Electron app discovery + launch command generation (
electron_setup)Dual connect to renderer + main process (
electron_connect)Chrome/Electron connection management (
chrome,target, connection switching)Renderer automation by CSS selector (
query_elements,click_element,fill_element,navigate)JavaScript debugger controls (breakpoints, stepping, call stack, evaluation)
Network capture and filtering
Renderer screenshot + evaluation
Main-process evaluation via V8 Inspector
Related MCP server: electron-mcp-server
Requirements
Node.js 20+
macOS (for
electron_setupapp discovery in/Applications)
Install
pnpm install
pnpm buildRun
node build/src/index.jsConfigure as MCP server
{
"mcpServers": {
"electric-cherry": {
"command": "node",
"args": ["/absolute/path/to/electric-cherry/build/src/index.js"]
}
}
}Development
pnpm dev
pnpm build
pnpm testTool Groups (30 total)
Electron:
electron_setup,electron_connectChrome connection:
chrome,chrome_list_connections,chrome_switch_connection,chrome_disconnect,targetDOM:
query_elements,click_element,fill_element,navigate,get_console_logsRenderer:
take_screenshot,renderer_evaluateV8:
v8_connect,v8_evaluate,v8_disconnect,v8_list_connectionsNetwork:
enable_network,get_network_requests,clear_network_requestsDebugger:
enable_debug_tools,breakpoint,step,execution,call_stack,evaluate,pause_on_exceptionsTool visibility:
hide_tools,show_tools
Available Tools
31 toolsbreakpointB
Set or remove breakpoints.
Inputs: action (required), url, condition, line_number, +3 more.
call_stackA
Get the current call stack when execution is paused.
Inputs: connection_id.
chromeB
Connect to existing Chrome/Electron or launch a new Chrome instance with remote debugging.
Inputs: action (required), host, port, headless, +3 more.
chrome_disconnectC
Disconnect from a Chrome instance.
Inputs: connection_id (required).
chrome_list_connectionsA
List all active Chrome connections with their status.
Inputs: no named parameters.
chrome_switch_connectionB
Switch the active Chrome connection.
Inputs: connection_id (required).
clear_network_requestsC
Clear captured network requests.
Inputs: connection_id.
click_elementB
Click an element matching the CSS selector.
Inputs: selector (required), index, connection_id.
electron_connectB
Connect to a running Electron app on both CDP (renderer) and V8 Inspector (main process) ports.
Inputs: v8_port (required), cdp_port (required), connection_id.
electron_setupA
Find an Electron app in /Applications and generate a launch command with debugging flags. Returns the exact command to run.
Inputs: app_name (required), v8_port, cdp_port.
enable_debug_toolsA
Enable JavaScript debugger. Must be called before breakpoints or stepping.
Inputs: connection_id.
enable_networkB
Start capturing network requests for the current connection.
Inputs: connection_id.
evaluateB
Evaluate JavaScript in a specific call frame. Only works when paused.
Inputs: expression (required), call_frame_id (required), connection_id.
executionC
Resume or pause execution.
Inputs: action (required), connection_id.
fill_elementB
Fill text into an input element matching the CSS selector.
Inputs: text (required), selector (required), index, submit, +1 more.
get_console_logsC
Get console log messages from the browser.
Inputs: limit, filter_level, connection_id.
get_network_requestsB
List captured network requests with optional filtering.
Inputs: limit, connection_id, filter_status, resource_type.
helpA
Show install instructions for Electric Cherry across different tools.
Inputs: no named parameters.
hide_toolsB
Hide tools by pattern or specific names.
Inputs: tools, pattern.
pause_on_exceptionsB
Configure whether to pause when exceptions are thrown.
Inputs: state (required), connection_id.
query_elementsA
Find elements by CSS selector with DOM depth filtering. Returns tag, text, id, classes, visibility.
Inputs: selector (required), limit, max_depth, connection_id.
renderer_evaluateA
Evaluate arbitrary JavaScript in the renderer process. Does not require debugger pause.
Inputs: expression (required), connection_id.
show_toolsB
Show (restore) hidden tools.
Inputs: all, tools.
stepB
Step through code execution when paused.
Inputs: direction (required), connection_id.
take_screenshotC
Capture a screenshot of the current page.
Inputs: format, full_page, connection_id.
targetB
List or switch browser targets (pages, workers).
Inputs: action (required), url, index, title, +1 more.
v8_connectB
Connect to a V8 Inspector endpoint on a running Electron main process.
Inputs: port (required), connection_id.
v8_disconnectB
Disconnect a V8 Inspector connection.
Inputs: connection_id (required).
v8_evaluateC
Evaluate JavaScript in the Electron main process via V8 Inspector.
Inputs: expression (required), connection_id.
v8_list_connectionsA
List all V8 Inspector connections.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 31 tools
Some tools overlap in purpose (electron_connect vs v8_connect vs chrome, renderer_evaluate vs evaluate), and generic names like 'target' and 'step' could be ambiguous. However, most tools have clear, distinct roles when read with descriptions, so the ambiguity is moderate.
Many tools follow a context_action pattern (v8_connect, chrome_switch_connection), but there are also bare nouns (target, breakpoint, execution) and verbs (navigate, evaluate). The mixed conventions are readable but lack a single consistent pattern.
With 31 tools, the surface is notably large, spanning connections, debugging, navigation, network, and evaluation. While each group covers a niche, the total feels excessive for typical agent workflows, and could be consolidated (e.g., merging v8_connect with electron_connect).
The tool set covers the core lifecycle of Electron debugging: setup, connect, navigate, interact, inspect, debug, and evaluate. Minor gaps exist such as no explicit wait-for-element or page source retrieval, but agents can work around these with evaluate.
Related MCP Connectors
MCP server to assist with JxBrowser development.
MCP server for understanding Javascript internals from ECMAScript specification.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides comprehensive Electron application automation, debugging, and observability capabilities through Chrome DevTools Protocol integration.41,473 npm71MIT
- AlicenseNot gradedqualityCmaintenanceEnables Electron app automation via Chrome DevTools Protocol (CDP), allowing MCP clients like Cursor or Claude Desktop to interact with Electron apps.4MIT
- AlicenseNot gradedqualityBmaintenanceEnables debugging of Electron applications through the Model Context Protocol, with deep integration of Chrome DevTools Protocol for process management and advanced debugging capabilities.82 npm102ISC
- AlicenseNot gradedqualityCmaintenanceEmbedded MCP server for Electron apps that exposes BrowserWindow surfaces and lets MCP clients drive renderers through Chrome DevTools Protocol.8 npmMIT