Skip to content

mcpyvisa

Control any test instrument through conversation -- multimeters, oscilloscopes, power supplies, signal generators. Any pyvisa backend, any bus.

22 Tools

Four tool categories covering the full stack: universal instrument control, GPIB bus operations, AR488 adapter management, and pymeasure-validated drivers.

pymeasure Drivers

8 instruments have validated pymeasure drivers. Out-of-range values are rejected before reaching hardware — protecting expensive equipment from bad commands.

Multi-Backend

Connect AR488 serial adapters, USB-TMC instruments, LAN/VXI-11 devices, and NI-VISA resources simultaneously. Run cross-backend workflows with concurrent access across independent buses.

Zero-Config Discovery

Auto-discover instruments on connect. Devices are identified via *IDN? and registered for immediate use. Address by VISA resource string or friendly alias — no manual mapping required.

graph LR
    LLM["Your LLM"]
    MCP["mcpyvisa<br/>FastMCP Server"]
    RM["pyvisa<br/>ResourceManager(s)"]

    AR["AR488<br/>Serial / WiFi"]
    PY["pyvisa-py<br/>USB-TMC / LAN"]
    NI["NI-VISA<br/>System"]

    INST1["GPIB<br/>Instruments"]
    INST2["USB / LAN<br/>Instruments"]
    INST3["Any VISA<br/>Instrument"]

    LLM -- "MCP" --> MCP
    MCP --> RM
    RM --> AR
    RM --> PY
    RM --> NI
    AR --> INST1
    PY --> INST2
    NI --> INST3

    style LLM fill:#78350f,stroke:#d97706,color:#fde68a
    style MCP fill:#78350f,stroke:#d97706,color:#fde68a
    style RM fill:#451a03,stroke:#d97706,color:#fde68a
    style AR fill:#334155,stroke:#94a3b8,color:#e2e8f0
    style PY fill:#334155,stroke:#94a3b8,color:#e2e8f0
    style NI fill:#334155,stroke:#94a3b8,color:#e2e8f0
    style INST1 fill:#334155,stroke:#94a3b8,color:#e2e8f0
    style INST2 fill:#334155,stroke:#94a3b8,color:#e2e8f0
    style INST3 fill:#334155,stroke:#94a3b8,color:#e2e8f0

A typical session: discover instruments across backends, identify them by alias, take a measurement, and read the result.

> What instruments are available?
Server status: 2 backend(s), 4 instrument(s)
bench-a (ar488, serial): connected
GPIB0::5::INSTR — Agilent Technologies E3631A (alias: psu)
GPIB0::22::INSTR — KEITHLEY INSTRUMENTS INC.,MODEL 2000 (alias: dmm)
lan-rack (pyvisa-py): connected
TCPIP::192.168.1.10::INSTR — Tektronix TDS2024B (alias: scope)
USB0::0x0957::0x0607::MY12345::INSTR — Agilent 34461A (alias: bench-dmm)
> What voltage is the dmm reading?
Reading "voltage" property via pymeasure driver...
Result: 4.23451
The Keithley 2000 (alias "dmm") is reading 4.23451 VDC.
(pymeasure driver handled SCPI commands and response parsing)
Terminal window
uv add mcpyvisa

Add to Claude Code:

Terminal window
claude mcp add mcpyvisa -- uvx mcpyvisa
CategoryToolsDescription
Universal8Connect backends, discover instruments, query, write, identify, and reset — works with any pyvisa backend
GPIB7Serial poll, SRQ check, bus trigger, interface clear, instrument clear, local/remote control
AR4883Raw ++ commands, extended diagnostics, and AR488-specific configuration
pymeasure4Validated inspect, get, set, and call through pymeasure drivers