PlatformIO firmware for ESP32 + 2x TMC2209 (UART, StallGuard sensorless homing) driving NEMA 17 steppers. HTTP API with mDNS discovery (positioner.local). Python side: async httpx client, PositionerMixin with 6 MCP tools including measure_pattern_3d which orchestrates the full theta/phi sweep — serpentine scan path, per-point S21 capture, progress reporting, WebSocket broadcast. Web UI gains positioner REST endpoints (status, move, home). New measure_antenna_range prompt for guided workflow.
33 lines
681 B
TOML
33 lines
681 B
TOML
[project]
|
|
name = "mcnanovna"
|
|
version = "2026.02.01"
|
|
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]
|
|
positioner = ["httpx>=0.28.0"]
|
|
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
|