Ryan Malloy 0e5553c661 Make docs MCP-client agnostic
Replace Claude-specific terminology with generic language:
- "Ask Claude:" → "Say:"
- "Claude will:" → "Your assistant will:"
- "Claude uses:" → "Calls:" / "This uses:"
- Architecture diagrams: "Claude Code" → "MCP Client"
- Installation tabs: "Claude Code" → "MCP Client" (with Claude Code as example)
- Prerequisites: list multiple MCP clients (Claude Code, Cursor, Zed)

Docs now work for any MCP-compatible client or custom implementation.
2026-03-06 18:19:48 -07:00

86 lines
4.3 KiB
Plaintext

---
title: mcnanovna Overview
description: MCP server for NanoVNA-H vector network analyzers
---
import { Aside } from '@astrojs/starlight/components';
mcnanovna gives LLMs direct control of NanoVNA-H vector network analyzers over USB serial. It exposes 78 MCP tools for frequency sweeps, S-parameter measurements, calibration, LCD capture, RF analysis, and 3D antenna radiation pattern visualization.
## 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
## Supported Hardware
| Device | Frequency Range | Notes |
|--------|----------------|-------|
| NanoVNA-H | 50 kHz - 900 MHz | Original hardware |
| NanoVNA-H4 | 50 kHz - 1.5 GHz | Extended range |
<Aside type="note">
Other NanoVNA variants using the same USB serial protocol (VID 0x0483, PID 0x5740) should also work.
</Aside>
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ MCP Client │
│ │ │
│ MCP Protocol │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ mcnanovna server │ │
│ │ ┌─────────┐ ┌────────────┐ ┌─────────────┐ │ │
│ │ │ tools/ │ │ protocol.py│ │calculations │ │ │
│ │ │ 8 mixins│ │ USB serial│ │ S-param │ │ │
│ │ └────┬────┘ └─────┬──────┘ │ math │ │ │
│ │ │ │ └─────────────┘ │ │
│ │ ▼ ▼ │ │
│ │ ┌──────────────────────────────────────────┐ │ │
│ │ │ NanoVNA class │ │ │
│ │ │ (connection lifecycle, auto-reconnect) │ │ │
│ │ └──────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ USB Serial │
│ ▼ │
│ ┌──────────────────┐ │
│ │ NanoVNA-H │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
## Connection Lifecycle
1. **First tool call**: Auto-discovers USB device, opens serial at 115200 baud
2. **Idle < 30s**: Trusts existing connection
3. **Idle ≥ 30s**: Sends sync probe to validate; reconnects on failure
4. **Retry**: 2 attempts with 300ms delay on cold/stale ports
No manual connect/disconnect needed—the server manages the connection automatically.