内容
<p align="center">
<img src="./electron.png" alt="Electron 调试 MCP" width="300" />
</p>
# Electron 调试 MCP
[](https://www.typescriptlang.org/)
[](https://www.electronjs.org/)
[](https://chromedevtools.github.io/devtools-protocol/)
[](https://modelcontextprotocol.ai/)
一款强大的模型上下文协议(MCP)服务器,用于调试 Electron 应用程序,深度集成 Chrome DevTools 协议。
## 目录
- [概述](#概述)
- [功能](#功能)
- [安装](#安装)
- [使用](#使用)
- [资源端点](#资源端点)
- [Chrome DevTools 协议集成](#chrome-devtools-协议集成)
- [示例](#示例)
- [开发](#开发)
- [贡献](#贡献)
- [许可证](#许可证)
## 概述
electron-debug-mcp 在模型上下文协议(MCP)和 Electron 应用程序之间提供了一个桥梁,通过标准化的 API 实现高级调试功能。它允许您以编程方式启动、监控、调试和控制 Electron 应用程序,并深度集成 Chrome DevTools 协议以实现高级调试功能。
## 功能
### 核心功能
- **进程管理**
- 启动启用调试的 Electron 应用程序
- 停止正在运行的 Electron 进程
- 列出所有活跃的 Electron 进程
- 监控进程状态和日志
### 调试功能
- **Chrome DevTools 协议集成**
- 发现和连接调试目标
- 跨域执行 CDP 命令
- 在页面上下文中评估 JavaScript
- 重载页面或整个应用程序
- 暂停和恢复 JavaScript 执行
### 资源访问
- **结构化资源端点**
- 所有正在运行的 Electron 进程的概述
- 特定进程的详细调试信息
- 访问进程日志
- 可用调试目标列表
- 特定目标的直接 CDP 访问
## 安装
### 快速设置
```bash
# 克隆仓库
git clone https://github.com/yourusername/electron-debug-mcp.git
# 导航到项目目录
cd electron-debug-mcp
# 安装依赖
npm install
# 构建项目
npm run build
```
### 在另一个项目 / MCP 客户端中安装
有关在 Cursor、Claude Desktop 或您自己的项目中安装此 MCP 服务器的详细说明,请参阅 **[INSTALLATION.md](./INSTALLATION.md)**。
**快速配置示例(Cursor/Claude Desktop):**
将以下内容添加到您的 MCP 配置文件中:
```json
{
"mcpServers": {
"electron-debug": {
"command": "node",
"args": ["/absolute/path/to/electron-debug-mcp/build/index.js"]
}
}
}
```
## 使用
### 启动服务器
```bash
npm run start
```
这将使用 stdio 进行通信启动 MCP 服务器。
### 连接到服务器
MCP 服务器使用 stdio 进行通信,因此客户端需要使用模型上下文协议连接。您可以:
- 使用 MCP 客户端库
- 直接通过 stdin/stdout 连接
- 使用支持 MCP 的工具
## 资源端点
服务器公开以下资源端点:
| 资源 | 描述 |
|----------|-------------|
| `electron://info` | 所有正在运行的 Electron 进程的概述 |
| `electron://process/{id}` | 特定进程的详细调试信息 |
| `electron://logs/{id}` | 访问特定进程的日志 |
| `electron://targets` | 所有可用调试目标的列表 |
| `electron://cdp/{processId}/{targetId}` | 特定目标的 CDP 访问 |
## 工具 API
服务器公开用于控制 Electron 应用程序的可执行工具:
| 工具 | 描述 |
|------|-------------|
| `electron_start` | 启动启用调试的 Electron 应用程序 |
| `electron_stop` | 停止正在运行的 Electron 进程 |
| `electron_list` | 列出所有正在运行的 Electron 进程 |
| `electron_reload` | 重载特定页面或应用程序 |
| `electron_evaluate` | 在页面上下文中执行 JavaScript |
| `electron_pause` | 暂停 JavaScript 执行 |
| `electron_resume` | 恢复 JavaScript 执行 |
## Chrome DevTools 协议集成
服务器与 Chrome DevTools 协议集成,提供深度调试功能:
### 列出可用目标
```
GET electron://targets
```
返回所有正在运行的 Electron 进程中的所有可用调试目标。
### 检查特定目标
```
GET electron://cdp/{processId}/{targetId}
```
提供有关目标和可用 CDP 域的信息。
### 执行 CDP 命令
```
GET electron://cdp/{processId}/{targetId}/{domain}/{command}
```
示例:
- `electron://cdp/electron-123456/page-1/page/reload` - 重载页面
- `electron://cdp/electron-123456/page-1/Runtime/evaluate` - 评估 JavaScript
- `electron://cdp/electron-123456/page-1/Debugger/pause` - 暂停执行
## 示例
### 启动 Electron 应用程序
```javascript
// 使用 MCP 工具的示例(推荐)
const response = await mcpClient.callTool({
name: "electron_start",
arguments: {
appPath: "C:\\path\\to\\your\\electron\\app",
debugPort: 9222, // 可选调试端口
startupTimeout: 30000 // 可选启动超时(毫秒)
}
});
```
### 获取调试信息
```javascript
// 获取特定应用程序的详细信息
const processId = "electron-1234567890";
const infoResponse = await mcpClient.readResource({
uri: `electron://process/${processId}`
});
```
### 在页面中执行 JavaScript
```javascript
// 使用工具执行 JavaScript(推荐)
const evalResponse = await mcpClient.callTool({
name: "electron_evaluate",
arguments: {
processId: "electron-123456",
targetId: "page-1",
expression: "document.title",
returnByValue: true
}
});
// 或使用 CDP 资源端点
const cdpResponse = await mcpClient.readResource({
uri: `electron://cdp/electron-123456/page-1/Runtime/evaluate`,
content: JSON.stringify({
expression: "document.title",
returnByValue: true
})
});
```
## 开发
### 项目结构
```
electron-debug-mcp/
├── src/
│ ├── index.ts # 主要服务器实现
│ └── types/ # TypeScript 类型定义
├── tests/ # 测试文件
│ ├── integration/ # 集成测试
│ └── *.test.ts # 单元测试
├── scripts/ # 实用脚本
│ └── cleanup-duplicates.ts # 重复任务清理实用程序
├── build/ # 编译的 JavaScript 输出
├── package.json # 项目依赖和脚本
└── tsconfig.json # TypeScript 配置
```
### 构建项目
```bash
npm run build
```
### 在开发模式下运行
```bash
npm run dev
```
### 测试
```bash
# 运行所有测试
npm test
# 运行测试一次
npm run test:run
# 在监视模式下运行测试
npm run test:watch
# 运行测试并生成覆盖率
npm run test:coverage
```
## 贡献
欢迎贡献!请随时提交拉取请求。
1. 分叉仓库
2. 创建功能分支(`git checkout -b feature/amazing-feature`)
3. 提交更改(`git commit -m 'Add some amazing feature'`)
4. 推送到分支(`git push origin feature/amazing-feature`)
5. 打开拉取请求
## 许可证
该项目根据 ISC 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
基于:https://github.com/amafjarkasi/electron-mcp-server
---
使用 TypeScript、Electron 和 Chrome DevTools 协议构建。