pypi lotw-mcpstdioupdated 3mo ago
MCP server for ARRL Logbook of The World (LoTW) — query confirmations, uploaded QSOs, DXCC credits, and user activity through any MCP-compatible AI assistant.
What can you do with lotw mcp?
lotw-mcp
MCP server for ARRL Logbook of The World (LoTW) — query confirmations, uploaded QSOs, DXCC credits, and user activity through any MCP-compatible AI assistant.
Part of the qso-graph project. Read-only — uploads require TQSL digital signatures and are out of scope.
Install
pip install lotw-mcp
Tools
| Tool | Auth | Description |
|---|---|---|
lotw_confirmations |
Yes | Query confirmed QSLs with band/mode/call/date filters |
lotw_qsos |
Yes | Query all uploaded QSOs (confirmed and unconfirmed) |
lotw_dxcc_credits |
Yes | DXCC award credits from LoTW confirmations |
lotw_download |
Yes | Download QSOs as ADIF file |
lotw_user_activity |
No | Check if a callsign uses LoTW and when they last uploaded |
get_version_info |
No | Service version + upstream LoTW schema version (fleet identity attestation) |
Quick Start
1. Set up credentials
lotw-mcp uses qso-graph-auth personas for credential management:
pip install qso-graph-auth
qso-auth persona create ki7mt --callsign KI7MT
qso-auth persona provider ki7mt lotw --username KI7MT
qso-auth persona secret ki7mt lotw
Note: The LoTW login is usually your callsign but not always. Pre-Sept 2019 accounts may require lowercase passwords. Avoid special characters in passwords.
2. Configure your MCP client
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
ChatGPT Desktop
{
"mcpServers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
VS Code / GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
Gemini CLI
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
{
"mcpServers": {
"lotw": {
"command": "lotw-mcp"
}
}
}
3. Ask questions
"How many LoTW confirmations did I get this month?"
"Show me all unconfirmed 20m FT8 QSOs uploaded to LoTW in the last 90 days"
"What DXCC credits do I have on 40m CW?"
"Does JA1ABC use LoTW? When did they last upload?"
Public Tool
lotw_user_activity works without any credentials. It uses the public LoTW user activity CSV, cached locally for 7 days.
Testing Without Credentials
Set the mock environment variable:
LOTW_MCP_MOCK=1 lotw-mcp
Performance Notes
LoTW can be slow (30-60s for large queries). lotw-mcp uses 120s timeouts. Use date filters (since, start_date) to limit result sets.
MCP Inspector
lotw-mcp --transport streamable-http --port 8004
Development
git clone https://github.com/qso-graph/lotw-mcp.git
cd lotw-mcp
pip install -e .
License
GPL-3.0-or-later
Install
Add lotw mcp to your client. Pick the one you use.
claude mcp add lotw-mcp -- uvx lotw-mcpcodex mcp add lotw-mcp -- uvx lotw-mcpamp mcp add lotw-mcp -- uvx lotw-mcp{
"mcpServers": {
"lotw-mcp": {
"command": "uvx",
"args": [
"lotw-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"lotw-mcp": {
"command": "uvx",
"args": [
"lotw-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"lotw-mcp","command":"uvx","args":["lotw-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"lotw-mcp": {
"command": "uvx",
"args": [
"lotw-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"lotw-mcp": {
"command": "uvx",
"args": [
"lotw-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"lotw-mcp": {
"command": "uvx",
"args": [
"lotw-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"lotw-mcp": {
"type": "local",
"command": "uvx",
"args": [
"lotw-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"lotw-mcp": {
"command": {
"path": "uvx",
"args": [
"lotw-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
uvx lotw-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
6 tools
lotw mcp exposes 6 tools to a connected agent.
- lotw_confirmations
- Yes
- lotw_qsos
- Yes
- lotw_dxcc_credits
- Yes
- lotw_download
- Yes
- lotw_user_activity
- No
- get_version_info
- No
Score
62 / 100
Good
- Documentation22/25
- Maintenance13/25
- Trust9/20
- Capability6/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 108 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 6 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.2.0Latest | Mar 6, 2026 |