copper-mountain-vna-mcp

copper-mountain-vna-mcp

Enables AI agents to control Copper Mountain Vector Network Analyzers over TCP/IP SCPI, offering 45 tools for sweep configuration, calibration, measurement, and Touchstone export.

Category
访问服务器

README

<div align="center">

<img src="assets/logo-banner.svg" alt="copper-mountain-vna-mcp — Copper Mountain VNA control over SCPI" width="100%"/>

<br/>

CI License Python 3.10+ MCP eng-mcp-suite

Drive Copper Mountain Vector Network Analyzers from any MCP-compatible AI client. TCP/IP SCPI over the wire — 45 tools spanning sweep, calibration, measurement, and export.

Quick start · Tools · Workflows · Documentation

</div>


What is copper-mountain-vna-mcp?

copper-mountain-vna-mcp is a Model Context Protocol server that exposes a Copper Mountain VNA — RVNA, TRVNA, S2VNA, or S4VNA family — to any MCP-capable AI assistant. The server speaks raw TCP/IP SCPI to the Copper Mountain software socket server (default port 5025), then surfaces sweep configuration, calibration, S-parameter capture, marker math, and Touchstone export as plain MCP tools.

Drive it from Claude Desktop, Claude Code, VS Code Copilot, or any other MCP client. SCPI is generated server-side, so the AI agent never needs to know the underlying command set — it just calls vna_configure_sweep, vna_trigger_sweep, vna_get_s_parameter and gets back structured data.

What copper-mountain-vna-mcp does well:

  • 🤖 AI-native via MCP. First-class Model Context Protocol server with 45 tools. Any Claude / LLM agent can drive it.
  • 🐍 Python + MCP surfaces. Import coppermountain_vna_mcp for direct driver access, or run as an MCP server for AI-agent automation.
  • Direct TCP/IP SCPI. No VISA dependency, no proprietary middleware — just asyncio sockets straight to the Copper Mountain software socket server.
  • Validated against 4 VNA families. RVNA (S11), TRVNA (S11/S21), S2VNA (full 2-port), S4VNA (full 4×4).
  • 🔒 AGPL-3.0-or-later. Network-copyleft open-source. Independent of Copper Mountain Technologies (trademark disclaimer below).

Disclaimer: This project is not affiliated with, endorsed by, or sponsored by Copper Mountain Technologies. "Copper Mountain" is a trademark of Copper Mountain Technologies. This is an independent open-source project.


Quick start

Install

pip install coppermountain-vna-mcp

Or from source:

git clone https://github.com/RFingAdam/copper-mountain-vna-mcp.git
cd copper-mountain-vna-mcp
pip install -e ".[dev]"

Supported instruments

Family Description Example models S-parameters
RVNA 1-port reflectometer R54, R60 S11
TRVNA 2-port 1-path TR1300 S11, S21
S2VNA 2-port full reversing M5090, Planar 804/1 S11, S12, S21, S22
S4VNA 4-port full S5048 Full 4×4 matrix

Two surfaces, same answer

<table> <tr> <td valign="top" width="50%">

Python

import asyncio
from coppermountain_vna_mcp.driver import CopperMountainVNADriver
from coppermountain_vna_mcp.models import SParameter, SweepConfig

async def main():
    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, if_bandwidth_hz=1000, power_dbm=0,
        ))
        await vna.trigger_sweep()
        data = await vna.get_s_parameter_data(SParameter.S11)
        marker = await vna.marker_search_min()
        print(f"Best match: {marker.frequency_hz/1e9:.3f} GHz @ {marker.magnitude_db:.1f} dB")

asyncio.run(main())

</td> <td valign="top" width="50%">

MCP (Claude Desktop, Claude Code, any MCP client)

{
  "mcpServers": {
    "copper-mountain-vna": {
      "command": "python",
      "args": ["-m", "coppermountain_vna_mcp"],
      "env": {
        "VNA_DEFAULT_HOST": "127.0.0.1",
        "VNA_DEFAULT_PORT": "5025"
      }
    }
  }
}

Then ask your assistant in plain English:

"Connect to the VNA on 127.0.0.1, sweep 1–2 GHz at 201 points, and tell me where S11 is best matched."

The agent will call vna_connect, vna_configure_sweep, vna_trigger_sweep, and vna_marker_search_min in sequence and report the result.

</td> </tr> </table>

Start the VNA software socket server

The VNA software runs on Windows. Enable the socket server via command line:

:: S2VNA / S4VNA
S2VNA.exe /SocketServer:on /SocketPort:5025 /visible:on

:: RVNA / TRVNA
RVNA.exe EnableSocket:5025

Or in the GUI: System > Socket Server > Enable.

Configuration

Configure via environment variables or .env file:

Variable Default Description
VNA_DEFAULT_HOST 127.0.0.1 VNA software host IP
VNA_DEFAULT_PORT 5025 Socket server port
VNA_CONNECTION_TIMEOUT 5.0 TCP connection timeout (s)
VNA_COMMAND_TIMEOUT 30.0 SCPI command timeout (s)
VNA_MAX_POWER_DBM 10 Max output power
VNA_MIN_POWER_DBM -55 Min output power
VNA_MAX_FREQUENCY_HZ 20e9 Upper sweep bound
VNA_MAX_POINTS 10001 Maximum sweep points

Tools

45 MCP tools, grouped:

Group Tools
Connection vna_discover, vna_connect, vna_disconnect, vna_identify, vna_get_status
Configuration vna_configure_sweep, vna_set_center_span, vna_set_averaging, vna_set_port_power, vna_output_on, vna_output_off
Measurement vna_trigger_sweep, vna_get_s_parameter, vna_measure_return_loss, vna_measure_vswr, vna_measure_insertion_loss
Markers vna_set_marker, vna_get_marker, vna_marker_search_min, vna_marker_search_max, vna_marker_bandwidth
Calibration vna_calibration_status, vna_calibration_start, vna_calibration_measure_standard, vna_calibration_apply, vna_correction_on, vna_correction_off
Export vna_save_touchstone, vna_save_screenshot
Templates vna_list_templates, vna_load_template, vna_apply_template
State vna_save_state, vna_load_state, vna_get_full_state
Limits vna_define_limit, vna_check_limits, vna_list_limits, vna_clear_limits
Software vna_software_show, vna_software_hide
Low-level SCPI vna_scpi_send, vna_scpi_query, vna_reset, vna_preset

Full tool reference in docs/tools.md.


Calibration

Standard cal flows are exposed as discrete tools so an agent can walk them step by step.

SOL (1-port reflection):

  1. vna_calibration_start(method="SOL")
  2. vna_calibration_measure_standard(standard="SHORT", port_num=1)
  3. vna_calibration_measure_standard(standard="OPEN", port_num=1)
  4. vna_calibration_measure_standard(standard="LOAD", port_num=1)
  5. vna_calibration_apply()
  6. vna_correction_on()

SOLT (2-port full): SHORT/OPEN/LOAD on both ports, then THRU between them, then apply.

Calibration is frequency-specific — recalibrate when the sweep range changes substantially.


Measurement templates

Pre-configured sweep + marker + trace setups for common DUT classes. Load by name with vna_load_template, then vna_apply_template to push to the VNA.

Category Examples
Antennas — WiFi/BLE antenna_wifi_24ghz, antenna_ble_24ghz, antenna_wifi_5ghz, antenna_wifi_5ghz_unii1/unii3, antenna_wifi_6ghz, antenna_wifi_dual_band, antenna_wifi_tri_band
Antennas — MIMO antenna_mimo_wifi_24ghz, antenna_mimo_wifi_5ghz, antenna_mimo_wifi_dual_band, antenna_mimo_cellular
Antennas — ISM/cellular/GNSS antenna_ism_us915, antenna_ism_eu868, antenna_ism_worldwide, antenna_cellular, antenna_gps_l1, antenna_gnss_dual_band, antenna_nfc
Antennas — UWB antenna_uwb_channel_5, antenna_uwb_channel_9, antenna_uwb_full_band
Cables cable_dc_2_4ghz, cable_dc_8_5ghz
Filters filter_wifi_24ghz, filter_wifi_5ghz, filter_ism_915mhz, filter_gps_l1, filter_bandpass_custom, filter_lowpass_custom
await vna.load_template("antenna_wifi_5ghz")
await vna.apply_template()

# Custom filter — provide parameters at load time
await vna.load_template("filter_bandpass_custom",
                        center_freq_hz=1.5e9, bandwidth_hz=100e6)
await vna.apply_template()

Workflows

copper-mountain-vna-mcp fits in the following eng-mcp-suite workflow bundles:

  • lab-automation — pair with mcp-rs-spectrum-analyzer, mcp-rs-siggen, and mcp-rs-cmw500 for end-to-end RF bench-test workflows driven from a single agent session.
  • antenna-tuning — feed return-loss / VSWR traces into mcp-nec2-antenna or mcp-openems for iterative match optimization.

Install the bundle with:

eng-mcp-suite install --workflow lab-automation

Documentation


Part of eng-mcp-suite

<sub>This MCP server is part of</sub>

eng-mcp-suite

<sub>Part of eng-mcp-suite — an open umbrella of MCP servers for RF / EMC / PCB / signal-integrity engineering. Drop into the lab-automation workflow bundle with eng-mcp-suite install --workflow lab-automation.</sub>

Domain Sibling MCPs
RF / Transmission lines lineforge
EMC regulatory mcp-emc-regulations
EM simulation mcp-openems, mcp-nec2-antenna
Diagrams drawio-engineering-mcp
Lab gear copper-mountain-vna-mcp · mcp-rs-spectrum-analyzer · mcp-rs-siggen · mcp-rs-cmw500

Contributing

Contributions welcome.

  1. Pick a GitHub issue.
  2. Fork + branch (feature/your-thing or fix/your-bug).
  3. Run the local check suite:
    ruff check . && mypy src/coppermountain_vna_mcp
    pytest --cov=coppermountain_vna_mcp
    
  4. Open a PR — link the issue, request review.

License

AGPL-3.0-or-later. Copyright 2025-2026 Adam Engelbrecht (RFingAdam). Relicensed from Apache-2.0 in v0.3.0 to align with the eng-mcp-suite toolkit-wide AGPL move.

Acknowledgments

  • Copper Mountain Technologies — for documenting the SCPI command set used by RVNA / TRVNA / S2VNA / S4VNA software.
  • The MCP working group — for the Model Context Protocol specification.

<div align="center">

<sub>Part of <a href="https://github.com/RFingAdam/eng-mcp-suite">eng-mcp-suite</a> — built for RF engineers, PCB designers, EMC labs, and AI agents.</sub>

</div>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选