io.github.qso-graph/ionis-mcp
ionis-mcp lets you query IONIS-AI HF radio propagation datasets and live space-weather context through MCP tools.
List available datasets with row counts and file sizes.
Query propagation signatures by source, band, TX/RX grid, hour, month, and minimum spots.
Analyze hour-by-hour band openings for a specific grid path and band.
Run full path analysis across bands, hours, seasons, sources, and solar geometry.
Correlate solar flux (SFI) with propagation by band and optional grid filters.
Decode Maidenhead grids and compute solar elevation/day-night classification.
Compare propagation observations across WSPR, RBN, contests, DXpeditions, and PSKR.
Classify paths by solar geometry: both-day, cross-terminator, or both-dark.
Query historical solar indices (SFI, SSN, Kp, Ap) for date ranges.
Summarize a band across hours/sources, including top grid pairs, SFI range, and distances.
Fetch live current conditions, band outlook, and POTA/SOTA tips using NOAA SWPC data.
Get service and upstream dataset version info for fleet alignment.
Works with GitHub Copilot (VS Code) to provide propagation insights and dataset queries directly in the development environment.
Integrates with ChatGPT via MCP to allow natural language queries about HF propagation, including band openings, path analysis, and solar conditions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.qso-graph/ionis-mcp What are the current band conditions for 20m?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ionis-mcp
MCP server for HF radio propagation analytics on the IONIS-AI datasets—175M+ aggregated signatures derived from 14 billion WSPR, RBN, contest, DXpedition and PSK Reporter observations, 2005–2026—through any MCP-compatible AI assistant.
Part of the qso-graph project. No authentication required. The datasets are downloaded once (see Datasets).
Install
uv tool install ionis-mcp # puts ionis-mcp and ionis-download on your PATH
ionis-download --bundle minimal # 454 MB; see Datasets for the other bundlesRelated MCP server: GR-MCP
Tools
Tool | Description | Key Parameters |
| Available datasets with row counts and file sizes | — |
| Signature lookup filtered by source, band, grid, hour, month | source, band, tx_grid, rx_grid, hour, month |
| Hour-by-hour propagation profile for a path on one band | tx_grid, rx_grid, band |
| A path across all bands, hours, months and sources | tx_grid, rx_grid, source |
| Solar flux effect on propagation, by SFI bracket | band, tx_grid, rx_grid |
| Maidenhead grid decode with solar elevation | grid, hour, month |
| Cross-dataset comparison (WSPR vs RBN vs contest vs PSKR) | tx_grid, rx_grid, band |
| Paths by solar geometry: both-day, cross-terminator, both-dark | band, hour, month |
| Historical solar indices for a date range | start_date, end_date, resolution |
| Band overview: hour distribution, top grid pairs, distances | band, source |
| Live forecast: SFI, Kp, solar wind, band outlook, POTA/SOTA tips | qth_grid |
| Service version + upstream spec version (fleet identity attestation) | — |
What is IONIS-AI?
IONIS-AI is an open-source machine learning system for predicting HF (shortwave) radio propagation. Its datasets are curated from the world's largest amateur radio telemetry networks and distributed as SQLite files on SourceForge. ionis-mcp lets an assistant answer propagation questions from them, no SQL required.
Source | Signatures | Raw Observations | SNR Type | Years |
93.6M | 10.9 billion beacon spots | Measured (-30 to +20 dB) | 2008-2026 | |
67.3M | 2.3 billion CW/RTTY spots | Measured (8-29 dB) | 2009-2026 | |
5.7M | 234M SSB/RTTY QSOs | Anchored (+10/0 dB) | 2005-2025 | |
260K | 3.9M rare-grid paths | Measured | 2009-2025 | |
8.4M | 514M+ FT8/WSPR spots | Measured (-34 to +38 dB) | Feb 2026+ | |
Solar Indices | — | 77K daily/3-hour records | SFI, SSN, Kp, Ap | 2000-2026 |
DSCOVR L1 | — | 23K solar wind samples | Bz, speed, density | Feb 2026+ |
All signature tables share an identical 13-column schema (tx_grid, rx_grid, band, hour, month, median_snr, spot_count, snr_std, reliability, avg_sfi, avg_kp, avg_distance, avg_azimuth)—ready for cross-source analysis.
Datasets
# 1. Install
uv tool install ionis-mcp
# 2. Download datasets (to default location: ~/.ionis-mcp/data/)
ionis-download --bundle minimal # 454 MB — contest + solar + grids
ionis-download --bundle recommended # 1.1 GB — adds PSKR + DSCOVR
ionis-download --bundle full # 16.2 GB — all 9 datasets
# 3. Configure your MCP client (see Quick Start) and restartThat's it. Both ionis-download and ionis-mcp use the same default data directory. No environment variables needed.
Default data directory
Platform | Location |
Linux / macOS |
|
Windows |
|
Override with a custom path:
# Download to custom location
ionis-download --bundle minimal /path/to/my/data
# Tell the server where to find it
ionis-mcp --data-dir /path/to/my/data
# or
export IONIS_DATA_DIR=/path/to/my/dataDownload individual datasets
# Pick specific datasets
ionis-download --datasets wspr,rbn,grids,solar
# See all available datasets and bundles
ionis-download --list
# Re-download (overwrite existing)
ionis-download --bundle minimal --forceIf a download is interrupted (a dropped connection, Ctrl-C), run the same command again: it picks up where it stopped. Brief network errors are retried on their own. Sizes are in MB and GB (1 MB = 1,000,000 bytes).
Data directory layout
~/.ionis-mcp/data/ (or $IONIS_DATA_DIR)
├── propagation/
│ ├── wspr-signatures/wspr_signatures_v2.sqlite (9.1 GB, 93.6M rows)
│ ├── rbn-signatures/rbn_signatures.sqlite (6.0 GB, 67.3M rows)
│ ├── contest-signatures/contest_signatures.sqlite (445 MB, 5.7M rows)
│ ├── dxpedition-signatures/dxpedition_signatures.sqlite (22 MB, 260K rows)
│ └── pskr-signatures/pskr_signatures.sqlite (635 MB, 8.4M rows)
├── solar/
│ ├── solar-indices/solar_indices.sqlite (8.0 MB, 76.7K rows)
│ └── dscovr/dscovr_l1.sqlite (3.0 MB, 23K rows)
└── tools/
├── grid-lookup/grid_lookup.sqlite (1.1 MB, 31.7K rows)
└── balloon-callsigns/balloon_callsigns_v2.sqlite (0.1 MB, 1.5K rows)The server works with whatever datasets are present. Missing datasets degrade gracefully—tools that need unavailable data return clear messages instead of errors.
Quick Start
Configure your MCP client
ionis-mcp works with any MCP-compatible client. Add the server config and restart. The tools appear automatically.
If you downloaded data to a custom location, add "env": { "IONIS_DATA_DIR": "/path/to/data" } to any config below.
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}ChatGPT Desktop
ChatGPT supports MCP via the OpenAI Agents SDK. Add under Settings > Apps & Connectors, or configure in your agent definition:
{
"mcpServers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"ionis": {
"command": "uvx",
"args": ["ionis-mcp"]
}
}
}Installed with uv tool install? Use "command": "ionis-mcp" in any config above.
Ask questions
"When is 20m open from Idaho to Europe?"
"How does solar flux affect 15m propagation?"
"Show me 10m paths at 03z where both stations are in the dark"
"Compare WSPR and RBN observations on 20m FN31 to JO51"
"What are the current band conditions? I'm heading out for POTA."
"What were the solar conditions during the February 2026 geomagnetic storm?"
Architecture
Transport: stdio (Claude Desktop / Claude Code) or streamable-http (MCP Inspector)
Database: Read-only
sqlite3connections (?mode=ro)—no writes, everQuery safety: All queries use parameterized SQL (
?placeholders), result limits enforced server-side (max 1000 rows)Grid lookup: 31.7K Maidenhead grids loaded into memory at startup (~2 MB) for instant lat/lon resolution
Solar geometry: Pure Python solar elevation computation (same algorithm as the IONIS-AI training pipeline)—classifies endpoints as day/twilight/night for propagation context
Cross-source queries: Each SQLite database opened separately, results merged in Python with source labels
MCP Inspector
ionis-mcp --transport streamable-http --port 8000Then open the MCP Inspector at http://localhost:8000/mcp.
Development
git clone https://github.com/qso-graph/ionis-mcp.git
cd ionis-mcp
uv sync --group dev
uv run pytestRelated Projects
Repository | Purpose |
IONIS-AI model validation suite (PyPI) | |
Distributed dataset files (SourceForge) |
License
GPL-3.0-or-later
Citation
If you use the IONIS-AI datasets in research, please cite:
Beam, G. (KI7MT). IONIS: Ionospheric Neural Inference System—HF Propagation Prediction Datasets. SourceForge, 2026. https://sourceforge.net/projects/ionis-ai/
Available Tools
12 toolsband_openingsBand OpeningsARead-onlyIdempotent
When does a specific band open between two grid squares?
Shows propagation hour-by-hour (0-23z) for a grid pair on a given band. Includes spot-count-weighted SNR, reliability, SFI, and solar elevation at both endpoints.
Inputs: band (required), rx_grid (required), tx_grid (required), source. Returns: result
band_summaryBand SummaryARead-onlyIdempotent
Overview of a band across all hours and available sources.
Shows total signatures and spots, hour distribution, top grid pairs, SFI range observed, and distance distribution.
Inputs: band (required), source. Returns: result
compare_sourcesCompare SourcesARead-onlyIdempotent
Cross-dataset comparison for a path/band.
Shows side-by-side data from all available sources (WSPR, RBN, Contest, DXpedition, PSKR) for the same path. Useful for validating observations across independent measurement systems.
Inputs: band (required), rx_grid (required), tx_grid (required), hour. Returns: result
current_conditionsCurrent ConditionsARead-onlyIdempotent
Live space weather and band conditions — like a morning propagation forecast.
Fetches real-time solar flux (SFI), Kp index, solar wind data, and active alerts from NOAA SWPC. Generates an operator-friendly band outlook based on current conditions and historical propagation patterns.
Perfect for: "What bands should I use today?" or "Is it worth setting up for POTA/SOTA on 10m?"
Inputs: qth_grid. Returns: result
dark_hour_analysisDark Hour AnalysisARead-onlyIdempotent
Classify propagation paths by solar geometry — both-day, cross-terminator, or both-dark.
For a given band and hour, retrieves paths and classifies each by the solar elevation at both endpoints. Useful for identifying physically anomalous paths (e.g., 10m both-dark propagation).
Inputs: band (required), hour (required), month, source, +1 more. Returns: result
get_version_infoGet Version InfoARead-onlyIdempotent
Get ionis-mcp service version and upstream dataset version.
Returns the running PyPI version of ionis-mcp and the IONIS SourceForge dataset bundle revision in use. Use this to confirm fleet alignment across MCP deployments — agents can compare service_version and spec_version across servers to detect drift without going outside the MCP protocol.
Inputs: no named parameters. Returns: object
grid_infoGrid InfoARead-onlyIdempotent
Decode a Maidenhead grid to lat/lon and compute solar elevation.
Converts a 4-char or 6-char Maidenhead grid square to geographic coordinates. If hour is provided, computes solar elevation angle with day/twilight/night classification.
Inputs: grid (required), hour, month, day_of_year. Returns: result
list_datasetsList DatasetsARead-onlyIdempotent
Show available IONIS datasets and their statistics.
Lists all datasets found in the configured data directory with row counts, file sizes, and descriptions. Use this to see what data is available for querying.
Inputs: no named parameters. Returns: result
path_analysisPath AnalysisARead-onlyIdempotent
Complete analysis of a propagation path across all bands and hours.
Provides distance/azimuth, best band/hour combinations ranked by reliability, seasonal patterns, solar geometry, and total observation counts from all available data sources.
Inputs: rx_grid (required), tx_grid (required), source. Returns: result
query_signaturesQuery SignaturesBRead-onlyIdempotent
Query propagation signatures with filters.
Searches across WSPR, RBN, Contest, DXpedition, and PSKR signature tables. All signature tables share the same 13-column schema.
Inputs: band, hour, limit, month, +4 more. Returns: result
solar_correlationSolar CorrelationARead-onlyIdempotent
How does solar flux (SFI) affect propagation on a specific band?
Groups signatures by SFI bracket and shows spot counts, average SNR, and reliability for each bracket. Higher SFI generally helps HF bands above 30m (F-layer ionization) but hurts bands below 30m (D-layer absorption).
Inputs: band (required), source, rx_grid, tx_grid. Returns: result
solar_historySolar HistoryARead-onlyIdempotent
Query historical solar indices (SFI, SSN, Kp, Ap) for a date range.
Returns solar flux, sunspot number, and geomagnetic indices from the IONIS dataset (GFZ Potsdam and NOAA SWPC, 2000-2026). For live current conditions, use solar-mcp's solar_conditions tool instead.
Inputs: end_date (required), start_date (required), resolution. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes: metadata, dataset listing, raw signature query, specific path/band analysis, solar history, and live conditions. There is some overlap among path_analysis, band_summary, band_openings, and compare_sources, but the descriptions make their different granularities and data sources reasonably clear.
All names use snake_case, which is readable, but the convention is mixed: some are verb-first (get_version_info, list_datasets, query_signatures, compare_sources) while others are noun phrases (band_openings, path_analysis, solar_history, current_conditions). This makes the naming less predictable than a consistent verb_noun pattern.
Twelve tools is well-scoped for a radio-propagation and solar-data analysis server. The set covers metadata, exploration, raw querying, path analysis, source comparison, and live conditions without an excessive number of tools.
The surface covers data discovery, querying, aggregation, solar correlation, path/grid analysis, historical and live conditions, and version alignment. Minor gaps may exist around deeper per-signature retrieval or explicit source/callsign lookup, but core propagation-analysis workflows are well supported.
Maintenance
Related MCP Connectors
Amateur radio MCP server with band plans, EIRP, cable loss, antenna gains, and more
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time NOAA space weather data (solar flares, Kp index, solar wind) and analyzes HF radio propagation conditions for amateur radio operators to determine optimal frequency bands.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables natural language-driven creation and management of GNU Radio flowgraphs with validated block connections and parameter configurations. It provides tools for searching the GNU Radio block library, detecting SDR hardware, and generating functional signal processing code.8MIT
- AlicenseAqualityAmaintenanceMCP server for HamQTH.com — callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.8GPL 3.0
- AlicenseAqualityAmaintenanceMCP server for space weather and HF propagation conditions — live solar flux, Kp index, DSCOVR solar wind, X-ray flux, alerts, 27-day forecast, and band-by-band outlook through any MCP-compatible AI assistant.776 PyPI4GPL 3.0