Skip to main content
Glama

wspr-mcp

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

pip install wspr-mcp

Related MCP server: qrz-mcp

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": "wspr-mcp"
    }
  }
}

Claude Code

Add to .claude/settings.json:

{
  "mcpServers": {
    "wspr": {
      "command": "wspr-mcp"
    }
  }
}

ChatGPT Desktop

{
  "mcpServers": {
    "wspr": {
      "command": "wspr-mcp"
    }
  }
}

Cursor

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

{
  "mcpServers": {
    "wspr": {
      "command": "wspr-mcp"
    }
  }
}

VS Code / GitHub Copilot

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

{
  "servers": {
    "wspr": {
      "command": "wspr-mcp"
    }
  }
}

Gemini CLI

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

{
  "mcpServers": {
    "wspr": {
      "command": "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
pip install -e .

License

GPL-3.0-or-later

Available Tools

9 tools
get_version_infoA

Get wspr-mcp service version and upstream spec version.

Returns the running PyPI version of wspr-mcp and the wspr.live ClickHouse schema 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.

Returns: service_name, service_version (PyPI), and spec_version (wspr.live schema).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description fully discloses behavior: it is a read-only operation that returns specific fields (service_name, service_version, spec_version). No destructive or complex side effects are implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise, with a clear front-loaded statement and an additional paragraph explaining the use case. It could be slightly tighter, but it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema implied by 'Returns:', the description covers all needed aspects: what it does, why to use it, and what it returns. It is complete for a simple utility tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description adds value by explaining the return fields and purpose, but no parameter details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves wspr-mcp service and upstream spec version, with specific verbs 'Get' and 'Returns'. It distinguishes from sibling tools that focus on wspr data like band activity or spots.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use for confirming fleet alignment and detecting drift across MCP deployments. It does not mention when not to use, but given its simplicity and lack of sibling overlap, this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_band_activityA

Get per-band WSPR activity summary.

Shows spot counts, TX/RX station counts, average and max distance, and average SNR for each band. The best indicator of which bands are open right now.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoTime window in hours (1-6, default 1).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It clearly describes a read-only summary operation with no side effects. Could mention data source or limits, but the behavior is transparent enough for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: purpose statement, list of outputs, and a usage hint. No redundant words, front-loaded with key information. Excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and an output schema (not shown but exists), description lists all output fields (spot counts, station counts, distance, SNR). Adequate for an agent to understand expected results without needing the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter 'hours' with 100% schema description coverage (time window, range, default). Description does not add extra meaning beyond what the schema provides, so score is baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Get per-band WSPR activity summary' with specific details (spot counts, station counts, distance, SNR). The closing sentence 'best indicator of which bands are open right now' distinguishes it from sibling tools like wspr_grid_activity or wspr_longest_paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'best indicator of which bands are open right now' implies when to use. However, no explicit guidance on when not to use or alternatives among siblings. Still, the description helps an agent decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_grid_activityA

Get all WSPR activity in or out of a Maidenhead grid square.

Shows summary stats and recent spots for a geographic area. Use 2-character grid (e.g., DN) for a wide area or 4-character (e.g., DN13) for a specific region.

ParametersJSON Schema
NameRequiredDescriptionDefault
gridYesMaidenhead grid square — 2 char (DN) or 4 char (DN13).
bandNoFilter by band (e.g., 20m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).
limitNoMaximum recent spots to return (1-200, default 50).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. Mentions 'summary stats and recent spots' but does not explicitly state read-only nature, safety, or other behavioral traits. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very concise: three sentences, front-loaded with main purpose, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given presence of output schema and 4 parameters, description covers the key usage (grid format, summary/spots) but could elaborate on other parameters (band, hours, limit) or provide examples. Still reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented in schema. Description adds no additional meaning beyond what schema already provides (e.g., grid format advice is already in schema description). Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool retrieves WSPR activity for a grid square, using specific verbs ('Get all') and resource ('Maidenhead grid square'). Differentiates from sibling tools (wspr_band_activity, wspr_spots) by focusing on grid-based queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on grid format choice (2-char vs 4-char) for wide vs specific regions. However, does not explicitly contrast with sibling tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_longest_pathsA

Get the longest WSPR paths in the given time window.

WSPR's precise timing and low power make it the gold standard for detecting marginal propagation. Long paths here prove the band is open.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNoFilter by band (e.g., 20m, 10m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).
limitNoMaximum paths to return (1-50, default 20).
min_distanceNoMinimum distance in km (e.g., 15000 for near-antipodal).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. Only states the tool is for reading longest paths but omits any behavioral traits like cost, caching, or side effects. Minimal transparency beyond purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. First directly states purpose, second adds relevant context about WSPR's significance. No wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has 4 optional parameters, output schema exists. Description covers purpose but lacks behavioral context (e.g., whether the tool is expensive). Adequate but not comprehensive for a complex radio propagation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters with descriptions (100% coverage). Description adds no extra semantic meaning; it only mentions 'time window' which is already in schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get the longest WSPR paths in the given time window.' Verb 'get' and resource 'longest paths' are specific. Distinguishes from siblings like wspr_spots or wspr_propagation by focusing on longest paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for detecting band openness via long paths ('Long paths here prove the band is open'), but no explicit comparison to sibling tools or when-not-to-use. Agent must infer context from WSPR significance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_propagationA

Get WSPR-derived propagation between two locations.

Shows which bands have been open between two endpoints, with spot counts, SNR statistics, and hours of opening. Accepts callsigns or grid squares (or a mix). Searches both directions automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
txYesFirst endpoint — callsign (e.g., KI7MT) or grid (e.g., DN13).
rxYesSecond endpoint — callsign (e.g., G8JNJ) or grid (e.g., IO91).
bandNoFilter to a specific band (e.g., 20m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it searches both directions automatically and returns specific statistics, but lacks details on data recency, rate limits, or potential limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (under 50 words) with front-loaded purpose. Every sentence adds value, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not shown) and 4 parameters, the description covers the main inputs, outputs, and key behavior (bidirectional search). It is sufficiently complete for an agent to understand the tool's function, though the time window parameter could use a brief mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds value by mentioning that it accepts callsigns or grid squares (already in schema) and notably states 'Searches both directions automatically,' which clarifies behavior beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets WSPR-derived propagation between two locations, listing specific outputs (bands, spot counts, SNR stats, hours). It distinguishes from sibling tools (e.g., wspr_spots, wspr_band_activity) by focusing on propagation between two endpoints and mentioning bidirectional search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains it accepts callsigns or grid squares, giving clear context for use. However, it does not provide explicit guidance on when not to use it or compare to alternatives, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_snr_trendA

Get SNR trend over time for a specific WSPR path.

Shows hourly SNR buckets for a path between two endpoints. Useful for seeing when a band opens and closes on a specific path, and how signal strength varies over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
txYesFirst endpoint — callsign (e.g., K9AN) or grid (e.g., EN50).
rxYesSecond endpoint — callsign (e.g., G8JNJ) or grid (e.g., IO91).
bandNoFilter to a specific band (e.g., 20m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It clearly states the tool reads historical data ('Get SNR trend over time') and returns 'hourly SNR buckets'. No destructive or auth details are needed for this read-only tool, and the description adequately discloses its non-mutating nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no wasted words. The first sentence immediately states the core purpose, followed by concise elaboration. Perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (not shown), so explanation of return values is not required. The description covers the main intent and usage scenarios adequately. Minor omission: no mention of pagination or data format, but the output schema likely covers that. For a simple parameter set, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already provides clear descriptions for each parameter (e.g., 'First endpoint — callsign or grid'). The description adds overall context by explaining the 'path between two endpoints' but does not add per-parameter details beyond the schema. Baseline 3 is appropriate for high coverage with minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource combination ('Get SNR trend over time for a specific WSPR path') and distinguishes the tool from siblings like wspr_spots or wspr_band_activity by focusing on trend analysis for a specific path. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases ('seeing when a band opens and closes on a specific path, and how signal strength varies over time'). While it does not explicitly state when not to use or mention alternatives, the context from sibling tools helps; however, an explicit when-not would elevate this score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_spotsB

Get recent WSPR spots.

WSPR beacons transmit every 2 minutes on precise frequencies. Each spot is a 2-minute integration proving a propagation path exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
callsignNoFilter by TX or RX callsign (e.g., KI7MT, K9AN). Empty for all.
bandNoFilter by band (e.g., 20m, 40m, 10m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).
limitNoMaximum spots to return (1-200, default 50).
gridNoFilter by grid square prefix (e.g., DN13, FN31). Matches TX or RX.
min_snrNoMinimum SNR in dB (e.g., -20). Filter out weak signals.
max_snrNoMaximum SNR in dB (e.g., -5). Filter out strong signals.
min_distanceNoMinimum path distance in km (e.g., 5000 for DX only).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions that WSPR beacons transmit every 2 minutes and spots represent 2-minute integrations, but does not disclose other behaviors such as data freshness limits, pagination behavior, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that directly state the purpose and add key context about WSPR spots. No redundant information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters and an output schema (not shown), the description does not explain return values or typical usage patterns. It provides basic context but lacks guidance on how to interpret spots or combine filters. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters have descriptions in the schema. The description adds no additional meaning beyond the schema; it only restates the tool's purpose. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get recent WSPR spots', specifying the verb and resource. Additional context about WSPR beacon transmission intervals and integration periods distinguishes it from sibling tools like wspr_band_activity or wspr_grid_activity, which aggregate spots differently.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or compare with sibling tools, leaving the agent to infer usage from the name and parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_top_beaconsA

Get top WSPR transmitters ranked by spot count or max distance.

Shows the most active or most far-reaching WSPR beacon operators. Useful for finding who's putting out a big signal on a band.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNoFilter by band (e.g., 20m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).
sort_byNoRanking criteria — "spots" (most heard) or "distance" (farthest reach).spots
limitNoNumber of results (1-50, default 20).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of transparency. It explains the ranking criteria (spot count, max distance) but does not disclose behavioral traits such as whether results are live cached, what time window is used (beyond the hours parameter), or how ties are handled. It is adequate but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences front-load the action and value. Every sentence is purposeful with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, an output schema, and sibling tools, the description covers the core purpose but lacks details on result behavior (e.g., pagination, empty results, ordering ties). It is minimally complete for a simple tool but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, so parameters are well documented. The description adds minimal semantic context beyond the schema (e.g., 'ranked by spot count or max distance' reinforces the sort_by parameter). It does not introduce new meaning or clarify format or units.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves top WSPR transmitters ranked by spot count or max distance. It mentions 'beacon operators', distinguishing from sibling tools like 'wspr_top_spotters' which likely focus on spotters. However, it does not explicitly differentiate from 'wspr_spots' or other related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a general use case ('finding who's putting out a big signal on a band') but lacks explicit guidance on when to use this tool versus alternatives like 'wspr_top_spotters' or 'wspr_spots'. No when-not-to-use or comparative context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wspr_top_spottersA

Get top WSPR receivers ranked by spot count or max distance.

Shows the most prolific or most sensitive WSPR receiving stations. Useful for finding good receivers to monitor for propagation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNoFilter by band (e.g., 20m). Empty for all bands.
hoursNoTime window in hours (1-72, default 24).
sort_byNoRanking criteria — "spots" (most received) or "distance" (farthest heard).spots
limitNoNumber of results (1-50, default 20).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations available, so description carries full burden. It describes a read operation ('Get') and ranking criteria, but lacks details on data freshness, rate limits, or any side effects. Adequate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states core purpose, second elaborates on utility. No redundant words, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values. It covers purpose, usage, and parameter context sufficiently for an agent to select and invoke the tool, though could hint at data source or recency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds broad context about ranking (sort_by) but does not provide additional semantic detail beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with 'Get top WSPR receivers' specifying a clear verb and resource, and mentions ranking by spot count or max distance, distinguishing this from sibling tools like wspr_spots or wspr_top_beacons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Useful for finding good receivers to monitor for propagation,' giving clear use case guidance. However, it does not explicitly state when not to use or name alternatives, though sibling context provides differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.3.2
    • First observedget_version_info
    • First observedwspr_band_activity
    • First observedwspr_grid_activity
    • First observedwspr_longest_paths
    • First observedwspr_propagation
    • First observedwspr_snr_trend
    • First observedwspr_spots
    • First observedwspr_top_beacons
    • First observedwspr_top_spotters

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a unique aspect of WSPR data: version, band activity, grid activity, propagation paths, SNR trends, raw spots, and top stations. No two tools have overlapping purposes, and descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent pattern: 'wspr_' prefix followed by a descriptive noun phrase in snake_case (e.g., wspr_band_activity, wspr_grid_activity). get_version_info is the only exception but uses a standard verb_noun pattern.

Tool Count5/5

With 9 tools, the server is well-scoped for WSPR data retrieval. Each tool serves a distinct analytical need without overwhelming the agent with too many options.

Completeness4/5

The tool surface covers core WSPR query operations: activity by band/grid, propagation analysis, spots, and top stations. Minor gaps exist (e.g., no tool for aggregated statistics or historical comparison), but it covers the main use cases.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for HamQTH.com — callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.
    8
    GPL 3.0
  • A
    license
    A
    quality
    F
    maintenance
    MCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.
    6
    2
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.
    7
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Parks on the Air (POTA) providing live activator spots, park details, activator/hunter stats, and scheduled activations through any MCP-compatible AI assistant.
    8
    1
    GPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qso-graph/wspr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server