工具定位

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 机器可能已经自带,但建议确认一次。

安装方式:

  1. 打开 Microsoft .NET Framework 4.8 下载页:

 https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
  1. 下载并安装 .NET Framework 4.8 Runtime

  2. 安装完成后重新打开 Claude 或 MCP host。

简单验证方式:

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | Select-Object Release, Version

如果能看到 ReleaseVersion,通常说明 .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。

工具清单

设备和状态

Tool

作用

open_powertool

打开 Windows PowerTool GUI。

close_powertool

关闭 PowerTool GUI,并释放 Automation 对象。

list_devices

枚举当前可见的 Monsoon Power Monitor 设备。

connect_device

连接指定序列号设备;不传序列号时连接第一个设备。

disconnect_device

断开当前设备。

get_status

查询应用、设备、采样、输出电压、样本数等状态。

reset_power_monitor

重置已连接的 Power Monitor。

供电控制

Tool

作用

set_output_voltage

设置主输出电压。HVPM 当前校验范围为 0.8V 到 13V。

set_output_enabled

开启或关闭主输出供电。

set_current_limits

设置 power-up 和 runtime 电流限制,单位为 A。

采样配置和采样控制

Tool

作用

configure_channels

配置采集通道,例如主电流、USB 电流、Aux 电流等。

configure_trigger

配置或清除 PowerTool 触发器。当前只支持清除,或透传已验证的原始 PowerTool trigger code。

start_sampling

启动采样,可指定采样数量、持续时间、CSV 路径等参数。

sample_for_duration

按固定时长采样。内部复用采样启动逻辑。

stop_sampling

停止当前采样。

数据读取和文件

Tool

作用

get_samples

读取一段样本窗口。单次返回数量受 MONSOON_MAX_RETURNED_SAMPLES 限制,默认 5000。

export_csv

将采样数据导出为 CSV,适合大批量数据分析。

save_capture_file

保存 PowerTool 原生 .pt5 采样文件。

load_capture_file

加载 PowerTool 原生采样文件。

重要注意事项

  • 通过 Automation 打开的 PowerTool GUI 可能有部分按钮不可编辑,这是 PowerTool 自动化控制状态的正常表现。

  • 如果要手工生成触发器 code,建议手动打开普通 PowerTool GUI,使用 GUI 里的按钮获取 code,然后再通过 MCP 的 configure_trigger(trigger_setting="...") 写入。

  • 不要把 level=100main_current > 100MainCurrent GreaterThan 100 当作 PowerTool trigger code。PowerTool 需要的是它自己的原始 code,例如官方示例中的 ATAETC10000

  • 无效 trigger code 可能弹出 invalid trigger code 模态框并阻塞 Automation。

  • 默认不建议开启 POWERTOOL_ALLOW_RAW_TRIGGER_SETTING=true。只有确认 code 来自 PowerTool GUI 或官方示例时再开启。

  • 长时间采样优先使用 export_csvsave_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 路径和是否有缺失样本。