Skip to main content
Glama

ppk2-mcp

面向 Nordic Power Profiler Kit II 的无头驱动程序、命令行和 MCP 服务器,封装了 Nordic 官方 nRF Connect Power Profiler 应用的设备层。

为什么封装官方应用而不是重新实现

PPK2 的精度并不在于其命令集——那只是寥寥几个操作码。精度在于仪器连接时上报的每台设备校准数据,以及将 14 位 ADC 读数、测量范围和该校准数据转换为电流的换算过程——包括抑制量程切换时产生的尖峰的那个滤波器。这些部分会在 Nordic 发布新的仪器固件时发生变化,而重新实现恰恰会在这些地方悄悄出错:数字看起来仍然像电流。

因此 vendor/pc-nrfconnect-ppk 是应用本身的一个子模块,其中的 src/device/serialDevice.ts 被原样导入和使用。本仓库中没有任何代码负责转换 ADC 读数。跟踪新的固件版本就是一次子模块版本提升。

本仓库补充的是应用无法提供给脚本的部分:应用是一个带图表的 Electron 程序,而测量需要的是一个归属于某个状态的数字。

Related MCP server: Prometheus MCP Server

它测量的是平均值测不到的东西

仪器以 100 kSa/s 的采样率同时采样电流和八个数字通道。将某个数字通道接到固件驱动的一个引脚上,用来标记某个状态——比如无线电断电、外设时钟开启、任务运行中——那么捕获结果就能说明该状态消耗了多少,而不是板子在状态发生期间的平均值。

这就是全部设计。捕获结果以 RUNS 形式存储:数字字未发生变化的最大跨度,每个跨度包含其样本数、均值、极值和电荷量。一个 run 文件比其背后的样本小三个数量级,不会丢失任何按状态提问所需的信息,而且小到可以连同它所支持的结果一起提交到版本库。

有两件事被刻意不做平滑处理:

  • 仪器自身负载计数器报告丢失的样本会被计为丢失,不会关闭一个 run。丢失不是状态变化,也不是电流。丢失量超过调用方允许范围的捕获会被 REFUSED 而不是取平均,因为丢失并不是均匀分布在各个状态上的。

  • 状态是 MASKED 数字字,因此没有接线的通道不会把一个 run 拆成两半。probe 会报告每个通道,以便根据实际接线情况选择掩码。

安装

Node 20 或更高版本,以及一个通过 USB 连接的 PPK2。

git clone --recurse-submodules https://github.com/schuschu/ppk2-mcp
cd ppk2-mcp
npm install

如果 node 不在 PATH 中,设置 export PPK2_NODE_BIN=/path/to/node/bin./ppk2 启动器就能找到它。

在 Linux 上,用户需要对仪器的串口具有读写权限,这通常意味着需要加入 dialout 组。

命令行

./ppk2 list
./ppk2 info
./ppk2 probe --seconds 5
./ppk2 capture --out /tmp/run --seconds 60 --mask 0x0f \
    --names txrx,addr,txen,rxen --label "what this run is"

probe 报告哪些数字通道已接线。capture 写入 <out>.runs.csv<out>.meta.json,并为每个数字状态打印一行。当仪器丢失的流数据超过 --max-dropped-ppm 时,它以非零状态退出。

MCP 服务器

./node_modules/.bin/tsx src/mcp.ts

或作为 stdio 服务器入口:

{
  "command": "npm",
  "args": ["--prefix", "/path/to/ppk2-mcp", "run", "--silent", "mcp"]
}

工具:ppk2_listppk2_infoppk2_probeppk2_captureppk2_analyze

每个工具都以聚合结果和文件路径作答。它们都不返回样本:在 100 kSa/s 的采样率下,一分钟的捕获就是六百万个样本,这既不是调用方能够持有的回复,也不是读者能够检查的内容。ppk2_analyze 读回一个 run 文件,给定一个数字状态和一组时长边界,它按持续时间的长短拆分该状态的 runs——这正是用间隔长度来区分单个引脚无法区分的两个状态的方式。

仪器每次调用时打开、调用后关闭,因为同一时间只能有一个进程持有端口,而一个一直占用端口的服务器会把应用和命令行都锁在外面。

模式

这里不会启用任何源输出。仪器以它当前所处的任何模式使用,本工具所针对的测试台架是一个与由自身电源供电的板子串联的电流表——在 Nordic DK 上,就是取下跳线帽的电流测量排针。

许可证

封装的应用程序和本包装器均遵循 Nordic 的许可证;参见 vendor/pc-nrfconnect-ppk/LICENSE

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for the JouleScope JS220 precision energy analyzer, enabling agents to measure current, voltage, power, charge, and energy via tools like measure_energy.
    10
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to Prometheus metrics and queries, allowing AI assistants to execute PromQL queries and analyze metrics data through standardized MCP interfaces.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A read-only MCP server for querying telemetry data from configurable backends. Provides tools to list sources, describe schemas, run bounded queries, and compute aggregates.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Nordic Semiconductor's Power Profiler Kit II (PPK2), enabling current measurement and device control via 12 tools from Claude.
    1
    MIT

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/schuschu/ppk2-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server