electron-mcp-server
If you are the rightful owner of electron-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A powerful Model Context Protocol (MCP) server for debugging Electron applications with deep Chrome DevTools Protocol integration.
๐ Electron Debug MCP Server
A powerful Model Context Protocol (MCP) server for debugging Electron applications with deep Chrome DevTools Protocol integration.
๐ Table of Contents
- Overview
- Features
- Installation
- Usage
- Resource Endpoints
- Chrome DevTools Protocol Integration
- Examples
- Development
- Contributing
- License
๐ Overview
Electron Debug MCP Server provides a bridge between the Model Context Protocol (MCP) and Electron applications, enabling advanced debugging capabilities through a standardized API. It allows you to start, monitor, debug, and control Electron applications programmatically, with deep integration with Chrome DevTools Protocol for advanced debugging features.
โจ Features
๐ Core Functionality
- Process Management
- ๐ Start Electron applications with debugging enabled
- ๐ Stop running Electron processes
- ๐ List all active Electron processes
- ๐ Monitor process status and logs
๐ Debugging Capabilities
- Chrome DevTools Protocol Integration
- ๐ฏ Discover and connect to debugging targets
- ๐งฉ Execute CDP commands across domains
- ๐ Evaluate JavaScript in the context of pages
- ๐ Reload pages or entire applications
- โฏ๏ธ Pause and resume JavaScript execution
๐ก Resource Access
- Structured Resource Endpoints
- ๐ Overview of all running Electron processes
- ๐ Detailed debug information for specific processes
- ๐ Access to process logs
- ๐ฏ List of available debugging targets
- ๐ Direct CDP access for specific targets
๐ฅ Installation
# Clone the repository
git clone https://github.com/yourusername/electron-mcp-server.git
# Navigate to the project directory
cd electron-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
๐ Usage
Starting the Server
npm run start
This will start the MCP server using stdio for communication.
Connecting to the Server
The MCP server uses stdio for communication, so clients need to connect using the Model Context Protocol. You can:
- Use an MCP client library
- Connect directly via stdin/stdout
- Use a tool that supports MCP
๐ก Resource Endpoints
The server exposes the following resource endpoints:
Resource | Description |
---|---|
electron://info | Overview of all running Electron processes |
electron://process/{id} | Detailed debug info for a specific process |
electron://logs/{id} | Access to logs for a specific process |
electron://targets | List of all available debug targets |
electron://cdp/{processId}/{targetId} | CDP access for a specific target |
electron://operation/{operation} | Operations to control Electron apps |
Available Operations
Operation | Description |
---|---|
start | Start an Electron application |
stop | Stop a running Electron process |
list | List all running Electron processes |
reload | Reload a specific page or application |
evaluate | Execute JavaScript in a page context |
pause | Pause JavaScript execution |
resume | Resume JavaScript execution |
๐ Chrome DevTools Protocol Integration
The server integrates with Chrome DevTools Protocol to provide deep debugging capabilities:
Listing Available Targets
GET electron://targets
Returns all available debugging targets across all running Electron processes.
Inspecting a Specific Target
GET electron://cdp/{processId}/{targetId}
Provides information about the target and available CDP domains.
Executing CDP Commands
GET electron://cdp/{processId}/{targetId}/{domain}/{command}
Examples:
electron://cdp/electron-123456/page-1/Page/reload
- Reload the pageelectron://cdp/electron-123456/page-1/Runtime/evaluate
- Evaluate JavaScriptelectron://cdp/electron-123456/page-1/Debugger/pause
- Pause execution
๐ Examples
Starting an Electron App
// Example request (using an MCP client)
const response = await mcpClient.readResource({
uri: "electron://operation/start",
content: JSON.stringify({
appPath: "C:\\path\\to\\your\\electron\\app",
debugPort: 9222 // Optional debugging port
})
});
Getting Debug Information
// Get detailed info about a specific app
const processId = "electron-1234567890";
const infoResponse = await mcpClient.readResource({
uri: `electron://process/${processId}`
});
Executing JavaScript in a Page
// Execute JavaScript in a page
const evalResponse = await mcpClient.readResource({
uri: `electron://cdp/electron-123456/page-1/Runtime/evaluate`,
content: JSON.stringify({
expression: "document.title",
returnByValue: true
})
});
๐ ๏ธ Development
Project Structure
electron-mcp-server/
โโโ src/
โ โโโ index.ts # Main server implementation
โ โโโ types/ # TypeScript type definitions
โโโ build/ # Compiled JavaScript output
โโโ package.json # Project dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
Building the Project
npm run build
Running in Development Mode
npm run dev
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
๐ License
This project is licensed under the ISC License - see the LICENSE file for details.
Built with โค๏ธ using TypeScript, Electron, and Chrome DevTools Protocol.