关于 🚀 Electron Debug MCP Server
Electron Debug MCP 是面向编码 Agent 的 MCP 服务,用于检查和调试运行中的 Electron 应用。它通过 Chrome DevTools Protocol 和 Node inspector 连接,整合界面检查、UI 自动化、运行时诊断及主进程 IPC 观测。
主要功能
- 01检查窗口、DOM 和无障碍树
- 02自动执行界面操作并验证结果
- 03捕获控制台、网络和进程日志
- 04分析性能并检查内存
- 05观测和调用主进程 IPC
- 06审计 Electron 安全设置
适用场景
- 01诊断 Electron 运行时异常
- 02自动执行并验证桌面工作流
- 03调查网络请求失败
- 04检查应用性能和安全性
MCP 相关
它向 MCP 客户端提供 Electron 生命周期管理、检查、自动化、调试和诊断工具。它通过 CDP 与渲染器窗口通信,并可借助 Node inspector 检查主进程。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Electron Debug MCP
为 AI 编码 Agent 注入真正的 Chrome DevTools Protocol 超能力。
让 Cursor、Claude 和自主 Agent 在 Electron 桌面应用中拥有观察、操作和深入检查运行时的能力。
快速开始 • 超能力 • 工具矩阵 • 使用示例 • 资源与提示词 • 更新日志 • 故障排除
🌟 为什么选择 Electron Debug MCP?
大多数 AI 编码 Agent 难以处理桌面应用:它们可以编辑源代码,却无法看到生成的窗口、点击按钮、读取控制台错误,或诊断无声无息的主进程崩溃。
Electron Debug MCP 通过 Chrome DevTools Protocol (CDP) 和 Node 检查器,将 Agent 直接接入 Electron 运行时,解锁全面的可视化、交互和诊断自主能力。
flowchart LR
A["🤖 AI Agent (Cursor / Claude)"] <-->|"stdio JSON-RPC"| B["⚡ Electron Debug MCP"]
B <-->|"CDP (WebSocket)"| C["🖼️ Renderer Windows\n(DOM · AXTree · Network · V8)"]
B <-->|"Node Inspector / V8"| D["⚙️ Main Process\n(IPC · WebContents · Windows · Fuses)"]
✨ 核心超能力
🛡️ 运行时安全审计
|
🔒 零泄露机密信息自动化自动填写登录和 API 表单,同时避免泄露凭据。 |
🧩 自主组合工作流高级单轮工作流可减少往返调用:
|
🔌 深度 IPC 可观测性
|
🗺️ 源映射堆栈跟踪
| ### ⚡ 流畅无阻的 Agent 体验 - **`processId` 可选**:默认自动使用唯一的活动应用会话。 - **工具注释**:工具声明标准 MCP 提示(`readOnlyHint`、`destructiveHint`),客户端可据此自动批准安全查询。 - **工件资源**:输出文件会编入索引,路径为 `electron://artifact/{id}`。 |
⚡ 快速开始
1. 配置 MCP 客户端
🚀 在 Cursor 中(~/.cursor/mcp.json 或 .cursor/mcp.json)
{
"mcpServers": {
"electron-debug": {
"command": "npx",
"args": ["-y", "electron-debug-mcp@latest"]
}
}
}
💬 在 Claude Desktop 中(claude_desktop_config.json)
{
"mcpServers": {
"electron-debug": {
"command": "npx",
"args": ["-y", "electron-debug-mcp@latest"]
}
}
}
提示
在本地开发? 运行
npm run build,并配置"command": "node"和"args": ["/path/to/electron-mcp-server/build/index.js"]。
🛠️ 工具一览(111 个工具)
所有工具都接受可选的 processId。仅有一个应用运行时,会自动解析为活动进程。
🚀 生命周期与连接(8 个)
| 工具 | 说明 |
|---|---|
start_app | 使用远程调试端口启动 Electron 应用。设置 inspectMain: true 可启用主进程调试。 |
stop_app | 终止已启动的应用,或从已连接的会话断开。 |
attach | 通过 DevTools 端口或 WebSocket URL 连接到正在运行的 Electron 应用。 |
attach_by_pid | 从 Electron OS PID 的命令行中检测 DevTools 端口并连接。 |
find_apps | 枚举主机上所有正在运行的 Electron 进程。 |
discover_apps | 扫描本地 TCP 端口(默认 9222–9322),以发现正在运行的 CDP 调试端点。 |
find_installed_apps | 扫描标准 OS 应用目录,查找已安装的打包 Electron 应用。 |
list_apps | 枚举所有活动及受管理的会话,并显示运行时长、PID 和目标数量。 |
👁️ 查看与视觉检查(8 个)
| 工具 | 说明 |
|---|---|
vision | 推荐的一次性快照:包含视口截图、页面 URL/标题、控制台错误和网络故障。支持 markElements: true,显示 Set-of-Marks 视觉标记。 |
snapshot | 完整的语义无障碍树(Accessibility.getFullAXTree),包含稳定的元素引用(ref: "e1")、角色、名称和后端 ID。支持 markElements: true。 |
screenshot | 捕获视口 PNG 或 JPEG 的 base64 负载。 |
save_screenshot | 将截图保存到磁盘(支持按 CSS 选择器裁剪);并注册为工件。 |
diff_screenshot | 将截图与基准截图进行视觉回归比较。 |
start_screencast | 将实时视口帧流式传输到有界环形缓冲区。 |
stop_screencast | 停止屏幕录制,并可选择将最后一帧保存到磁盘。 |
highlight | 通过边框和背景叠加效果,在视口中直观突出显示 DOM 元素。 |
🖱️ 操作与 UI 自动化(13)
| 工具 | 描述 |
|---|---|
act_and_verify | 组合工具: 执行操作(click、type、click_ax),等待网络空闲,验证断言,并在失败时截取失败画面。 |
click | 点击与 CSS selector 或无障碍 ref(例如 "e1")匹配的元素中心。 |
click_ax | 通过无障碍名称和可选角色定位元素并稳健地点击。 |
type_text | 在聚焦的元素、selector 或 ref 中输入文本。支持解析 {{secret:VAR}} 并隐藏敏感信息。 |
type_ax | 通过无障碍名称聚焦元素并输入文本,支持秘密占位符。 |
press_key | 触发按键或键盘快捷键(Enter、Escape、Tab、方向键、Ctrl+A 等)。 |
hover | 将鼠标指针移到 CSS selector 或 ref 上方,不进行点击。 |
scroll | 按增量坐标滚动页面或元素,或将 selector 或 ref 滚动到可视区域。 |
drag | 使用原生 HTML5 dataTransfer 负载在两个选择器或引用之间拖放。 |
select_option | 按值或标签选择 <select> 下拉菜单中的选项。 |
set_file_input | 以编程方式为 <input type="file"> 设置文件。 |
handle_dialog | 自动接受或关闭 JavaScript 提醒、确认框和提示框。 |
open_deep_link | 向应用触发自定义协议深层链接(例如 myapp://action)。 |
📄 页面状态与导航(20)
| 工具 | 描述 |
|---|---|
fill_form | 组合工具: 智能多字段表单填写工具(文本、选择框、复选框、单选按钮、文件),支持解析 {{secret:VAR}}、自动提交和 UI 断言。 |
responsive_theme_matrix | 组合工具: 遍历多种主题(light、dark)和视口,检测文本裁切和水平溢出滚动条。 |
repro_bundle | 组合工具: 将完整的 Bug 复现包(截图、MHTML DOM、HAR 回放、控制台错误、日志、健康状态)打包为一个归档文件。 |
page_info | 页面基本信息:URL、标题、尺寸、readyState 和用户代理。 |
navigate | 将活动页面目标导航到指定 URL,并可配置等待的加载状态。 |
reload | 重新加载活动页面目标(支持缓存清除)。 |
wait_for | 等待 CSS 选择器、页面标题、URL 子字符串或自定义 JS 表达式。 |
get_dom | 获取页面 HTML 标记(支持指定 CSS 选择器根节点和 maxLength 令牌保护)。 |
query_selector | 执行 CSS 查询并检查匹配元素的属性和文本内容。 |
evaluate | 在渲染器页面上下文中执行任意 JavaScript。 |
get_console_messages | 获取缓冲的控制台消息和异常(支持按级别和尾部筛选)。 |
get_logs | 获取捕获的进程标准输出和标准错误日志。 |
get_cookies | 检查指定 URL 或所有目标的 Cookie。 |
set_cookie | 设置浏览器 Cookie,并指定域、路径和安全标志。 |
delete_cookie | 按名称删除特定 Cookie。 |
get_storage | 从 localStorage 或 sessionStorage 读取项目。 |
set_storage | 向 localStorage 或 sessionStorage 写入项目。 |
assert_ui | 验证页面 URL、标题、元素可见性、文本匹配情况以及控制台错误是否不存在。 |
save_storage_state | 将 Cookie、localStorage 和 sessionStorage 导出到兼容 Playwright 的 JSON 归档文件(electron://artifact/{id})。 |
load_storage_state | 将 Cookie 和源站存储状态恢复到实时 Electron 会话中,以便立即绕过身份验证并重放状态。 |
🌐 网络与下载(12)
| 工具 | 描述 |
|---|---|
offline_resilience_check | 组合工具: 网络混沌与故障恢复审计(模拟离线、高延迟或 HTTP 500 故障),并给出弹性等级(A–F)。 |
network_failure_report | 组合工具: 收集失败的 HTTP 请求(状态码 ≥ 400 或网络故障),内嵌响应正文,并注册导出的 HAR 产物。 |
get_network_log | 缓冲的 HTTP 请求和响应。支持按状态、故障和 URL 模式筛选。 |
get_response_body | 获取已完成请求的原始响应正文,使用 requestId 指定(文本或 base64)。 |
export_har | 将缓冲的网络流量导出为官方 HAR 1.2 文件,并注册产物。 |
wait_network_idle | 阻塞,直到没有正在进行的网络请求且网络保持空闲。 |
network_stub | 拦截与模式匹配的 HTTP 请求,并使用自定义状态码、标头或正文进行模拟。 |
clear_network_stubs | 移除所有有效的网络拦截模拟。 |
block_urls | 阻止与通配符 URL 模式匹配的网络请求。 |
set_extra_headers | 向后续所有请求注入自定义 HTTP 标头。 |
emulate_network | 模拟离线状况、增加往返延迟,以及下载/上传吞吐量上限。 |
get_downloads | 在所有会话中启用下载监听器,并在不显示保存对话框的情况下捕获下载文件。 |
📈 性能、性能分析与调试器(16)
| 工具 | 描述 |
|---|---|
perf_snapshot | 组合工具: 协调 CDP 跟踪、CPU 性能分析和代码覆盖率,在交互或重新加载期间采集数据,并返回汇总的性能数据包和产物 URI。 |
leak_check | 组合工具: 内存泄漏检测器,在垃圾回收后跨多次迭代测量 DOM 节点、事件监听器、文档和堆的增长。 |
get_performance_metrics | 渲染器性能计数器(JS 堆已用/总量、DOM 节点数、布局次数等)。 |
perf_audit | 轻量级性能审计,分析 LCP、CLS、绘制时间和审计问题。 |
get_audit_issues | 缓冲的 Chromium 安全、混合内容和弃用审计问题。 |
start_tracing / stop_tracing | 记录并导出 Perfetto/DevTools JSON 时间线跟踪。 |
start_cpu_profile / stop_cpu_profile | 记录并导出 V8 .cpuprofile 文件。 |
heap_snapshot | 捕获完整的 V8 堆快照文件产物。 |
start_coverage / stop_coverage | 跟踪 JavaScript 和 CSS 代码覆盖率,并报告未使用代码的百分比。 |
resolve_stack | 将堆栈帧解析回源代码片段;自动解码 v3 源映射。 |
set_breakpoint / remove_breakpoint | 根据脚本 URL 和行号设置或清除 JavaScript 断点。 |
pause / resume | 通过 Debugger 域暂停或恢复 V8 JavaScript 执行。 |
🛡️ 主进程、原生模拟、菜单与安全(23)
| 工具 | 描述 |
|---|---|
ipc_fuzz_and_verify | 组合工具: IPC 安全与崩溃加固模糊测试工具,使用边界值和攻击载荷(null、__proto__、路径遍历、超大缓冲区)探测活动处理程序。 |
mock_electron_api | 拦截并模拟任意 Electron 原生模块(dialog、shell、app、clipboard、autoUpdater),并提供自定义返回值或异步实现。 |
get_mock_calls | 查看模拟 Electron API 的调用历史记录、参数签名和时间戳。 |
restore_electron_mocks | 恢复原始 Electron 原生实现,并清除模拟调用记录。 |
get_application_menu | 检查原生 Menu.getApplicationMenu() 菜单树,包括角色、标签、启用/选中状态和快捷键。 |
click_menu_item | 按路径("File > Save")、角色或 ID,以编程方式在原生应用菜单项上触发 .click()。 |
trigger_shortcut | 检查并触发 Electron 应用中的原生全局快捷键(globalShortcut)。 |
get_process_health | 监控进程退出、崩溃(render-process-gone)、窗口挂起(unresponsive)、内存 RSS/堆,以及 stderr 日志。 |
electron_security_audit | 全面审计 webPreferences、上下文隔离、沙盒、窗口处理程序、导航防护和二进制熔断器。 |
ipc_invoke | 直接调用主进程 IPC 处理通道,或使用参数发出 IPC 事件。 |
ipc_schema_inference | 推断 IPC 通道契约和负载类型,并自动生成 TypeScript 定义。 |
ipc_tap / get_ipc_log | 挂接主进程 IPC,以捕获渲染进程与主进程之间的通信。 |
evaluate_main | 在 Electron 主进程/Node 上下文中执行 JavaScript(需要 inspectMain)。 |
main_state | 检查 Electron 应用状态:打开的窗口、指标、版本和系统路径。 |
webcontents_topology | 将 BrowserWindow 和 webContents ID 映射到各自的 CDP 目标。 |
focus_window | 显示指定的 BrowserWindow,并将其置于前台。 |
set_window_bounds | 移动或调整 Electron BrowserWindow 的大小。 |
set_permission | 以编程方式允许或拒绝权限(通知、媒体、地理位置等)。 |
get_clipboard / set_clipboard | 读取或写入操作系统剪贴板中的文本和图像数据。 |
print_pdf | 将页面渲染为 PDF 文档产物。 |
capture_mhtml | 将页面 DOM、样式表和图像保存为 MHTML 归档产物。 |
🩺 元信息与诊断(11)
| 工具 | 描述 |
|---|---|
run_script | 组合工具: 服务端工作流引擎,支持模板({{vars}}、{{steps[id].result}})、条件分支(if)、步骤重试、断言、失败诊断和 Playwright 代码生成。 |
triage | 组合工具: 一键诊断,汇总页面状态、控制台错误、网络故障、审计问题、日志末尾内容和已解析的异常堆栈。 |
doctor | 验证环境健康状况和 Node/Electron 二进制文件,并测试临时端口绑定。 |
diagnose | 检查所有活动会话、目标数量和缓冲区大小的健康状况。 |
clear_buffers | 重置已缓冲的控制台消息、网络请求、日志或 IPC 条目。 |
list_targets | 枚举所有 CDP 目标(页面、工作线程、iframe、Node)。 |
emulate | 覆盖视口、用户代理、地理位置、设备缩放系数和配色方案。 |
virtual_clock | 冻结或推进虚拟时间,以测试确定性计时器和动画。 |
set_console_live | 直接以 MCP 通知的形式实时流式传输控制台和日志消息。 |
cdp_command | 原始 CDP 逃生通道:使用自定义参数执行任意 Domain.method。 |
📦 资源与提示词
📡 标准 MCP 资源
通过标准 MCP 资源直接公开实时状态和导出的产物:
electron://server— 服务状态、版本和主机环境。electron://info— 活动进程 ID、目标明细和近期错误计数。electron://targets— 所有已连接进程中的实时 CDP 目标。electron://artifacts— 所有已导出截图、跟踪记录、堆快照和 HAR 文件的索引。electron://artifact/{id}— 根据 ID 获取已导出的产物。electron://process/{id}·electron://logs/{id}·electron://console/{id}·electron://cdp/{proc}/{target}
💬 内置 MCP 提示词
可一键调用的交互式调试方案:
debug_blank_window— 系统化诊断白屏或空白渲染器。find_renderer_exception— 定位未处理的异常,检查审计结果并解析源代码堆栈。ui_smoke_check— 端到端 UI 验证:等待、交互并断言。attach_and_screenshot— 发现本地应用、连接并捕获视觉状态。vision_then_act— 视觉优先的 Agent 循环:观察、定位语义目标、执行操作并验证。ax_then_assert— 无障碍优先的操作循环:按无障碍名称定位并断言状态。
📚 Agent 方案
1. 视觉 → 操作 → 验证循环
// Step 1: Look at the screen and check for errors
{ "name": "vision", "arguments": {} }
// Step 2: Act and verify in a single turn (captures failure screenshot if assertion fails)
{
"name": "act_and_verify",
"arguments": {
"action": { "type": "click_ax", "name": "Sign In" },
"assertion": { "textIncludes": "Welcome back" }
}
}
2. 自动化表单中的密钥脱敏
{
"name": "type_text",
"arguments": {
"selector": "#api-key",
"text": "{{secret:MY_APP_API_KEY}}"
}
}
说明
解析
process.env.MY_APP_API_KEY,通过 CDP 填入该值,返回typed: "[REDACTED]",并自动从后续所有日志、控制台事件和 HAR 文件中清除该密钥。
3. 自动化安全审计
{ "name": "electron_security_audit", "arguments": {} }
返回检查清单得分(0–100)、字母等级(A–F),以及针对 webPreferences 和 Electron 二进制文件熔断器的可执行修复建议。
4. IPC 契约推断
// 1. Arm tap -> 2. Run app interactions -> 3. Infer TypeScript contracts
{ "name": "ipc_schema_inference", "arguments": {} }
根据观察到的运行时通信,直接为你的预加载 API 生成可直接使用的 TypeScript 定义。
5. 多步骤工作流引擎与 Playwright 代码生成(run_script)
在服务端执行复杂的多操作自动化,只需一次 MCP 往返;支持变量插值、条件分支、重试、断言检查和代码生成。
{
"name": "run_script",
"arguments": {
"vars": {
"targetWorkspace": "workspace-alpha",
"expectedItems": 3
},
"steps": [
{
"id": "authenticate",
"tool": "type_text",
"args": {
"selector": "input#token",
"text": "{{secret:APP_API_TOKEN}}"
},
"expect": { "status": "success" }
},
{
"id": "switch_workspace",
"tool": "click",
"args": { "selector": "button.workspace-switch" },
"retry": { "retries": 3, "delayMs": 250 }
},
{
"id": "check_banner",
"tool": "eval_js",
"args": { "expression": "Boolean(document.querySelector('.promo-modal'))" }
},
{
"id": "dismiss_banner",
"if": "{{steps.check_banner.result.value}} == true",
"tool": "click",
"args": { "selector": ".promo-modal .close-btn" }
},
{
"id": "verify_workspace_state",
"tool": "eval_js",
"args": {
"expression": "({ active: document.querySelector('#current-ws').textContent.trim(), count: document.querySelectorAll('.item').length })"
},
"expect": {
"js": "result.value.active === 'workspace-alpha' && result.value.count >= 3"
}
}
],
"exportAs": "playwright"
}
}
功能与选项
| 功能 | 语法 / 选项 | 用途 |
|---|---|---|
| 变量与上下文 | {{vars.key}} | 引用脚本 vars 对象中的值,并保留原始基本类型(字符串、数字、布尔值、对象)。 |
| 步骤依赖 | {{steps.id.result.path}} | 将前序步骤计算出的输出、ID 或令牌直接传入后续工具参数。 |
| 环境与密钥 | {{env.KEY}} · {{secret:KEY}} | 注入进程环境变量;密钥会自动在日志、控制台事件和输出中脱敏为 [REDACTED]。 |
| 条件分支 | if: "{{steps.check.result.open}} == true" | 仅当条件计算结果为 true 时才执行步骤(==、!=、<、>、&&、` |
| 预期结果断言 | expect: { contains, equals, status, js } | 验证步骤结果;自定义 js 表达式会基于 result 求值,以验证应用不变量。 |
| 自动重试 | retry: { retries: 3, delayMs: 250 } | 失败前使用指数退避自动重试不稳定的操作。 |
| 失败诊断 | 自动 | 步骤失败时,捕获视口截图产物(electron://artifact/{id})、控制台错误和网络错误。 |
| Playwright 代码生成 | exportAs: "playwright" | 生成独立、可运行的 Playwright _electron 测试脚本(.spec.ts),反映已执行的操作序列。 |
查看生成的 Playwright 代码生成输出
import { test, expect, _electron as electron } from "@playwright/test";
test("executed script workflow", async () => {
const electronApp = await electron.launch({ args: ["."] });
const window = await electronApp.firstWindow();
// Step: authenticate
await window.locator("input#token").fill(process.env.APP_API_TOKEN || "");
// Step: switch_workspace
await window.locator("button.workspace-switch").click();
// Step: dismiss_banner
await window.locator(".promo-modal .close-btn").click();
// Step: verify_workspace_state
const evalResult = await window.evaluate("({ active: document.querySelector('#current-ws').textContent.trim(), count: document.querySelectorAll('.item').length })");
expect(evalResult).toBeDefined();
await electronApp.close();
});
6. Ref 定位器与 Set-of-Marks 视觉提示
使用紧凑的 ref(e1、e2)检查无障碍目标,并在不依赖脆弱 CSS 选择器的情况下执行交互:
// 1. Take snapshot with Set-of-Marks badges in the screenshot
{ "name": "vision", "arguments": { "markElements": true } }
// 2. Click directly by ref token
{ "name": "click", "arguments": { "ref": "e3" } }
// 3. Type text into ref
{ "name": "type_text", "arguments": { "ref": "e4", "text": "Hello Desktop!" } }
7. 原生 Electron API 模拟(对话框、Shell、剪贴板)
在自动化测试期间绕过 OS 文件对话框、外部 URL 打开操作或更新检查:
// 1. Mock dialog.showOpenDialog to return test fixtures
{
"name": "mock_electron_api",
"arguments": {
"module": "dialog",
"method": "showOpenDialog",
"returns": { "canceled": false, "filePaths": ["/fixtures/document.pdf"] }
}
}
// 2. Mock shell.openExternal
{
"name": "mock_electron_api",
"arguments": {
"module": "shell",
"method": "openExternal",
"returns": true
}
}
// 3. Inspect tracked invocations
{ "name": "get_mock_calls", "arguments": { "module": "shell", "method": "openExternal" } }
// 4. Restore original implementation
{ "name": "restore_electron_mocks", "arguments": { "module": "shell", "method": "openExternal" } }
8. 原生应用菜单与快捷键触发
自动操作原生 OS 菜单和全局键盘快捷键:
// 1. Inspect the full native menu tree
{ "name": "get_application_menu", "arguments": {} }
// 2. Click menu item by path or role
{ "name": "click_menu_item", "arguments": { "path": "File > Save" } }
// 3. Dispatch an Electron accelerator directly
{ "name": "trigger_shortcut", "arguments": { "accelerator": "CommandOrControl+Shift+P" } }
9. 进程运行状况监控与崩溃诊断
{ "name": "get_process_health", "arguments": {} }
返回实时状态("healthy"、"unresponsive" 或 "crashed"),跟踪 OOM 终止、子进程故障、窗口挂起和内存指标。
10. 存储状态快照与身份验证重放
将完整会话状态(cookies、localStorage、sessionStorage)保存为与 Playwright 兼容的存储状态文件,以免在多个测试中重复登录:
// 1. Export storage state to an artifact
{ "name": "save_storage_state", "arguments": {} }
// 2. Restore state into any new Electron session
{
"name": "load_storage_state",
"arguments": {
"state": { "cookies": [...], "origins": [...] }
}
}
11. 一键 Bug 复现包与问题报告生成器(repro_bundle)
一次调用即可打包生成完整、自包含的 zip 存档,其中包含视口截图、完整 MHTML DOM 存档、HAR 网络重放数据、带源映射的控制台错误、stderr 尾部内容、运行状况指标,以及可直接用于 GitHub 的 Markdown 问题报告:
{
"name": "repro_bundle",
"arguments": {
"notes": "Regression on checkout flow after OAuth upgrade"
}
}
返回 artifactUri: "electron://artifact/..."、目标路径,以及可直接粘贴到 GitHub 问题或 Jira 中的完整 Markdown 摘要。
12. 智能多字段无障碍与机密表单填写器(fill_form)
通过一次工具调用,使用键值字典或结构化字段规格填写完整的多输入项表单:
{
"name": "fill_form",
"arguments": {
"fields": {
"Username or Email": "[email protected]",
"Password": "{{secret:APP_PASSWORD}}",
"Environment": "Staging",
"Remember Me": true
},
"submit": true,
"expect": {
"textIncludes": "Welcome back"
}
}
}
通过无障碍树标签、ARIA 属性、占位符或引用(e1)解析字段,安全地解析机密信息,选择下拉选项,切换复选框,点击提交,并验证提交后的 UI 断言。
13. 网络混乱与恢复能力评分卡(offline_resilience_check)
在交互期间模拟真实网络故障情形(离线、延迟或 HTTP 500),监控应用运行状况和错误突发,恢复网络,并计算执行层面的恢复能力评级(A–F):
{
"name": "offline_resilience_check",
"arguments": {
"faultType": "offline",
"durationMs": 1500,
"action": { "type": "click", "selector": "#save-btn" }
}
}
14. 响应式主题与视口矩阵扫描(responsive_theme_matrix)
检查布局在不同配色方案(light、dark)和视口大小下的适配情况,捕获水平滚动条溢出(scrollWidth > innerWidth):
{
"name": "responsive_theme_matrix",
"arguments": {
"themes": ["light", "dark"],
"viewports": [
{ "width": 800, "height": 600, "name": "compact" },
{ "width": 1280, "height": 800, "name": "desktop" }
]
}
}
15. IPC 安全与崩溃防护模糊测试器(ipc_fuzz_and_verify)
增强渲染进程到主进程的 IPC 通信防护,以抵御恶意或格式错误的负载(null、原型污染、路径遍历、超大缓冲区),并验证进程抵御崩溃的能力:
{
"name": "ipc_fuzz_and_verify",
"arguments": {
"iterations": 6
}
}
📋 更新日志与版本发布
| 版本 | 发布亮点 | 测试套件 |
|---|---|---|
| v1.15.0 | 复合超能力与弹性工作流:一键式 Bug 复现包(repro_bundle)、智能无障碍与敏感信息表单填写工具(fill_form)、网络混沌弹性评分卡(offline_resilience_check)、响应式主题全面测试(responsive_theme_matrix)、IPC 安全模糊测试器(ipc_fuzz_and_verify)。纯 Node、零依赖 PKZip 生成器。111 个工具。 | 140 个单元测试 · 111 个冒烟测试 |
| v1.14.0 | 引用定位器与标记集(ref: "e1"、markElements: true)、原生 Electron API 模拟(mock_electron_api、get_mock_calls、restore_electron_mocks)、原生应用菜单驱动器(get_application_menu、click_menu_item、trigger_shortcut)、进程健康监视器(get_process_health)、存储状态保存与加载(save_storage_state、load_storage_state)。106 个工具。 | 135 个单元测试 · 106 个冒烟测试 |
| v1.13.0 | 服务端工作流引擎与代码生成(run_script 支持上下文变量、条件分支、预期断言、重试、故障诊断以及 Playwright 测试代码生成)。97 个工具。 | 130 个单元测试 · 97 个冒烟测试 |
| v1.12.0 | 运行时安全审计(electron_security_audit)、零泄漏敏感信息脱敏({{secret:VAR}})、IPC 架构推断(ipc_schema_inference)、内存泄漏猎手(leak_check)、Source Maps(resolve_stack)、复合工作流(act_and_verify、triage、network_failure_report、perf_snapshot)。96 个工具。 | 125 个单元测试 · 96 个冒烟测试 |
| v1.11.0 | 工具注解(readOnlyHint、destructiveHint)、可选的 processId、制品系统(electron://artifacts)、网络日志筛选、DOM 防护、llms.txt。88 个工具。 | 120 个单元测试 · 88 个冒烟测试 |
提示
完整的历史版本说明、API 迁移说明和依赖更新记录均在
CHANGELOG.md中维护。
🧯 故障排查
| 症状 | 解决方案 |
|---|---|
Electron failed to install correctly | 运行 npm run ensure-electron 以验证并下载平台二进制文件。 |
Process not found | 调试单个应用时省略 processId;服务会自动解析。 |
终端在 node build/index.js 处挂起 | 这是正常现象:服务通过 stdio JSON-RPC 通信。请从 MCP 客户端启动它。 |
| 主进程工具失败 | 使用 inspectMain: true 启动应用,以打开 Node 检查器端口。 |
| 端口被占用 / Windows 上出现 WSAEACCES | 服务会动态探测并选择可绑定的临时端口,以避免 Hyper-V/WSL 冲突。 |
📜 开发与验证
npm test # Run build, 140 unit tests, and full 111-tool smoke suite
npm run doctor # Verify environment health and port binding
npm run sync:readme # Automatically synchronize badge counts with registered tools
📄 许可证
ISC © Electron Debug MCP 贡献者
为需要在 Electron 内部观察并操作的自主 Agent 而构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。