---
title: Installation
description: Detailed installation options for mcnanovna and mcpositioner
---
import { Tabs, TabItem, Aside } from '@astrojs/starlight/components';
## mcnanovna
### From PyPI (Recommended)
For Claude Code:
```bash
claude mcp add mcnanovna -- uvx mcnanovna
```
For other MCP clients, configure `uvx mcnanovna` as a server.
```bash
# Run directly with uvx
uvx mcnanovna
# Or install globally
pipx install mcnanovna
mcnanovna
```
### From Source
```bash
git clone https://git.supported.systems/rf/mcnanovna.git
cd mcnanovna
uv sync
uv run mcnanovna
```
### With Web UI
The optional 3D radiation pattern viewer requires additional dependencies:
```bash
# From source
uv sync --extra webui
MCNANOVNA_WEB_PORT=8080 uv run mcnanovna
# Open http://localhost:8080 in your browser
```
## mcpositioner
### From PyPI
For Claude Code:
```bash
claude mcp add mcpositioner -- uvx mcpositioner
```
For other MCP clients, configure `uvx mcpositioner` as a server.
```bash
uvx mcpositioner
```
### From Source
```bash
git clone https://git.supported.systems/rf/mcpositioner.git
cd mcpositioner
uv sync
uv run mcpositioner
```
## Environment Variables
### mcnanovna
| Variable | Default | Description |
|----------|---------|-------------|
| `MCNANOVNA_WEB_PORT` | (disabled) | Port for 3D pattern web UI |
### mcpositioner
| Variable | Default | Description |
|----------|---------|-------------|
| `MCPOSITIONER_HOST` | `positioner.local` | ESP32 hostname or IP |
## Both Servers Together
For automated 3D antenna pattern measurement, add both servers to your MCP client:
```bash
# Claude Code example
claude mcp add mcnanovna -- uvx mcnanovna
claude mcp add mcpositioner -- uvx mcpositioner
```
Then use the `measure_antenna_range` prompt to run automated pattern sweeps.