electron-mcp-server
Enables AI coding tools to interact with Electron applications for automated testing, including app lifecycle, element interaction, and visual testing.
README
Electron MCP Server
A Model Context Protocol (MCP) server for testing Electron applications using Playwright. This server enables AI coding tools like Cursor and Claude Code to interact with Electron applications for automated testing and development.
Features
- Electron App Lifecycle: Launch and manage Electron applications programmatically
- CDP Connection: Connect to running Electron apps via Chrome DevTools Protocol with retry logic and IPv6/IPv4 fallback
- Element Interaction: Click, fill, select, and interact with UI elements
- Navigation: Navigate to URLs and manage page state, with CDP-backed navigation history tools
- Window Management: Control Electron main windows (focus, minimize, maximize)
- Main Process Access: Execute scripts in the Electron main process
- Visual Testing: Capture screenshots and compare against baselines
- Accessibility Testing: Retrieve accessibility tree information, structured accessibility snapshots, and role-based interactions
- Session Management: Multiple concurrent test sessions with UUID tracking
- Advanced CDP Features: Network emulation, geolocation override, device metrics, performance monitoring, navigation history
- Code Generation: Record user flows and export Playwright tests
- Robust Error Handling: Categorized errors with automatic classification and retry recommendations
Installation
Using npm (Recommended)
npm install -g @kanishka-namdeo/electron-mcp-server
From Source
git clone https://github.com/kanishka-namdeo/electron-mcp-server.git
cd electron-mcp-server
npm install
npm run build
Usage
Running the Server
# Development mode with hot reload
npm run dev
# Production mode
npm run start
# Build TypeScript
npm run build
AI Tool Integration
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"electron-mcp-server": {
"command": "npx",
"args": [
"-y",
"@kanishka-namdeo/electron-mcp-server"
],
"env": {
"LOG_LEVEL": "info",
"NODE_ENV": "production"
}
}
}
}
Or using a global installation:
{
"mcpServers": {
"electron-mcp-server": {
"command": "electron-mcp-server",
"env": {
"LOG_LEVEL": "info",
"NODE_ENV": "production"
}
}
}
}
Cursor
Add to your Cursor MCP settings (.cursor/mcp.json):
{
"mcpServers": {
"electron-mcp-server": {
"command": "npx",
"args": [
"-y",
"@kanishka-namdeo/electron-mcp-server"
]
}
}
}
Or for global installation:
{
"mcpServers": {
"electron-mcp-server": {
"command": "electron-mcp-server"
}
}
}
Available Tools
The Electron MCP Server provides 44 tools across 6 categories:
App Lifecycle (4 tools)
| Tool | Description |
|---|---|
launch_electron_app |
Launch an Electron application |
connect_to_electron_cdp |
Connect to a running Electron app via CDP |
close_session |
Close a test session |
list_sessions |
List all active sessions |
Element Interaction (10 tools)
| Tool | Description |
|---|---|
navigate |
Navigate to a URL |
click |
Click on an element |
fill |
Fill an input field with text |
select |
Select an option from a dropdown |
get_text |
Get text content of an element |
screenshot |
Take a screenshot of the page or element |
wait_for_selector |
Wait for an element to appear |
execute |
Execute JavaScript in the renderer process |
get_page_info |
Get page URL and title |
Main Process & Window Control (8 tools)
| Tool | Description |
|---|---|
execute_main_process_script |
Execute JavaScript in the main process |
get_main_window_info |
Get window information |
focus_main_window |
Focus the main window |
minimize_main_window |
Minimize the main window |
maximize_main_window |
Maximize the main window |
get_unresponsive_callstack |
Report capability info for unresponsive renderer callstack capture in Electron 34+ apps |
get_shared_dictionary_info |
Report capability info for HTTP shared dictionary compression in Electron 34+ apps |
clear_shared_dictionary_cache |
Report capability info for clearing shared dictionary cache in Electron 34+ apps |
Visual Testing & Accessibility (11 tools)
| Tool | Description |
|---|---|
take_screenshot |
Capture a screenshot |
capture_element_screenshot |
Screenshot a specific element |
compare_screenshots |
Compare against a baseline |
get_viewport_size |
Get current viewport dimensions |
set_viewport_size |
Set viewport dimensions |
get_accessibility_tree |
Retrieve accessibility tree |
get_accessibility_snapshot |
Get Playwright accessibility snapshot for the current page |
find_accessible_node |
Find nodes by accessibility role/name with optional fuzzy matching |
interact_accessible_node |
Click or fill accessible nodes by role/name |
Advanced CDP Features (12 tools)
| Tool | Description |
|---|---|
get_protocol_info |
Get CDP protocol version and browser info |
emulate_network_conditions |
Emulate slow/offline network |
reset_network_conditions |
Reset to default network settings |
set_geolocation |
Override geolocation |
clear_geolocation |
Remove geolocation override |
set_device_metrics |
Emulate mobile device |
get_console_messages |
Capture console logs |
get_performance_metrics |
Get performance metrics |
clear_browser_cache |
Clear cache and cookies |
get_user_agent |
Get current user agent |
get_navigation_history |
Get navigation history entries via CDP |
restore_navigation_history |
Restore a history entry via CDP |
Codegen & Recording
| Tool | Description |
|---|---|
start_recording |
Start recording a flow for a session |
stop_recording |
Stop recording and return structured steps |
export_recording_as_test |
Export recorded steps as a Playwright test snippet |
Links
- npm: https://www.npmjs.com/package/@kanishka-namdeo/electron-mcp-server
- Repository: https://github.com/kanishka-namdeo/electron-mcp-server
- Issues: https://github.com/kanishka-namdeo/electron-mcp-server/issues
Development
Testing
The project has a comprehensive test suite with multiple categories:
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run unit tests only
npm run test:unit
# Run integration tests only
npm run test:integration
# Run E2E tests only (requires running Electron app)
npm run test:e2e
# Run compliance tests only
npm run test:compliance
# Run tests in watch mode
npm run test:watch
Linting
# Run linter
npm run lint
# Fix linting issues
npm run lint:fix
Type Checking
npm run typecheck
Building
# Build TypeScript
npm run build
# Development mode with hot reload
npm run dev
# Production mode
npm start
Project Structure
electron-mcp-server/
├── src/
│ ├── core/
│ │ ├── errors.ts # Custom error classes
│ │ ├── errors-enhanced.ts # Enhanced error handling with classification
│ │ ├── cdp-utils.ts # CDP connection utilities with retry logic
│ │ ├── connection-health.ts # Connection health monitoring
│ │ ├── logger.ts # Pino logging setup
│ │ └── types.ts # TypeScript type definitions
│ ├── session/
│ │ ├── session-manager.ts # Session lifecycle management
│ │ └── index.ts
│ ├── tools/
│ │ ├── handlers/
│ │ │ ├── app-lifecycle.ts # App launch and CDP connection
│ │ │ ├── element-interaction.ts # Click, fill, select, navigate
│ │ │ ├── main-process.ts # Window control and main process scripts
│ │ │ ├── visual-testing.ts # Screenshots, viewport, accessibility
│ │ │ └── cdp-advanced.ts # Network, geolocation, device metrics
│ │ ├── tools.ts # Tool definitions
│ │ ├── validation.ts # Zod schemas
│ │ ├── validation-enhanced.ts # Enhanced validation schemas
│ │ └── index.ts
│ └── index.ts # Main MCP server
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ ├── e2e/ # End-to-end tests
│ ├── compliance/ # MCP protocol compliance tests
│ ├── utils/ # Test utilities
│ └── fixtures/ # Test fixtures
├── test-app/ # Electron test application
├── .trae/
│ └── docs/ # Phase 1 & 2 documentation
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
├── package.json
├── tsconfig.json
└── vitest.config.ts
Environment Variables
LOG_LEVEL: Logging level (default:info)NODE_ENV: Environment (default:production)
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.