Overview
copper-mountain-vna-mcp exposes a Copper Mountain vector network analyzer to AI
assistants through the Model Context Protocol (MCP). Instead of clicking through
the instrument UI or hand-writing automation scripts, you can ask an MCP-compatible
client — like Claude — to configure a sweep, trigger a measurement, and pull back
S-parameters in a single conversational step. To my knowledge it was the first MCP
server published for a VNA.
Why I built it
RF measurement work is full of repetitive instrument setup: setting spans, IF bandwidths, calibration recall, marker placement, and exporting traces. MCP turns those routine sequences into tools an LLM can orchestrate, so the engineer stays focused on interpreting results rather than driving the box.
How it works
The server speaks SCPI over TCP/IP straight to the Copper Mountain software socket
server (default port 5025) — no VISA layer, no proprietary middleware, just asyncio
sockets. It surfaces 45 MCP tools spanning sweep configuration, calibration,
S-parameter capture, marker math, and Touchstone export, so the agent calls
vna_configure_sweep, vna_trigger_sweep, vna_get_s_parameter, or
marker_search_min and gets structured data back — it never has to know the SCPI
command set itself.
It’s validated against all four Copper Mountain families:
| Family | Type | S-parameters |
|---|---|---|
| RVNA | 1-port reflectometer | S11 |
| TRVNA | 2-port, 1-path | S11, S21 |
| S2VNA | 2-port, full reversing | S11 / S12 / S21 / S22 |
| S4VNA | 4-port | full 4×4 matrix |
Two surfaces sit over the same core: import the Python driver directly, or run it as an MCP server for AI-agent automation.
async with CopperMountainVNADriver("127.0.0.1", 5025) as vna:
await vna.configure_sweep(SweepConfig(
start_freq_hz=1e9, stop_freq_hz=2e9, num_points=201,
))
await vna.trigger_sweep()
s11 = await vna.get_s_parameter_data(SParameter.S11)
marker = await vna.marker_search_min() # best match in the band
…and over MCP, that whole sequence is just “sweep 1–2 GHz and tell me where S11 is deepest.”
Tech
Python with asyncio TCP/IP SCPI, exposed through the MCP server SDK. AGPL-3.0, and a member of my eng-mcp-suite of engineering MCP servers.
Not affiliated with or endorsed by Copper Mountain Technologies; “Copper Mountain” is their trademark. This is an independent open-source project.
Get it
Source, setup, and the full tool reference are on GitHub.