工具定位
Monsoon Power Monitor MCP 是一个面向功耗测试自动化的本地 MCP 工具。它把 Monsoon PowerTool / Power Monitor 的设备控制能力封装成 Claude 等 MCP Client 可调用的工具,让测试人员可以用自然语言完成打开 PowerTool、连接设备、设置供电、启动采样、导出数据、读取样本等操作。
当前重点支持 Windows + Monsoon PowerTool Automation API。工具由两层组成:
power-monitor-mcp.exe:MCP Server,负责对外暴露工具、参数校验和返回结构归一化。Monsoon.PowerTool.Helper.exe:Windows Helper,负责调用 PowerTool Automation API 和真实硬件交互。

能解决什么问题
这个工具主要用于把功耗测试从“手工点 GUI + 人工记录数据”推进到“可脚本化、可复用、可接入智能体”的流程。
典型使用场景:
自动打开 PowerTool 并连接 Power Monitor。
自动设置 DUT 供电电压和输出开关。
自动启动/停止功耗采样。
自动保存
.pt5原始采样文件或导出 CSV。分段读取样本,计算平均电流、峰值电流、功耗区间等指标。
配合测试脚本或智能体完成回归功耗测试。
为功耗模块的自动化分析提供底层数据采集能力。
未来前景
这个 MCP 工具可以作为功耗自动化平台的底层能力模块。后续可以继续扩展:
接入自动化测试框架,在用例执行前后自动采集功耗。
建立功耗基线,对不同版本固件、App、系统镜像做趋势对比。
自动识别启动、待机、联网、业务运行等场景的功耗异常。
生成结构化功耗报告,包括平均电流、峰值、能耗、异常区间和回归结论。
结合日志、埋点、设备状态,把“功耗曲线变化”关联到具体业务行为。
在 CI 或实验室测试机上提供统一的功耗测试入口。
分发包结构
由于源码需要复杂的环境进行编译,故给同事使用时,提供 编译好的 产物:
power-monitor-mcp/
power-monitor-mcp.exe
helper/
Monsoon.PowerTool.Helper.exe
Monsoon.PowerTool.Helper.exe.config
*.dll
logs/
example.mcp.json
README-usage.md不需要 Python 源码。power-monitor-mcp.exe 会默认查找同目录下的:
helper\Monsoon.PowerTool.Helper.exe使用前提
目标 Windows 机器需要具备:
已安装 Monsoon PowerTool 5.x。
已安装 Monsoon Power Monitor USB driver。
PowerTool GUI 能正常识别硬件设备。
已安装 .NET Framework 4.8 runtime。
PowerTool Automation COM 已注册。
安装 .NET Framework 4.8 Runtime
Monsoon.PowerTool.Helper.exe 是 .NET Framework 4.8 程序。目标电脑需要先安装 .NET Framework 4.8 Runtime;Windows 10/11 机器可能已经自带,但建议确认一次。
安装方式:
打开 Microsoft .NET Framework 4.8 下载页:
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48下载并安装
.NET Framework 4.8 Runtime。安装完成后重新打开 Claude 或 MCP host。
简单验证方式:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | Select-Object Release, Version如果能看到 Release 和 Version,通常说明 .NET Framework 4.x 已安装。
注册 PowerTool Automation COM
PowerTool Automation COM 用于让 helper 创建 PowerTool.Automation 对象。如果 PowerTool 安装器已经注册过,可以跳过;如果 MCP 报找不到 PowerTool.Automation、COM 创建失败或 80070002,用管理员 PowerShell 执行:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
.\RegAsm.exe "D:\software\PowerTool\PowerTool.exe" /tlb:PowerTool.tlb /codebase如果 PowerTool 安装路径不同,把命令里的路径替换成实际 PowerTool.exe 路径。
注册成功时会看到类似:
成功注册了类型
成功注册了导出到“...\PowerTool.tlb”的程序集和类型库MCP 配置
把分发包里的 example.mcp.json 内容合并到 Claude 的 MCP 配置中。示例:
{
"mcpServers": {
"monsoon-power-monitor": {
"command": "D:\\tools\\power-monitor-mcp\\power-monitor-mcp.exe",
"args": [],
"env": {
"MONSOON_BACKEND": "powertool",
"POWERTOOL_LOAD_MODE": "com",
"POWERTOOL_EXE_PATH": "D:\\software\\PowerTool\\PowerTool.exe",
"POWERTOOL_HELPER_LOG_PATH": "D:\\tools\\power-monitor-mcp\\logs\\powertool-helper.log"
}
}
}
}常用环境变量:
MONSOON_BACKEND=powertool:使用 PowerTool 后端。POWERTOOL_LOAD_MODE=com:通过 PowerTool Automation COM 注册激活。POWERTOOL_EXE_PATH:PowerTool 安装路径,用于定位 PowerTool 和 native 依赖。POWERTOOL_HELPER_LOG_PATH:Helper 日志路径。POWERTOOL_ALLOW_RAW_TRIGGER_SETTING=true:允许写入非空原始触发器 code。只在 code 已验证时开启。
修改 MCP 配置后,需要重启 Claude。
工具清单
设备和状态
供电控制
采样配置和采样控制
数据读取和文件
重要注意事项
通过 Automation 打开的 PowerTool GUI 可能有部分按钮不可编辑,这是 PowerTool 自动化控制状态的正常表现。
如果要手工生成触发器 code,建议手动打开普通 PowerTool GUI,使用 GUI 里的按钮获取 code,然后再通过 MCP 的
configure_trigger(trigger_setting="...")写入。不要把
level=100、main_current > 100、MainCurrent GreaterThan 100当作 PowerTool trigger code。PowerTool 需要的是它自己的原始 code,例如官方示例中的ATA、ETC10000。无效 trigger code 可能弹出
invalid trigger code模态框并阻塞 Automation。默认不建议开启
POWERTOOL_ALLOW_RAW_TRIGGER_SETTING=true。只有确认 code 来自 PowerTool GUI 或官方示例时再开启。长时间采样优先使用
export_csv或save_capture_file,不要一次性通过get_samples拉取大量样本。
实例演示
> 打开powertool,连接设备,设置4v输出电压后,使能电压输出,重新开启采样,抓取60s,然后停止采样,最后把数据保存到
D:\liuqi\Documents\PowerTool\目录下 同时导出一份csv文件到这个目录
● I'll execute this workflow step by step. Let me start by opening powertool and connecting the device.
Called monsoon-power-monitor 2 times (ctrl+o to expand)
● PowerTool已打开,现在连接设备。
Called monsoon-power-monitor 2 times (ctrl+o to expand)
● 设备已连接 (SN: 30607)。当前电压已是4V,使能也已开启。现在按流程设置电压并开启输出。
Called monsoon-power-monitor 3 times (ctrl+o to expand)
● 电源已开启,输出电压4V。现在开始采样数据:
"firmware_version": 32,
"protocol_version": 1,
"software_version": "5.0.0.25",
"total_sample_count": 0,
"missing_sample_count": 0,
"sample_rate": 5000,
"output_enabled": false,
"main_output_voltage_setting": 4
}
}
}
02:06 PM qwen3.6
● 采样完成,获取数据:
● monsoon-power-monitor - get_samples (MCP)
⎿ {
"ok": true,
"result": {
"start": 0,
"count": 1000,
"ok": false,
"samples": []
}
}
02:07 PM qwen3.6
● 采样数据为空,试试加载保存的捕获文件:
● monsoon-power-monitor - load_capture_file (MCP)(file_path:
"d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5")
● monsoon-power-monitor - get_status (MCP)
⎿ {
"ok": true,
"result": {
"application_open": true,
"device_connected": true,
"sampling": true,
"serial_number": "30607",
"has_data": true,
"file_name": "d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5",
"power_tool_status": "PowerTool.PowerToolStatus",
"firmware_version": 32,
"protocol_version": 1,
"software_version": "5.0.0.25",
"total_sample_count": 409662,
"missing_sample_count": 0,
"sample_rate": 5000,
"output_enabled": false,
"main_output_voltage_setting": 4
}
}
02:08 PM qwen3.6
● 设备正在采样中,已有409662个样本。获取采样数据:
● monsoon-power-monitor - get_samples (MCP)
⎿ {
"ok": true,
"result": {
"start": 0,
"count": 1000,
"ok": false,
"samples": []
}
}
● monsoon-power-monitor - load_capture_file (MCP)(path:
"d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5")
⎿ {
"ok": true,
"result": {
"loaded": false,
"path": "d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5",
"status": {
"application_open": true,
"device_connected": true,
"sampling": true,
"serial_number": "30607",
"has_data": true,
"file_name": "d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5",
"power_tool_status": "PowerTool.PowerToolStatus",
"firmware_version": 32,
"protocol_version": 1,
"software_version": "5.0.0.25",
"total_sample_count": 535817,
"missing_sample_count": 0,
"sample_rate": 5000,
"output_enabled": false,
"main_output_voltage_setting": 4
}
}
}
02:09 PM qwen3.6
● 现在导出CSV文件:
● monsoon-power-monitor - export_csv (MCP)
● monsoon-power-monitor - export_csv (MCP)(path: "D:\\liuqi\\Documents\\PowerTool\\30607\\export.csv")
⎿ {
"ok": true,
"result": {
"exported": false,
"path": "D:\\liuqi\\Documents\\PowerTool\\30607\\export.csv",
"low_index": 0,
"high_index": 915363,
"granularity": 1,
"total_sample_count": 915364
}
}
∴ Thinking…
● monsoon-power-monitor - stop_sampling (MCP)
⎿ {
"ok": true,
"result": {
"sampling": false,
"stopped": true,
"status": {
"application_open": true,
"device_connected": true,
"sampling": false,
"serial_number": "30607",
"has_data": true,
"file_name": "d:\\liuqi\\Documents\\PowerTool\\30607\\PowerBox-8584161289973059614.pt5",
"power_tool_status": "PowerTool.PowerToolStatus",
"firmware_version": 32,
"protocol_version": 1,
"software_version": "5.0.0.25",
"total_sample_count": 1011731,
"missing_sample_count": 0,
"sample_rate": 5000,
"output_enabled": true,
"main_output_voltage_setting": 4
}
}
}演示视频
参考测试提示词
基础连通性
使用 monsoon-power-monitor 工具测试基础连通性:打开 PowerTool,列出设备,连接第一个设备,然后调用 get_status 汇报当前状态。设置 4V 并开启输出
打开 PowerTool,连接第一个 Monsoon Power Monitor 设备,设置主输出电压为 4V,然后开启输出。完成后调用 get_status 汇报设备序列号、输出状态和电压设置。开始采样
确认 PowerTool 已打开且设备已连接,然后开启采样。使用默认 start_sampling 参数,不要配置触发器。启动后调用 get_status,确认 sampling=true。停止采样
调用 stop_sampling 停止当前采样,然后调用 get_status,确认 sampling=false,并汇报 total_sample_count。采样 10 秒并导出 CSV
打开 PowerTool,连接设备,设置输出电压为 4V 并开启输出,然后采样 10 秒。采样结束后导出 CSV 到 D:\power-monitor-results\sample-10s.csv,允许创建目录并覆盖同名文件。最后汇报文件路径和采样状态。查询最近样本
调用 get_status 获取 total_sample_count 和 sample_rate,然后读取最后 5000 个样本。基于返回样本计算平均电流,并说明使用了哪个通道字段。导出大批量样本
不要用 get_samples 一次读取大量数据。请先调用 get_status 获取 total_sample_count,然后用 export_csv 导出完整采样数据到 D:\power-monitor-results\full-run.csv,granularity=1,overwrite=true。清除触发器
调用 configure_trigger() 清除 PowerTool 触发器。不要传 channel、mode、action、level,也不要传非空 trigger_setting。确认返回 trigger_setting="" 且 applied=true。设置已验证触发器 code
调用 configure_trigger(trigger_setting="ETC10000") 设置已验证的 PowerTool 原始触发器 code。不要传 channel、mode、action、level。完成后汇报 trigger_setting 和 applied。完整功耗测试流程
执行一次完整功耗测试:打开 PowerTool,连接设备,设置输出电压为 4V,开启输出,清除触发器,采样 30 秒,停止采样,导出 CSV 到 D:\power-monitor-results\power-run.csv,然后汇报设备序列号、采样率、总样本数、CSV 路径和是否有缺失样本。