Getting Started¶
Install¶
Every QSO-Graph package is a standalone pip install:
# Authenticated servers (require credential setup)
pip install eqsl-mcp
pip install qrz-mcp
pip install lotw-mcp
pip install hamqth-mcp
# Public servers (no credentials needed — just install and go)
pip install pota-mcp
pip install sota-mcp
pip install iota-mcp
pip install solar-mcp
pip install wspr-mcp
All packages require Python 3.10+.
Credential Setup¶
Servers that access your accounts use qso-graph-auth to store credentials securely in your OS keyring.
pip install qso-graph-auth
# Create a persona (your callsign identity)
qso-auth persona add --name ki7mt --callsign KI7MT --start 2020-01-01
# Store credentials for each service (prompts interactively — never pass passwords on the command line)
qso-auth creds set ki7mt eqsl
qso-auth creds set ki7mt lotw
qso-auth creds set ki7mt qrz
qso-auth creds set ki7mt qrz_logbook
qso-auth creds set ki7mt hamqth
# Verify everything is wired up
qso-auth creds doctor
Your credentials are stored in the OS keyring (macOS Keychain, Windows Credential Manager, or Linux Secret Service) — never in config files.
See the Credential Setup Guide for full details, per-server examples, and troubleshooting.
MCP Client Configuration¶
Claude Desktop¶
Add servers to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"eqsl": {
"command": "eqsl-mcp"
},
"qrz": {
"command": "qrz-mcp"
},
"lotw": {
"command": "lotw-mcp"
},
"hamqth": {
"command": "hamqth-mcp"
},
"pota": {
"command": "pota-mcp"
},
"sota": {
"command": "sota-mcp"
},
"iota": {
"command": "iota-mcp"
},
"solar": {
"command": "solar-mcp"
},
"wspr": {
"command": "wspr-mcp"
}
}
}
Claude Code¶
Add to ~/.claude/settings.json:
ChatGPT Desktop¶
Add to ~/.chatgpt/config.json:
Cursor¶
Add to .cursor/mcp.json in your project:
VS Code (GitHub Copilot)¶
Add to .vscode/mcp.json in your workspace:
Gemini CLI¶
Add to ~/.gemini/settings.json:
Mock Mode¶
Every server supports a mock mode for testing without real credentials:
# Run any server in mock mode
EQSL_MCP_MOCK=1 eqsl-mcp
QRZ_MCP_MOCK=1 qrz-mcp
LOTW_MCP_MOCK=1 lotw-mcp
HAMQTH_MCP_MOCK=1 hamqth-mcp
POTA_MCP_MOCK=1 pota-mcp
SOTA_MCP_MOCK=1 sota-mcp
IOTA_MCP_MOCK=1 iota-mcp
SOLAR_MCP_MOCK=1 solar-mcp
WSPR_MCP_MOCK=1 wspr-mcp
MCP Inspector¶
Test any server interactively with the MCP Inspector:
# Start a server with HTTP transport
eqsl-mcp --transport streamable-http --port 8001
# Open http://localhost:8001 in MCP Inspector
Each server uses a default port for Inspector mode:
| Server | Port |
|---|---|
| eqsl-mcp | 8001 |
| qrz-mcp | 8002 |
| lotw-mcp | 8004 |
| hamqth-mcp | 8005 |
| pota-mcp | 8006 |
| sota-mcp | 8007 |
| solar-mcp | 8008 |
| wspr-mcp | 8009 |
| iota-mcp | 8010 |
Try It¶
Once configured, ask your AI assistant:
- "Look up W1AW on QRZ"
- "Do I have any new eQSL confirmations?"
- "Show me my LoTW DXCC credits"
- "What POTA spots are on 20m right now?"
- "Find SOTA summits near Boise, Idaho"
- "What are the current solar conditions?"
- "What bands are open on WSPR right now?"
- "Look up IOTA group OC-019"
- "What IOTA groups are near Boise, Idaho?"