Add analytical radiation pattern models for 5 antenna types (dipole, monopole, EFHW, loop, patch) driven by S11 impedance measurements. Pure Python math with closed-form far-field equations — no numpy or simulation dependencies. New MCP tools: - radiation_pattern: scan S11 → find resonance → compute 3D pattern - radiation_pattern_from_data: compute from known impedance (no hardware) - radiation_pattern_multi: patterns across a frequency band for animation Web UI (opt-in via MCNANOVNA_WEB_PORT env var): - Three.js gain-mapped sphere with OrbitControls - Surface/wireframe/plane cut display modes with teal→amber color ramp - Smith chart overlay, dBi reference rings, E/H plane cross-sections - Real-time WebSocket push on new pattern computation - FastAPI backend shares process with MCP server, zero new core deps Frontend: Vite + TypeScript + Three.js, built assets committed to webui/static/. Optional dependencies: fastapi + uvicorn via pip install mcnanovna[webui].
32 lines
650 B
TOML
32 lines
650 B
TOML
[project]
|
|
name = "mcnanovna"
|
|
version = "2026.01.31"
|
|
description = "MCP server for NanoVNA-H vector network analyzers"
|
|
authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}]
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"fastmcp>=2.14.0",
|
|
"pyserial>=3.5",
|
|
"Pillow>=11.0.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
webui = [
|
|
"fastapi>=0.115.0",
|
|
"uvicorn[standard]>=0.34.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
mcnanovna = "mcnanovna.server:main"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/mcnanovna"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 120
|