Ppk2 Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ppk2 Mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (stdio) server that lets an MCP client — Claude Code, Claude Desktop, Cursor — drive a Nordic Power Profiler Kit II (PPK2) over its USB serial port: set mode/voltage, power a device-under-test (DUT), measure current/power/energy, and capture the 8 digital channels as a logic analyser.
The server holds the serial port open for its whole lifetime and serialises every tool call behind one lock, so it is the single owner of the PPK2 — the client talks to the device only through these tools.
git clone https://github.com/zhixuan2333/PPK2-MCP && cd PPK2-MCP
./install.sh # installs uv, syncs deps, registers the MCP server
./install.sh --run # ...and immediately launches Claude with a test promptinstall.sh registers the ppk2 server with the Claude Code CLI (claude mcp add, user scope). The serial port is autodetected — no path to configure. Then in Claude:
Use the ppk2 MCP tools to check the PPK2: call ppk2_status, then configure source mode at 3.3V, power the DUT on, measure current for 2 seconds, capture the logic channels for 1 second, and finally power off and disconnect.uv sync # create .venv and install dependencies from uv.lockRun the server standalone (speaks MCP over stdio, so this is mostly a smoke test — Ctrl-C to exit). The PPK2 port is autodetected; override with PPK2_PORT if needed:
uv run ppk2_mcp_server.py
# or pin a port: PPK2_PORT=/dev/cu.usbmodemXXXX uv run ppk2_mcp_server.py.mcp.json in this repo also registers the server for any Claude Code session opened in this directory (autodetected port, no edits needed). Approve the project server (or run /mcp) and confirm it shows connected.
| Tool | What it does |
|---|---|
ppk2_status | Connection state, mode, voltage, DUT power, available ports. Never opens the port. |
ppk2_configure | Open the port, read calibration, set meter mode (ampere/source) + voltage. |
ppk2_power | Turn DUT power output ON/OFF. |
ppk2_measure | Sample current for N seconds → summary stats (current/power/charge/energy). |
ppk2_logic | Capture the 8 digital channels (D0–D7) → per-channel duty, edges, activity. |
ppk2_disconnect | Release the serial port. |
not power the DUT). voltage_mv is still used for the gain/offset calibration, so set it to your external rail voltage.
voltage_mv to the DUT and measures thecurrent it draws. Use ppk2_power("ON") to enable the output rail.
First match wins: a tool's explicit port arg → PPK2_PORT env var → autodetection via ppk2_api.list_devices().
time. Stop other PPK2 tools (e.g. nRF Connect Power Profiler) before using this.
your DUT to see real logic activity.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.