Skip to main content
Glama
zhixuan2333

PPK2 MCP Server

by zhixuan2333

PPK2 MCP server

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.

Requirements

  • A PPK2 connected over USB

  • uv (the installer below will fetch it if missing)

  • Python ≥ 3.10 (uv will fetch one if needed)

  • Claude Code CLI (optional, for auto-registration)

Related MCP server: dbgprobe-mcp-server

One-shot install

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 prompt

install.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.

Manual setup

uv sync     # create .venv and install dependencies from uv.lock

Run 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.

Tools

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.

Modes

  • ampere — the PPK2 measures current drawn from an external supply (it does not power the DUT). voltage_mv is still used for the gain/offset calibration, so set it to your external rail voltage.

  • source — the PPK2 sources voltage_mv to the DUT and measures the current it draws. Use ppk2_power("ON") to enable the output rail.

Serial port resolution

First match wins: a tool's explicit port arg → PPK2_PORT env var → autodetection via ppk2_api.list_devices().

Notes

  • A serial line has a single owner — only one process can hold the PPK2 at a time. Stop other PPK2 tools (e.g. nRF Connect Power Profiler) before using this.

  • Unconnected digital pins float and read a constant/noisy level; drive them from your DUT to see real logic activity.

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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.

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/zhixuan2333/PPK2-MCP'

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