
Wraps QRZ.com's XML and Logbook APIs for ham radio callsign lookups, DXCC entity resolution, and logbook queries. Six tools cover the essentials: callsign lookup returns grid, license class, and QSL info; DXCC resolution maps callsigns to entities; logbook tools fetch QSO counts, query contacts with filters, and download full logs as ADIF. Built for the qso-graph project and uses qso-graph-auth personas for credential management. QRZ has two separate auth systems (XML subscription for lookups, API key for logbook), and the server handles both. Includes aggressive rate limiting and caching to avoid QRZ's undocumented limits and 24-hour IP bans. Useful if you're building logging tools or need callsign data in AI workflows.
MCP server for QRZ.com — callsign lookups, DXCC entity resolution, and logbook queries through any MCP-compatible AI assistant.
Part of the qso-graph project. Uses qso-graph-auth for credential management.
uvx qrz-mcp # run it; nothing to install
| Tool | API | Auth | Description |
|---|---|---|---|
qrz_lookup | XML | Session key | Callsign lookup (name, grid, DXCC, license class, QSL info, image) |
qrz_dxcc | XML | Session key | DXCC entity resolution from callsign or entity code |
qrz_logbook_status | Logbook | API key | Logbook stats (QSO count, DXCC total, date range) |
qrz_logbook_fetch | Logbook | API key | Query QSOs with filters and transparent pagination |
qrz_download | Logbook | API key | Download full logbook as ADIF |
get_version_info | — | None | Service version + upstream QRZ API version (fleet identity attestation) |
qrz-mcp uses qso-graph-auth personas for credential management. QRZ has two separate auth mechanisms, exposed as two providers — set up whichever you need:
| Provider | Tools | Credentials |
|---|---|---|
qrz | qrz_lookup, qrz_dxcc | username + password |
qrz_logbook | qrz_logbook_status, qrz_logbook_fetch, qrz_download | username + API key |
# Install qso-graph-auth if you haven't
uv tool install qso-graph-auth
# Create a persona (--start is required)
qso-auth persona add --name ki7mt --callsign KI7MT --start 2018-01-01
# XML API (qrz_lookup, qrz_dxcc)
qso-auth provider enable ki7mt qrz
qso-auth creds set ki7mt qrz # asks for your username, then your password (hidden)
# Logbook API (qrz_logbook_status, qrz_logbook_fetch, qrz_download)
qso-auth provider enable ki7mt qrz_logbook
qso-auth creds set ki7mt qrz_logbook # asks for your username, then your API key
# Verify
qso-auth creds doctor
Pass the persona name (ki7mt above) as the persona argument on every tool call.
Omit
--password/--api-keyto be prompted instead — passing secrets as CLI arguments leaves them in your shell history.
XML API (callsign lookup, DXCC) requires a QRZ XML Subscription ($35.95/yr). Free tier returns name and address only.
Logbook API requires an API key from QRZ Settings > API.
qrz-mcp works with any MCP-compatible client. Add the server config and restart — tools appear automatically.
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
Add to .claude/settings.json:
{
"mcpServers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
ChatGPT supports MCP via the OpenAI Agents SDK. Add under Settings > Apps & Connectors, or configure in your agent definition:
{
"mcpServers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"qrz": {
"command": "uvx",
"args": ["qrz-mcp"]
}
}
}
"Look up W1AW on QRZ — what's their grid and license class?"
"What DXCC entity is VP8PJ?"
"How many QSOs do I have in my QRZ logbook?"
"Show me all 20m FT8 QSOs from my QRZ logbook this year"
QRZ enforces undocumented rate limits that can trigger 24-hour IP bans. qrz-mcp protects you:
Set the mock environment variable to test all 6 tools without QRZ credentials:
QRZ_MCP_MOCK=1 qrz-mcp
qrz-mcp --transport streamable-http --port 8002
Then open the MCP Inspector at http://localhost:8002.
git clone https://github.com/qso-graph/qrz-mcp.git
cd qrz-mcp
uv sync --group dev
uv run pytest
| Feature | Free | XML Data ($35.95/yr) |
|---|---|---|
| Callsign lookups/day | 100 | Unlimited |
| Fields returned | Name + address only | All (grid, lat/lon, DXCC, class, QSL, image) |
| Logbook API | No | Yes |
| DXCC lookup | No | Yes |
GPL-3.0-or-later