# Bench DC Power Supply

Connects coding agents to laboratory power hardware made by Rigol, Siglent, or Aim-TTi. The server handles voltage adjustments, current limits, and output protection.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 23
- Author: K-Dense-AI
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/K-Dense-AI/lab-instrument-mcps/tree/HEAD/servers/engineering/bench-power-supply
- Updated: 2026-09-26
- HTML: https://affpapa.org/en/nevibecode/mcp/bench-dc-power-supply

## What it does

This MCP integration gives agents remote visibility and control over lab power hardware. An assistant can inspect channel metrics, toggle outputs, and adjust current thresholds. Dialect handling happens on the fly based on the instrument identification query. Note that devices made by Rohde & Schwarz or Keysight are explicitly rejected, because those manufacturers provide standalone MCP solutions.

Connections run across USB-TMC or network sockets using PyVISA. Testing without hardware is supported via the `--simulate` switch, which models virtual loads across three outputs. The package supports parameter safety caps like `--limit` and offers a `--read-only` mode that prevents any energizing action. Setting an invalid connection string or closed socket halts execution immediately.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `LABMCP_ADDRESS`, `LABMCP_SIMULATE`, `LABMCP_READ_ONLY`, `LABMCP_LIMITS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> --transport stdio bench-power-supply -- uvx labmcp-bench-psu
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-bench-psu <command>

### Codex

**Platform CLI**
```bash
codex mcp add bench-power-supply --env LABMCP_ADDRESS=<LABMCP_ADDRESS> --env LABMCP_SIMULATE=<LABMCP_SIMULATE> --env LABMCP_READ_ONLY=<LABMCP_READ_ONLY> --env LABMCP_LIMITS=<LABMCP_LIMITS> -- uvx labmcp-bench-psu
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-bench-psu <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "bench-power-supply": {
            "command": "uvx",
            "args": [
                "labmcp-bench-psu"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-bench-psu <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "bench-power-supply": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "labmcp-bench-psu"
            ],
            "env": {
                "LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
                "LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
                "LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
                "LABMCP_LIMITS": "<LABMCP_LIMITS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-bench-psu <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e LABMCP_ADDRESS=<LABMCP_ADDRESS> -e LABMCP_SIMULATE=<LABMCP_SIMULATE> -e LABMCP_READ_ONLY=<LABMCP_READ_ONLY> -e LABMCP_LIMITS=<LABMCP_LIMITS> bench-power-supply uvx labmcp-bench-psu
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from labmcp-bench-psu <command>

## When to use it
- adjust voltage levels and current limits on active channels
- shut down all power outputs immediately during emergency stops
- verify test procedures in simulated mode without attached hardware
- read power delivery measurements and error logs across channels

## Example prompts
- Check all channel readings using `get_outputs`
- Set the channel 1 current limit to 500mA
- Trigger `all_outputs_off` to shut down the supply

## Similar
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89899
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119231
- [AIHawk](https://affpapa.org/en/nevibecode/mcp/aihawk.md) — MCP server · ★ 32260
- [Skyvern](https://affpapa.org/en/nevibecode/mcp/skyvern.md) — MCP server · ★ 23283
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13181
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12826

From the same set: [k-dense-ai/lab-instrument-mcps](https://affpapa.org/en/nevibecode/by/k-dense-ai/lab-instrument-mcps.md) — 28 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
