Skip to main content
Glama

ppk2-mcp

MCP server for Nordic Semiconductor's Power Profiler Kit II (PPK2). Provides 12 tools for discovering, connecting, configuring, and measuring current draw directly from Claude Code or Claude Desktop.

Features

  • Discover PPK2 devices on USB

  • Connect with automatic calibration loading

  • Configure source/ampere mode and supply voltage

  • Measure current at ~100 kHz native sample rate

  • Log raw measurements to timestamped CSV files

  • Inspect saved logs without leaving the conversation

Related MCP server: dbgprobe-mcp-server

Requirements

  • Python 3.10+

  • Nordic Semiconductor PPK2 hardware

  • USB connection to PPK2

Quick Start

git clone https://github.com/Ultrahuman-tech/ppk2-mcp.git
cd ppk2-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Then configure your MCP client (see below).

Configuration

Claude Code

Add to ~/.claude.json under mcpServers:

{
  "mcpServers": {
    "ppk2": {
      "command": "/path/to/ppk2-mcp/.venv/bin/python3",
      "args": ["/path/to/ppk2-mcp/ppk2_server.py"],
      "type": "stdio"
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ppk2": {
      "command": "/path/to/ppk2-mcp/.venv/bin/python3",
      "args": ["/path/to/ppk2-mcp/ppk2_server.py"]
    }
  }
}

Replace /path/to/ppk2-mcp with the actual clone location.

Tools Reference

Tool

Description

list_devices

Scan USB for connected PPK2 devices

connect

Connect to a PPK2 and load calibration (returns session ID)

disconnect

Disconnect, stop measurement, power off DUT

set_mode

Set operating mode: source (PPK2 powers DUT) or ampere (external power)

set_voltage

Set supply voltage in mV (source mode only, 800-5000 mV)

power_control

Toggle DUT power on/off

get_session_info

Show current session state

start_measuring

Begin continuous current measurement

stop_measuring

Stop continuous measurement

measure

Atomic: start, collect for N seconds, stop, save CSV, return stats

list_logs

List saved measurement CSV files

get_log

Read a saved log file (metadata + first N rows)

Typical Workflow

list_devices          → find PPK2 on USB
connect               → get session_id
set_mode "source"     → PPK2 supplies power
set_voltage 3300      → 3.3V to DUT
power_control "on"    → power up the device
measure 5.0           → capture 5 seconds of current data
disconnect            → clean up

Logs

Raw measurement data is saved to the logs/ directory as timestamped CSV files. Each file contains:

  • Comment header with metadata (date, duration, mode, voltage, sample count, sample rate)

  • CSV data columns: sample_idx, current_ua (optionally digital for digital channels)

Example:

# PPK2 Raw Measurement Log
# Date: 2025-02-18 19:57:00
# Duration: 2.01s
# Mode: source
# Voltage: 3300 mV
# Samples: 200,544
# Sample Rate: 99,773 sps
sample_idx,current_ua
0,1523.45
1,1518.22
...

Known Issues

  • Stale serial buffer on reconnect: After a previous session crashes or is interrupted, the PPK2's serial buffer may contain leftover binary measurement data. The server handles this automatically by flushing the buffer before reading calibration data.

  • Metadata decode errors: The upstream ppk2-api library can crash on binary noise in the serial buffer. This server includes a built-in patch (latin-1 fallback) so no manual library edits are needed.

License

MIT - see LICENSE.

A
license - permissive license
-
quality - not tested
D
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/Ultrahuman-tech/ppk2-mcp'

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