Skip to main content
Glama
io.github.qso-graph/pota-mcp

io.github.qso-graph/pota-mcp

by qso-graph

pota-mcp

PyPI MCP Registry

MCP server for Parks on the Air (POTA)—live activator spots, park info, activator/hunter stats, and scheduled activations through any MCP-compatible AI assistant.

Part of the qso-graph project. No authentication required—all POTA endpoints are public.

Install

uvx pota-mcp            # run it; nothing to install

Related MCP server: qrz-mcp

Tools

Tool

Description

pota_spots

Current activator spots with park/grid enrichment and optional filters

pota_park_info

Park details by reference code (name, grid, type, agencies, website)

pota_park_stats

Activation and QSO counts for a park

pota_park_activations

A park's recent activations—who, when, and QSOs by mode

pota_park_leaderboard

A park's top activators, activator QSOs and hunter QSOs

pota_user_stats

Activator/hunter stats by callsign (callsign, name, activator, attempts, hunter, awards, endorsements; no address or email-derived fields)

pota_scheduled

Upcoming scheduled activations, with optional location, park, activator and time-window filters

pota_location_parks

All parks in a state/province/country

pota_nearby_parks

Find parks near a point—great for 2-fer planning

pota_rare_parks_near

Parks near a point that are rarely or never activated

get_version_info

Service version + upstream spec version (fleet identity attestation)

Quick Start

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

Configure your MCP client

pota-mcp works with any MCP-compatible client. Add the server config and restart—tools appear automatically.

Claude Desktop

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

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

Claude Code

Add to .claude/settings.json:

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

ChatGPT Desktop

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

Cursor

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

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

VS Code / GitHub Copilot

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

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

Gemini CLI

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

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

Ask questions

"What POTA activations are happening right now?"

"Tell me about park US-0001—how many activations has it had?"

"What are K4SWL's POTA stats?"

"Show me all parks in Idaho"

"Are there any CW activators on 20m right now?"

"What activations are scheduled for tomorrow?"

Testing Without Network

For testing all tools without hitting the POTA API:

POTA_MCP_MOCK=1 pota-mcp

MCP Inspector

pota-mcp --transport streamable-http --port 8006

Then open the MCP Inspector at http://localhost:8006.

Development

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

License

GPL-3.0-or-later

Available Tools

11 tools
get_version_infoGet Version InfoA
Read-onlyIdempotent

Get pota-mcp service version and upstream spec version.

Returns the running PyPI version of pota-mcp and the POTA API revision currently 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

pota_location_parksPota Location ParksA
Read-onlyIdempotent

List all POTA parks in a state, province, or country.

Inputs: location (required). Returns: object

pota_nearby_parksPota Nearby ParksA
Read-onlyIdempotent

Find POTA parks near a geographic point.

Fetches all parks in the given location and filters by distance. Useful for finding 2-fer candidates near an activation site.

Inputs: latitude (required), location (required), longitude (required), limit, +1 more. Returns: object

pota_park_activationsPota Park ActivationsA
Read-onlyIdempotent

List recent activations of a POTA park, most recent first.

Answers "when was this park last activated?" and "is it often on the air?".

Inputs: reference (required), count. Returns: object

pota_park_infoPota Park InfoC
Read-onlyIdempotent

Get detailed park information by POTA reference code.

Inputs: reference (required). Returns: object

pota_park_leaderboardPota Park LeaderboardA
Read-onlyIdempotent

Top activators and hunters of a POTA park.

Three boards: most activations, most QSOs as an activator, most QSOs as a hunter. Each row is a callsign and a count and nothing else.

Inputs: reference (required), limit. Returns: object

pota_park_statsPota Park StatsB
Read-onlyIdempotent

Get activation and QSO counts for a POTA park.

Inputs: reference (required). Returns: object

pota_rare_parks_nearPota Rare Parks NearA
Read-onlyIdempotent

Find the least-activated POTA parks near a point.

Answers "which parks near me have never, or rarely, been activated?" — for an activator looking for something unworked, or a hunter looking for a rare one. Least activated first, nearest first among equals.

Inputs: latitude (required), location (required), longitude (required), limit, +1 more. Returns: object

pota_scheduledPota ScheduledA
Read-onlyIdempotent

Get upcoming scheduled POTA activations.

All filters are optional and combine with AND — omit them all and the whole schedule comes back, as before.

Inputs: location, activator, reference, within_hours. Returns: object

pota_spotsPota SpotsA
Read-onlyIdempotent

Get current POTA activator spots.

Returns live spot feed with park details, grid squares, and coordinates. All filters are optional — omit to get all active spots.

Inputs: band, mode, program, location. Returns: object

pota_user_statsPota User StatsA
Read-onlyIdempotent

Get POTA activator and hunter statistics for a callsign.

Inputs: callsign (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation4/5

    Most tools cleanly target distinct Park/User/Activity/Spot/Schedule resources. The only meaningful overlap is pota_nearby_parks vs pota_rare_parks_near, which the latter's description explicitly refines (rarity-filtered subset), and pota_park_activations vs pota_spots/pota_scheduled which differ by time frame.

    Naming Consistency4/5

    Ten of eleven tools follow a consistent pota_<resource> snake_case convention. get_version_info breaks the prefix pattern, though it is a service-level meta tool and its name is still clear and predictable in style.

    Tool Count5/5

    Eleven tools is well-scoped for a POTA domain covering parks, activations, spots, schedules, users, and leaderboards. Each tool has a distinguishable job and none appear redundant.

    Completeness4/5

    Coverage spans discovery (location, nearby, rare), live/scheduled activity, historical activations, stats, and leaderboards, plus a version tool. Minor gaps remain: no lookup by park name or callsign-driven park listing, and no per-activation QSO detail, but core activator/hunter workflows are supported.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      A
      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
      96 PyPI
      GPL 3.0
    • A
      license
      A
      quality
      A
      maintenance
      MCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.
      6
      171 PyPI
      4
      GPL 3.0
    • A
      license
      A
      quality
      A
      maintenance
      Enables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.
      7
      98 PyPI
      GPL 3.0
    • A
      license
      B
      quality
      A
      maintenance
      MCP server for Summits on the Air (SOTA) — live spots, activation alerts, summit info, and nearby summits through any MCP-compatible AI assistant.
      5
      80 PyPI
      1
      GPL 3.0