mcnanovna Overview
mcnanovna gives LLMs direct control of NanoVNA-H vector network analyzers over USB serial. It exposes 91 MCP tools for frequency sweeps, S-parameter measurements, calibration, LCD capture, RF analysis, 3D antenna radiation pattern visualization, and multi-VNA coordination.
Capabilities
Measurement
- Frequency sweeps with configurable start/stop/points
- S11 (reflection) and S21 (transmission) measurements
- Marker-based frequency analysis
- Real-time data streaming
Calibration
- Full SOLT calibration workflow
- Save/recall calibration to device flash
- Calibration status verification
Analysis
- SWR, return loss, impedance calculations
- Filter characterization (cutoffs, bandwidth, Q)
- Crystal parameter extraction
- TDR (time domain reflectometry)
- L/C component identification
- Impedance matching network design
Radiation Patterns
- Analytical 3D patterns from S11 data
- Support for dipole, monopole, EFHW, loop, patch antennas
- Pattern import from CSV, EMCAR, NEC2, Touchstone S1P
- Optional Three.js web viewer
Multi-VNA Coordination
- Control multiple NanoVNA devices simultaneously
- Three synchronization tiers with increasing precision
- Device targeting via optional
device_idparameter on all tools - Automatic sync method selection with
coordinated_sweep
| Tier | Method | Precision | Requirements |
|---|---|---|---|
| 1 | Software | ±2-5ms | None (stock firmware) |
| 2 | Hardware Trigger | ±10-50µs | Custom firmware + trigger wire |
| 3 | Phase Coherent | ±1° | External clock + Tier 2 |
See Multi-VNA Coordination for detailed tier comparison and workflow guides.
Supported Hardware
| Device | Frequency Range | Notes |
|---|---|---|
| NanoVNA-H | 50 kHz - 900 MHz | Original hardware |
| NanoVNA-H4 | 50 kHz - 1.5 GHz | Extended range |
| NanoVNA-F | 50 kHz - 1.5 GHz | Shielded enclosure, larger screen |
NanoVNA-H
600 Hz – 2 GHzOpen-source hardware reference. Firmware internals, calibration theory, 60 shell commands.
nanovna-h.warehack.ing →NanoVNA-F V3
1 MHz – 6 GHzExtended-range hardware reference. Measurement guides, antenna testing, TDR, data export.
nanovna-f.warehack.ing →Architecture
┌─────────────────────────────────────────────────────────┐│ MCP Client ││ │ ││ MCP Protocol ││ ▼ ││ ┌─────────────────────────────────────────────────┐ ││ │ mcnanovna server │ ││ │ ┌─────────┐ ┌────────────┐ ┌─────────────┐ │ ││ │ │ tools/ │ │ protocol.py│ │calculations │ │ ││ │ │ 9 mixins│ │ USB serial│ │ S-param │ │ ││ │ └────┬────┘ └─────┬──────┘ │ math │ │ ││ │ │ │ └─────────────┘ │ ││ │ ▼ ▼ │ ││ │ ┌──────────────────────────────────────────┐ │ ││ │ │ DeviceRegistry (multi-VNA) │ │ ││ │ │ ┌────────────┐ ┌────────────┐ │ │ ││ │ │ │ NanoVNA #1 │ ... │ NanoVNA #N │ │ │ ││ │ │ └────────────┘ └────────────┘ │ │ ││ │ └──────────────────────────────────────────┘ │ ││ └─────────────────────────────────────────────────┘ ││ │ ││ USB Serial ││ ▼ ││ ┌──────────────┐ ┌──────────────┐ ││ │ NanoVNA-H #1 │...│ NanoVNA-H #N │ ││ └──────────────┘ └──────────────┘ │└─────────────────────────────────────────────────────────┘Connection Lifecycle
- First tool call: Auto-discovers USB device, opens serial at 115200 baud
- Idle < 30s: Trusts existing connection
- Idle ≥ 30s: Sends sync probe to validate; reconnects on failure
- Retry: 2 attempts with 300ms delay on cold/stale ports
No manual connect/disconnect needed—the server manages the connection automatically.