{
  "markdown": "<!-- mcp-name: io.github.qso-graph/lotw-mcp -->\n# lotw-mcp\n\nMCP server for [ARRL Logbook of The World](https://lotw.arrl.org/) (LoTW) — query confirmations, uploaded QSOs, DXCC credits, and user activity through any MCP-compatible AI assistant.\n\nPart of the [qso-graph](https://qso-graph.io/) project. Read-only — uploads require TQSL digital signatures and are out of scope.\n\n## Install\n\n```bash\npip install lotw-mcp\n```\n\n## Tools\n\n| Tool | Auth | Description |\n|------|------|-------------|\n| `lotw_confirmations` | Yes | Query confirmed QSLs with band/mode/call/date filters |\n| `lotw_qsos` | Yes | Query all uploaded QSOs (confirmed and unconfirmed) |\n| `lotw_dxcc_credits` | Yes | DXCC award credits from LoTW confirmations |\n| `lotw_download` | Yes | Download QSOs as ADIF file |\n| `lotw_user_activity` | No | Check if a callsign uses LoTW and when they last uploaded |\n| `get_version_info` | No | Service version + upstream LoTW schema version (fleet identity attestation) |\n\n## Quick Start\n\n### 1. Set up credentials\n\nlotw-mcp uses qso-graph-auth personas for credential management:\n\n```bash\npip install qso-graph-auth\n\nqso-auth persona create ki7mt --callsign KI7MT\nqso-auth persona provider ki7mt lotw --username KI7MT\nqso-auth persona secret ki7mt lotw\n```\n\n**Note**: The LoTW `login` is usually your callsign but not always. Pre-Sept 2019 accounts may require lowercase passwords. Avoid special characters in passwords.\n\n### 2. Configure your MCP client\n\n#### Claude Desktop\n\nAdd to `claude_desktop_config.json` (`~/Library/Application Support/Claude/` on macOS, `%APPDATA%\\Claude\\` on Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n#### Claude Code\n\nAdd to `.claude/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n#### ChatGPT Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n#### Cursor\n\nAdd to `.cursor/mcp.json` (project-level) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n#### VS Code / GitHub Copilot\n\nAdd to `.vscode/mcp.json` in your workspace:\n\n```json\n{\n  \"servers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n#### Gemini CLI\n\nAdd to `~/.gemini/settings.json` (global) or `.gemini/settings.json` (project):\n\n```json\n{\n  \"mcpServers\": {\n    \"lotw\": {\n      \"command\": \"lotw-mcp\"\n    }\n  }\n}\n```\n\n### 3. Ask questions\n\n> \"How many LoTW confirmations did I get this month?\"\n\n> \"Show me all unconfirmed 20m FT8 QSOs uploaded to LoTW in the last 90 days\"\n\n> \"What DXCC credits do I have on 40m CW?\"\n\n> \"Does JA1ABC use LoTW? When did they last upload?\"\n\n## Public Tool\n\n`lotw_user_activity` works without any credentials. It uses the public LoTW user activity CSV, cached locally for 7 days.\n\n## Testing Without Credentials\n\nSet the mock environment variable:\n\n```bash\nLOTW_MCP_MOCK=1 lotw-mcp\n```\n\n## Performance Notes\n\nLoTW can be slow (30-60s for large queries). lotw-mcp uses 120s timeouts. Use date filters (`since`, `start_date`) to limit result sets.\n\n## MCP Inspector\n\n```bash\nlotw-mcp --transport streamable-http --port 8004\n```\n\n## Development\n\n```bash\ngit clone https://github.com/qso-graph/lotw-mcp.git\ncd lotw-mcp\npip install -e .\n```\n\n## License\n\nGPL-3.0-or-later\n",
  "bytes": 3344,
  "sha": "9b925fe683b74dbf2d5841a0dc89d9a6f944d9b5554e8016231c8772035eb8ef",
  "repo_slug": "qso-graph/lotw-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_qso_graph_lotw_mcp_ed0fcb7e/readme"
}