Skip to main content
Glama

ppk2-mcp

Безголовый драйвер, интерфейс командной строки и MCP-сервер для Nordic Power Profiler Kit II, построенный на уровне устройства официального приложения nRF Connect Power Profiler от Nordic.

Почему он оборачивает официальное приложение, а не переписывает его

Точность PPK2 не в его наборе команд, который представляет собой горстку опкодов. Она в покалибровочной настройке каждого экземпляра, которую прибор сообщает при подключении, и в преобразовании, которое превращает 14-битное показание АЦП, диапазон измерения и эту калибровку в ток — включая фильтр, подавляющий всплеск, возникающий при переключении диапазона. Именно эти части меняются, когда Nordic выпускает новую прошивку прибора, и именно их переписывание с нуля тихо портит: числа всё ещё выглядят как токи.

Поэтому vendor/pc-nrfconnect-ppk — это подмодуль самого приложения, а src/device/serialDevice.ts внутри него импортируется и используется как есть. Ничто в этом репозитории не преобразует показания АЦП. Отслеживание нового релиза прошивки — это обновление подмодуля.

Что добавляет этот репозиторий, так это то, что приложение не может дать скрипту: приложение — это программа на Electron с графиком, а для измерения нужно число, привязанное к состоянию.

Related MCP server: Prometheus MCP Server

Что он измеряет, чего не даёт среднее значение

Прибор дискретизирует ток и восемь цифровых каналов вместе на частоте 100 кВыб/с. Подключите цифровой канал к выводу, который прошивка переключает для обозначения состояния — радио выключено, периферия тактируется, задача выполняется — и захват может сказать, сколько стоило это состояние, а не то, что плата усредняла, пока оно происходило.

В этом весь замысел. Захваты хранятся как RUNS: максимальные интервалы, в течение которых цифровое слово не менялось, каждый со своим количеством выборок, средним, экстремумами и зарядом. Файл запусков на три порядка меньше выборок, лежащих в его основе, не теряет ничего, что нужно для любого вопроса о состоянии, и достаточно мал, чтобы его можно было закоммитить рядом с результатом, который он подтверждает.

Две вещи намеренно не сглаживаются:

  • Выборка, которую собственный счётчик полезной нагрузки прибора считает потерянной, учитывается как потерянная и не закрывает запуск. Выпадение — это не смена состояния и не ток. Захват, потерявший больше, чем позволяет вызывающий, ОТКЛОНЯЕТСЯ, а не усредняется, потому что потери не распределяются равномерно по состояниям.

  • Состояние — это МАСКИРОВАННОЕ цифровое слово, поэтому каналы, к которым ничего не подключено, не могут разбить запуск на два. probe сообщает о каждом канале, чтобы маску можно было выбрать на основе того, что реально подключено.

Установка

Node 20 или новее, и PPK2 на USB.

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_list, ppk2_info, ppk2_probe, ppk2_capture, ppk2_analyze.

Каждый инструмент отвечает агрегатами и путями к файлам. Ни один из них не возвращает выборки: при 100 кВыб/с минута захвата — это шесть миллионов выборок, что не является ни ответом, который вызывающий может удержать, ни тем, что читатель может проверить. ppk2_analyze читает файл запусков обратно и, получив цифровое состояние и набор границ длительности, разделяет запуски этого состояния по тому, как долго они длились — так два состояния, которые один вывод не может различить, различаются по длине интервала.

Прибор открывается на каждый вызов и закрывается после него, потому что один процесс за раз может удерживать порт, и сервер, который держал бы его, заблокировал бы и приложение, и командную строку.

Режимы

Здесь никогда не включается выход источника. Прибор используется в том режиме, в котором он уже находится, а стенд, для которого это написано, — это амперметр, включённый последовательно с платой, питающейся от собственного источника — на 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