ppk2-mcp
ppk2-mcp
Ein Headless-Treiber, eine Kommandozeile und ein MCP-Server für das Nordic Power Profiler Kit II, aufgebaut um die Geräteschicht der offiziellen nRF Connect Power Profiler App von Nordic.
Warum es die offizielle App umschließt, statt sie neu zu implementieren
Die Genauigkeit des PPK2 liegt nicht in seinem Befehlssatz, der aus einer Handvoll Opcodes besteht. Sie liegt in der gerätespezifischen Kalibrierung, die das Instrument beim Verbinden meldet, und in der Umrechnung, die aus einem 14-Bit-ADC-Wert, einem Messbereich und dieser Kalibrierung einen Strom macht – einschließlich des Filters, der den Spike unterdrückt, den ein Bereichswechsel erzeugt. Das sind die Teile, die sich ändern, wenn Nordic neue Instrument-Firmware ausliefert, und das sind die Teile, die eine Neuimplementierung leise falsch macht: Die Zahlen sehen trotzdem noch wie Ströme aus.
Deshalb ist vendor/pc-nrfconnect-ppk ein Submodul der App selbst, und
src/device/serialDevice.ts darin wird importiert und unverändert verwendet.
Nichts in diesem Repository rechnet einen ADC-Wert um. Eine neue
Firmware-Version zu übernehmen ist ein Submodul-Bump.
Was dieses Repository hinzufügt, ist der Teil, den die App einem Skript nicht geben kann: Die App ist ein Electron-Programm mit einem Diagramm, und was eine Messung braucht, ist eine Zahl, die einem Zustand zugeordnet ist.
Related MCP server: Prometheus MCP Server
Was es misst, was ein Durchschnitt nicht misst
Das Instrument sampelt Strom und acht digitale Kanäle gemeinsam mit 100 kSa/s. Verdrahte einen digitalen Kanal mit einem Pin, den die Firmware ansteuert, um einen Zustand zu markieren – ein Funkmodul abgeschaltet, ein Peripherietakt aktiv, eine Aufgabe läuft – und die Aufzeichnung kann sagen, was dieser Zustand gekostet hat, statt was das Board gemittelt hat, während es passierte.
Das ist das gesamte Design. Aufzeichnungen werden als RUNS gespeichert: maximale Spannen, über die das digitale Wort sich nicht änderte, jede mit ihrer Sample-Anzahl, Mittelwert, Extremwerten und Ladung. Eine Run-Datei ist drei Größenordnungen kleiner als die Samples dahinter, verliert nichts, was eine Frage pro Zustand braucht, und ist klein genug, um neben dem Ergebnis eingecheckt zu werden, das sie stützt.
Zwei Dinge werden bewusst nicht geglättet:
Ein Sample, das der eigene Payload-Zähler des Instruments als verloren meldet, wird als verloren gezählt und schließt keinen Run ab. Ein Dropout ist keine Zustandsänderung und auch kein Strom. Eine Aufzeichnung, die mehr verlor, als der Aufrufer erlaubt, wird REFUSED statt gemittelt, weil Verlust nicht gleichmäßig über die Zustände verteilt ist.
Ein Zustand ist das MASKED digitale Wort, sodass Kanäle, auf die nichts geklemmt ist, einen Run nicht in zwei teilen können.
probemeldet jeden Kanal, damit die Maske aus dem gewählt werden kann, was tatsächlich verdrahtet ist.
Installation
Node 20 oder neuer und ein PPK2 am USB.
git clone --recurse-submodules https://github.com/schuschu/ppk2-mcp
cd ppk2-mcp
npm installWenn node nicht im PATH ist, export PPK2_NODE_BIN=/pfad/zu/node/bin setzen
und der ./ppk2-Launcher findet es.
Unter Linux braucht der Benutzer Lese- und Schreibrechte auf der seriellen
Schnittstelle des Instruments, was üblicherweise die Mitgliedschaft in
dialout bedeutet.
Kommandozeile
./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 sagt, welche digitalen Kanäle verdrahtet sind. capture schreibt
<out>.runs.csv und <out>.meta.json und gibt eine Zeile pro digitalem
Zustand aus. Es beendet sich mit einem Fehlercode ungleich null, wenn das
Instrument mehr als --max-dropped-ppm des Streams verlor.
MCP-Server
./node_modules/.bin/tsx src/mcp.tsoder als stdio-Server-Eintrag:
{
"command": "npm",
"args": ["--prefix", "/path/to/ppk2-mcp", "run", "--silent", "mcp"]
}Werkzeuge: ppk2_list, ppk2_info, ppk2_probe, ppk2_capture,
ppk2_analyze.
Jedes Werkzeug antwortet mit Aggregaten und Dateipfaden. Keines gibt Samples
zurück: Bei 100 kSa/s sind sechs Millionen davon in einer Minute Aufzeichnung,
was weder eine Antwort ist, die ein Aufrufer halten kann, noch eine, die ein
Leser prüfen kann. ppk2_analyze liest eine Run-Datei zurück und teilt bei
einem gegebenen digitalen Zustand und einer Menge von Dauer-Grenzen die Runs
dieses Zustands nach ihrer Länge auf – so werden zwei Zustände, die ein Pin
nicht unterscheiden kann, stattdessen anhand der Länge des Intervalls
unterschieden.
Das Instrument wird pro Aufruf geöffnet und danach geschlossen, weil nur ein Prozess gleichzeitig den Port halten kann und ein Server, der ihn hielte, sowohl die App als auch die Kommandozeile aussperren würde.
Modi
Hier wird nie ein Quellenausgang aktiviert. Das Instrument wird in dem Modus verwendet, in dem es bereits ist, und die Testumgebung, für die dies geschrieben wurde, ist ein Amperemeter in Reihe mit einem Board, das von seiner eigenen Versorgung gespeist wird – auf einem Nordic DK der Strommess-Header mit entferntem Jumper.
Lizenz
Die eingebundene App und dieser Wrapper stehen unter Nordics Lizenz; siehe
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