Skip to main content

wspr-mcp

PyPI MCP Registry

MCP server for WSPR (Weak Signal Propagation Reporter) beacon data — live spots, band activity, top beacons, propagation paths, SNR trends, and more through any MCP-compatible AI assistant.

Data from wspr.live (~2.7 billion spots, 2008-present). Part of the qso-graph project. No authentication required — all public data.

Install

uvx wspr-mcp            # run it; nothing to install

Tools

Tool Description Key Parameters
wspr_spots Recent WSPR spots with flexible filtering callsign, band, hours, grid, min/max SNR, min distance
wspr_band_activity Per-band spot counts, station counts, distances, and SNR hours
wspr_top_beacons Top transmitters ranked by spot count or max distance band, hours, sort_by (spots/distance), limit
wspr_top_spotters Top receivers ranked by spot count or max distance band, hours, sort_by (spots/distance), limit
wspr_propagation Propagation between two locations — auto-widens to field-level proxy for sparse endpoints tx, rx, band, hours
wspr_grid_activity All WSPR activity in/out of a Maidenhead grid square grid (2 or 4 char), band, hours
wspr_longest_paths Longest distance WSPR paths in a time window band, hours, min_distance, limit
wspr_snr_trend Hourly SNR trend for a specific path over time tx, rx, band, hours
get_version_info Service version + upstream spec version (fleet identity attestation) —

What is WSPR?

WSPR beacons transmit a 2-minute encoded signal at very low power (typically 200 mW to 5 W). Each decoded spot proves a propagation path exists between two locations on a specific band. With thousands of beacons worldwide transmitting 24/7, WSPR provides continuous, automated propagation monitoring across all HF bands.

Good Neighbour Policy

wspr.live is a volunteer-run service that mirrors all wsprnet.org data into a public ClickHouse database. We take our responsibility as a good neighbour seriously:

Measure Detail
Rate limiting 3 seconds between requests (20 req/min max)
Circuit breaker Opens after 3 consecutive failures; exponential backoff up to 5 minutes. Prevents hammering a struggling service.
Time-bounded queries Every query filters by time (max 72 hours). No unbounded full-table scans.
Band filtering Queries filter by band whenever the user provides one — this hits wspr.live's indexes efficiently.
Column selection We SELECT only the columns each tool needs (8-10 per query), never SELECT *.
Result limits All queries cap results (200 spots, 50 leaderboard entries).
Response caching 2-10 minute TTL per tool. Identical queries within the window hit local cache with zero network traffic.
Request timeout 20-second timeout — we don't hold connections open on a shared service.
User-Agent header Every request identifies itself as wspr-mcp/{version} so the operators can reach us if needed.

If wspr.live is down or overloaded, the circuit breaker backs off automatically. We don't retry in a tight loop.

Quick Start

No credentials needed — just install and configure your MCP client.

Configure your MCP client

Claude Desktop

Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):

{
  "mcpServers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

Claude Code

Add to .claude/settings.json:

{
  "mcpServers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

ChatGPT Desktop

{
  "mcpServers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

VS Code / GitHub Copilot

Add to .vscode/mcp.json in your workspace:

{
  "servers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):

{
  "mcpServers": {
    "wspr": {
      "command": "uvx",
      "args": ["wspr-mcp"]
    }
  }
}

Ask questions

"Show me recent WSPR spots on 20m"

"What bands are open right now?"

"Who are the top WSPR beacons on 20m today?"

"What are the longest WSPR paths in the last 24 hours?"

"Is there propagation between Idaho (DN13) and central Europe (JN48)?"

"Any WSPR paths between DN13 and Bouvet (JD15)?" (auto-widens to DN↔JD if no exact match)

"What's happening in grid square JN48?"

"How's the SNR trending between K9AN and G8JNJ on 20m?"

"Who are the best WSPR receivers sorted by distance?"

Testing Without Network

WSPR_MCP_MOCK=1 wspr-mcp

MCP Inspector

wspr-mcp --transport streamable-http --port 8009

Development

git clone https://github.com/qso-graph/wspr-mcp.git
cd wspr-mcp
uv sync --group dev
uv run pytest

License

GPL-3.0-or-later

Metadata

Release files for wspr-mcp 0.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wspr-mcp 0.3.6
File Size Uploaded
wspr_mcp-0.3.6.tar.gz 178.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wspr-mcp 0.3.6
File Interpreter ABI Platform
wspr_mcp-0.3.6-py3-none-any.whl Python 3 none any Details

Total release size: 205.4 kB

Release files / wspr_mcp-0.3.6.tar.gz

Download URL wspr_mcp-0.3.6.tar.gz
Size 178.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0cab1f96b8279db823333a3742853cbd18d7047b9b6a5e35e0acca04563e4166
BLAKE2b-256 checksum
How to use checksums
587f5394d1df1c8878d1342a2616809bf0d6d0bbe768ecbde92643fe510b8b3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / wspr_mcp-0.3.6-py3-none-any.whl

Download URL wspr_mcp-0.3.6-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c222123a60737c7c1520cc0840fa8d5dd3bb5adfcac01c407e88dcd07a716d94
BLAKE2b-256 checksum
How to use checksums
70e3c32bb046066fdbff07bbd1a6d4e2167e07a6c90a0357e4d392a340489ade
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.6 This release

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page