QSO-Graph¶
MCP servers connecting AI assistants to ham radio services.
Ask your AI assistant to look up a callsign, check your LoTW confirmations, find POTA spots, or get a band-by-band propagation forecast — all through natural language.
14 Packages¶
Foundation¶
| Package | Tools | What It Does |
|---|---|---|
| qso-graph-auth | — | OS keyring credential management, persona CRUD, provider management |
| adif-mcp | 8 | ADIF 3.1.6 spec engine, validation, parsing, geospatial |
Logbook Services (Authenticated)¶
| Package | Tools | Auth | What It Does |
|---|---|---|---|
| eqsl-mcp | 5 | Persona | eQSL inbox, QSO verification, AG status, download |
| qrz-mcp | 5 | Persona + API key | Callsign lookup, DXCC, logbook access, download |
| lotw-mcp | 5 | Persona | LoTW confirmations, QSOs, DXCC credits, download |
| hamqth-mcp | 7 | Persona | Callsign lookup, DXCC, bio, activity, DX spots, RBN, QSO verify |
Public Services (No Auth Required)¶
| Package | Tools | What It Does |
|---|---|---|
| pota-mcp | 7 | Live spots, park info, stats, schedules, nearby parks |
| sota-mcp | 4 | Spots, alerts, summit info, nearby search |
| iota-mcp | 6 | Group lookup, island search, DXCC mapping, nearby |
| solar-mcp | 6 | SFI, Kp, solar wind, X-ray, band outlook |
| wspr-mcp | 8 | Beacon spots, band activity, top beacons/spotters, propagation, SNR trends |
Infrastructure¶
| Package | What It Does |
|---|---|
| qsp-mcp | QSP — relay MCP tools to any local LLM (llama.cpp, Ollama, vLLM, SGLang) |
| llm-stack | Docker Compose — Open WebUI + llama.cpp + MCP tools in a browser |
Quick Install¶
# Foundation (credential management + ADIF validation)
pip install qso-graph-auth adif-mcp
# Logbook services (authenticated)
pip install eqsl-mcp qrz-mcp lotw-mcp hamqth-mcp
# Public services (no credentials needed)
pip install pota-mcp sota-mcp iota-mcp solar-mcp wspr-mcp
# Tool relay — use all MCP tools with a local LLM (no cloud needed)
pip install qsp-mcp
See Getting Started for MCP client configuration.
How It Works¶
QSO-Graph packages are MCP servers — they run locally on your machine and expose ham radio services as tools that AI assistants can call. Your credentials stay in your OS keyring and never leave your machine.
You: "Do I have any new LoTW confirmations this week?"
│
▼
AI Assistant (Claude, ChatGPT, Cursor, etc.)
│
▼ calls lotw_confirmations(persona="ki7mt", since="2026-03-01")
│
lotw-mcp (local process)
│
▼ HTTPS request to lotw.arrl.org (credentials from OS keyring)
│
LoTW API
│
▼ ADIF response
│
You: "You have 3 new confirmations: JA1ABC on 20m FT8, ..."
Security First¶
All QSO-Graph servers follow a security framework with 10 non-negotiable guarantees:
- Credentials stored in OS keyring only — never in config files
- Credentials never appear in logs, tool results, or error messages
- No command injection surface — no
subprocess, noshell=True - All external connections HTTPS only
- Rate limiting to prevent account bans
- Input validation on all user-provided strings
- Security audit before every PyPI release
Live Demo¶
See QSO-Graph tools in action — no install required:
:material-open-in-new: Launch Demo
Dashboard, physics lab, DXCC progress, path analyzer, and log viewer — all powered by pre-computed MCP tool output from 49,233 real QSOs.
Project Links¶
- Demo: qso-graph-demo.vercel.app
- GitHub: github.com/qso-graph
- PyPI: eqsl-mcp · qrz-mcp · lotw-mcp
- Foundation: qso-graph-auth — credential management (PyPI) · adif-mcp — ADIF 3.1.6 spec engine (PyPI)
- Testing: 60/60 PASS — security audit + ADIF 3.1.6 official test corpus + forensic validation
- Related: IONIS — HF propagation prediction from 14B amateur radio observations