sota-mcp
Allows querying SOTA (Summits on the Air) live spots, activation alerts, summit details, and nearby summits through GitHub Copilot.
Click on "Install 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., "@sota-mcpWhat SOTA spots are active right now?"
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.
sota-mcp
MCP server for Summits on the Air (SOTA) — live spots, activation alerts, summit info, and nearby summits through any MCP-compatible AI assistant.
Part of the QSO-Graph project. No authentication required — uses the public SOTA API exclusively.
Install
pip install sota-mcpRelated MCP server: qrz-mcp
Tools
Tool | Description |
| Current and recent spots with time window and association/mode filters |
| Upcoming scheduled activation alerts |
| Summit details by SOTA reference code |
| Find summits near coordinates (geospatial search) |
| Service version + upstream spec version (fleet identity attestation) |
Quick Start
No credentials needed — just install and configure your MCP client.
Configure your MCP client
sota-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": {
"sota": {
"command": "sota-mcp"
}
}
}Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"sota": {
"command": "sota-mcp"
}
}
}ChatGPT Desktop
{
"mcpServers": {
"sota": {
"command": "sota-mcp"
}
}
}Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"sota": {
"command": "sota-mcp"
}
}
}VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"sota": {
"command": "sota-mcp"
}
}
}Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"sota": {
"command": "sota-mcp"
}
}
}Ask questions
"What SOTA spots are active right now?"
"Tell me about summit W7I/SI-001"
"What summits are near Boise, Idaho?"
"Any SOTA alerts for this weekend?"
Testing Without Network
For testing all tools without hitting the SOTA APIs:
SOTA_MCP_MOCK=1 sota-mcpMCP Inspector
sota-mcp --transport streamable-http --port 8007Then open the MCP Inspector at http://localhost:8007.
Development
git clone https://github.com/qso-graph/sota-mcp.git
cd sota-mcp
pip install -e .License
GPL-3.0-or-later
Available Tools
5 toolsget_version_infoA
Get sota-mcp service version and upstream spec version.
Returns the running PyPI version of sota-mcp and the SOTA api2 endpoint contract 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 (SOTA api2).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses the read-only nature and specifies exact return fields (service_name, service_version, spec_version). No hidden side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, context/use case, and return fields. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and presence of output schema, the description fully explains the return values and use case, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. Baseline 4 applies as the description adds no parameter details needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves service version and upstream spec version, with specific fields like service_version and spec_version. Distinguishes from sibling tools (alerts, spots, summits) by focusing on version info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the use case: confirming fleet alignment across MCP deployments and detecting drift. Provides clear context but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sota_alertsB
Get upcoming SOTA activation alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Look-ahead window in hours (default 16). | |
| association | No | Filter by SOTA association (e.g., W7I). Empty for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'Get upcoming SOTA activation alerts' without disclosing behavior (e.g., read-only, rate limits, or output nature).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose. However, it could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 optional parameters and an output schema, the description is minimal. It lacks details on output format or constraints, but the schema covers the input adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions ('Look-ahead window in hours...', 'Filter by SOTA association...').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'upcoming SOTA activation alerts', and distinguishes from sibling tools like 'sota_spots' and 'sota_summit_info'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'sota_spots' or 'sota_summits_near'. Context or exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sota_spotsB
Get current and recent SOTA spots.
Returns live spot feed with summit details.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Time window in hours (default 24). | |
| association | No | Filter by SOTA association (e.g., W7I, G, VK). Empty for all. | |
| mode | No | Filter by mode (e.g., CW, SSB, FT8). Empty for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states it returns a live spot feed, lacking details on idempotency, rate limits, data freshness, or potential side effects. As a read operation, additional context like real-time nature or caching would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, each serving a distinct purpose: first states the action, second explains the return value. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 optional parameters and an output schema, the description is minimally adequate. However, it could mention the context of 'spots' (e.g., summit activations or contacts) or provide usage hints among siblings. The output schema covers return structure, so not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description and default. The tool description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate. No further clarification of parameter semantics is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves current and recent SOTA spots with summit details. The verb 'Get' and resource 'SOTA spots' are specific, and the name sota_spots distinguishes it from siblings like sota_alerts or sota_summit_info, though no explicit differentiation is given.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool over its siblings (e.g., sota_alerts for alerts, sota_summits_near for nearby summits), nor does it specify any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sota_summit_infoB
Get detailed summit information by SOTA reference code.
| Name | Required | Description | Default |
|---|---|---|---|
| summit_code | Yes | SOTA reference (e.g., W7I/SI-001, G/LD-001). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as data freshness, rate limits, authentication needs, or what constitutes 'detailed'. The tool is essentially a black box beyond its stated purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It could be slightly improved by mentioning availability or limitations, but it efficiently conveys the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema (not shown in the provided definition), the description does not need to document return values. However, the lack of behavioral details and usage guidance leaves the tool somewhat incomplete for an agent to fully understand its capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the single parameter has an informative description). The tool description adds minimal extra meaning beyond restating the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('detailed summit information'), and identifies the input method ('by SOTA reference code'). It naturally distinguishes from siblings that handle alerts, spots, or nearby summits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies through context that this tool is for retrieving summit details given a code, but it does not explicitly explain when to use this tool over siblings like sota_spots or sota_summits_near, nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sota_summits_nearC
Find SOTA summits near a geographic location.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Center latitude (decimal degrees). | |
| longitude | Yes | Center longitude (decimal degrees). | |
| radius_km | No | Search radius in km (default 50). | |
| limit | No | Maximum number of results (default 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states that the tool finds summits near a location but does not disclose if it is read-only, any side effects, rate limits, or whether it includes all summits or only specific ones (e.g., only activated). This leaves ambiguity about safety and behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is too brief and lacks additional context that would benefit usability (e.g., default behavior). Still, it is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no annotations, output schema exists but is not referenced), the description is incomplete. It does not explain the output format, any constraints on radius or coordinate system, or the type of summits returned. The presence of an output schema partially mitigates, but the description should at least hint at the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with clear descriptions for each parameter (latitude, longitude, radius_km, limit). The description does not add any semantics beyond what the schema already conveys, such as coordinate format or radius constraints. Baseline score of 3 applies since schema is comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'SOTA summits near a geographic location'. It distinguishes from siblings like 'sota_summit_info' (single summit) and 'sota_spots' (recent spots) by specifying a location-based search. However, it could be more specific about the type of summits (e.g., all summits or only activated ones).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool over alternatives like 'sota_summit_info' for a specific summit or 'sota_spots' for recent activity. There is no mention of prerequisites or context for use.
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.
5 tool updates
v0.1.6- First observed
get_version_info - First observed
sota_alerts - First observed
sota_spots - First observed
sota_summit_info - First observed
sota_summits_near
TDQS
Each tool has a distinct purpose: version info, alerts, spots, summit details, and nearby summits. No overlap or ambiguity.
Most tools use consistent snake_case with a 'sota_' prefix, but 'get_version_info' breaks the pattern slightly. Still readable and predictable.
5 tools is well-scoped for a SOTA service, covering essential operations without unnecessary bloat.
Core functionality is covered (alerts, spots, summit info, location search). Minor gaps like filtering spots by summit or user accounts are acceptable.
Maintenance
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
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Pocket Agent (aipocketagent.com) MCP server — read tools for personas, apps, and product info.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP 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
- AlicenseAqualityFmaintenanceMCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.62GPL 3.0
- AlicenseAqualityDmaintenanceEnables IOTA group lookup, island search, DXCC mapping, nearby groups, and programme statistics through any MCP-compatible AI assistant.7GPL 3.0
- AlicenseAqualityDmaintenanceMCP 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.81GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sota-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server