io.github.qso-graph/pota-mcp
This MCP server lets an AI assistant query public Parks on the Air (POTA) data through read-only tools.
View current activator spots, optionally filtered by band, mode, program, or location.
Look up park details, activation/QSO stats, recent activations, and top activator/hunter leaderboards.
Get activator and hunter statistics for a callsign.
Find upcoming scheduled activations with location, park, activator, and time-window filters.
List all parks in a state/province/country and find nearby parks for 2-fer planning.
Find nearby rare or never-activated parks.
Check the MCP server version and upstream POTA API revision for fleet alignment.
Enables GitHub Copilot to access POTA data including current spots, park information, user statistics, and upcoming scheduled activations.
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/pota-mcp What are the current POTA spots?"
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.
pota-mcp
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 installRelated MCP server: qrz-mcp
Tools
Tool | Description |
| Current activator spots with park/grid enrichment and optional filters |
| Park details by reference code (name, grid, type, agencies, website) |
| Activation and QSO counts for a park |
| A park's recent activations—who, when, and QSOs by mode |
| A park's top activators, activator QSOs and hunter QSOs |
| Activator/hunter stats by callsign (callsign, name, activator, attempts, hunter, awards, endorsements; no address or email-derived fields) |
| Upcoming scheduled activations, with optional location, park, activator and time-window filters |
| All parks in a state/province/country |
| Find parks near a point—great for 2-fer planning |
| Parks near a point that are rarely or never activated |
| 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-mcpMCP Inspector
pota-mcp --transport streamable-http --port 8006Then 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 pytestLicense
GPL-3.0-or-later
Available Tools
11 toolsget_version_infoGet Version InfoARead-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 ParksARead-onlyIdempotent
List all POTA parks in a state, province, or country.
Inputs: location (required). Returns: object
pota_nearby_parksPota Nearby ParksARead-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 ActivationsARead-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 InfoCRead-onlyIdempotent
Get detailed park information by POTA reference code.
Inputs: reference (required). Returns: object
pota_park_leaderboardPota Park LeaderboardARead-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 StatsBRead-onlyIdempotent
Get activation and QSO counts for a POTA park.
Inputs: reference (required). Returns: object
pota_rare_parks_nearPota Rare Parks NearARead-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 ScheduledARead-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 SpotsARead-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 StatsARead-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
Scored across 11 tools
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.
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.
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.
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
Related MCP Connectors
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for HamQTH.com — callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.896 PyPIGPL 3.0
- AlicenseAqualityAmaintenanceMCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.6171 PyPI4GPL 3.0
- AlicenseAqualityAmaintenanceEnables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.798 PyPIGPL 3.0
- AlicenseBqualityAmaintenanceMCP server for Summits on the Air (SOTA) — live spots, activation alerts, summit info, and nearby summits through any MCP-compatible AI assistant.580 PyPI1GPL 3.0