RND-320-KA3005P-MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RND-320-KA3005P-MCPset the PSU to 5V, 500mA and turn the output on"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RND 320-KA3005P — MCP Server (LLM-controllable bench PSU)
Turn an RND 320-KA3005P lab power supply (0–32 V, 0–5 A) into a set of MCP tools that any LLM (Kilo, Claude Desktop, Cursor, ...) can call:
┌─────────┐ MCP/stdio ┌──────────┐ SSH ┌───────────┐ USB serial ┌─────────────┐
│ LLM / │ ──────────> │ server.py│ ─────────> │ Raspberry │ ─────────────> │ RND 320- │
│ client │ │ (Win/Mac/│ │ Pi (or any│ /dev/ttyACM1 │ KA3005P PSU │
└─────────┘ │ Linux) │ │ Linux box)│ └─────────────┘
└──────────┘ └───────────┘The PSU enumerates as a USB virtual COM port (0416:5011 Winbond/Nuvoton).
Its serial port is attached to a Raspberry Pi; the server drives it over SSH
using plain shell I/O (stty + printf/cat), so nothing needs to be
installed on the Pi — the SSH user only needs to be in the dialout group.
Once running, you can literally ask your assistant things like "set the PSU to 5 V, 500 mA and turn the output on".
Step 1 — Install the server
Requires Python 3.10+ on the machine your MCP client runs on.
git clone <this repo>
cd RND-320-KA3005P-MCP
pip install -r requirements.txt
python server.py --help # optional sanity check (starts stdio server)Related MCP server: Rigol DP832 MCP Server
Step 2 — Find the PSU on the Pi
SSH into the Pi and identify the serial device:
lsusb | grep -i 0416:5011 # Winbond Virtual Com Port = the PSU
ls -l /dev/serial/by-id/ # shows which ttyACM* it maps to
groups | grep dialout # your SSH user needs dialout accessTypical result: /dev/ttyACM0 or /dev/ttyACM1.
Step 3 — Configure credentials
The server needs three values: Pi address, SSH user, SSH password.
No credentials are stored in this repo. They come from either
environment variables or a local config.json (gitignored):
cp config.example.json config.json
# then edit config.json:
# host e.g. "192.168.x.x" or "benchpi.local"
# user SSH username on the Pi
# password SSH password
# serial_dev from Step 2, default /dev/ttyACM1Environment variables override config.json:
Variable | Default | Meaning |
| — (required) | Pi the PSU hangs on |
| — (required) | SSH user (needs |
| — (required) | SSH password |
|
| SSH port |
|
| PSU serial device on Pi |
Step 4 — Register the server with your MCP client
Kilo — project .kilo/kilo.jsonc (or global ~/.config/kilo/kilo.json):
{
"mcp": {
"rnd-320-ka3005p": {
"type": "local",
"command": ["python", "/absolute/path/to/RND 320-KA3005P-MCP/server.py"],
"enabled": true
}
}
}Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"rnd-320-ka3005p": {
"command": "python",
"args": ["/absolute/path/to/RND 320-KA3005P-MCP/server.py"]
}
}
}Restart the client and check the server appears (in Kilo: /mcps).
Step 5 — First test drive
Ask your assistant to run, in order:
identify— should answerRND 320-KA3005P Vx.xget_settings/get_measurements— read setpoints and actual outputset_voltage(5.0)+set_current(0.5)+set_output(true)— power a test loadlog_current(duration_seconds=30)— watch the load current over timeset_output(false)— done
You can also exercise the server without any LLM:
python -c "import server; print(server.identify()); print(server.get_settings())"Tools
Tool | Purpose |
|
|
| CV/CC mode, output state, OCP/OVP state, protection trip |
| Configured V/I setpoints |
| Actual output voltage/current |
| Sample current over 1–300 s: min/max/avg/last + trend sparkline |
| 0–32.00 V (verified by readback) |
| 0–5.000 A current limit (verified by readback) |
| Output ON/OFF (verified via status byte) |
| OCP enable (threshold required) / disable |
| Disable OVP / clear a latched protection trip |
| Key beeper ON/OFF |
| Store panel settings in memory slot 1–5 |
| Recall slot 1–5 (⚠ may switch the output on) |
Safety design
Setpoints are range-checked (0–32 V, 0–5 A) and rejected, not clamped.
set_voltage/set_currentnever switch the output on — output power is a separate, explicitset_outputcall.Every write is verified (readback / status byte).
Commands are allow-listed (regex) before they reach the device.
Troubleshooting
Symptom | Fix |
| Create |
All queries return | Another process holds the port: |
| Wrong device or PSU unplugged — recheck Step 2 |
Status byte | Protection trip latched — call |
Want OVP enabled? | Do it from the front panel: remote |
Protocol reference (Korad-style ASCII, validated on firmware V2.0)
Commands from RND_320-KA_Control_Commands_eng_tds.pdf, behavior verified live:
VSET1:12.00,ISET1:0.500— setpoints;VSET1?,ISET1?— read backVOUT1?,IOUT1?— measurements;*IDN?— identityOUT0/OUT1,BEEP0/BEEP1,OCP0/OCP1(+OCP1:4.000threshold),OVP0SAV1..5/RCL1..5— memory slots;STATUS?— one raw status byte
Quirks found by probing the actual unit:
Commands are ASCII without any line terminator — a trailing
\n/\rmakes the unit ignore the command.The baud rate is irrelevant (USB CDC); 9600 8N1 raw is applied anyway.
The unit needs ~0.2 s idle between commands; writes return no response.
STATUS?byte: bit0 = CV(1)/CC(0), bit4 = beeper, bit5 = OCP, bit6 = output, bit7 = OVP.0xFF= protection trip latched.Remote
OVP1always trips protection immediately regardless of threshold.
Repo layout
server.py MCP server (single file, stdio transport)
config.json your credentials (gitignored, created in Step 3)
config.example.json template for config.json
requirements.txt Python dependencies (mcp, paramiko)
RND supplied software/ original vendor software + command-reference PDFsThis server cannot be deployed
Maintenance
Related MCP Connectors
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Remote MCP for RunComfy: ComfyUI deployments, hosted models, LoRA training. 31 tools.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that lets AI agents control an RS PRO RS-3005P/RS-6005P programmable DC power supply over USB/RS232, enabling voltage/current control, measurements, output switching, and memory operations.14MIT
- AlicenseNot gradedqualityDmaintenanceControls Rigol DP832 programmable power supplies via Ethernet using VISA TCP/IP, enabling AI agents to manage channels, measurements, and protection settings.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables control of the Multicomp Pro MP711134 bench power supply and multimeter over USB serial, allowing an LLM agent to power-cycle boards, measure current profiles during boot, run custom voltage/current profiles, and wait for conditions without polling.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for reading and controlling an OWON SPE6103 programmable DC power supply over USB serial, with safety checks and verified SCPI commands.MIT