ppk2-mcp
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.
This server cannot be installed
Maintenance
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
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
MCP server for Statsig API - interact with Statsig's feature flags, experiments, and analytics
Authenticated MCP server for ClearPolicy policy and compliance workflows.
Analytics and debugging for your MCP server — explore usage and sessions, then root-cause errors.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for the JouleScope JS220 precision energy analyzer, enabling agents to measure current, voltage, power, charge, and energy via tools like measure_energy.102Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides access to Prometheus metrics and queries, allowing AI assistants to execute PromQL queries and analyze metrics data through standardized MCP interfaces.MIT
- AlicenseNot gradedqualityAmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceMCP server for Nordic Semiconductor's Power Profiler Kit II (PPK2), enabling current measurement and device control via 12 tools from Claude.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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