Skip to main content

ADIF MCP server — spec parsing, validation, and field enumeration tools

Project description

adif-mcp

Core Model Context Protocol (MCP) server for Amateur Radio Logging, built on the ADIF 3.1.6 specification.

Overview

adif-mcp gives AI agents safe, typed access to Amateur Radio logging data. It validates and parses ADIF records, searches the full ADIF 3.1.6 specification (fields, enumerations, data types), and provides geospatial utilities for Maidenhead locators. It also provides persona management and keyring-backed credential storage used by the qso-graph family of MCP servers.

Made with Python License: GPL-3.0 ADIF 3.1.6 PyPI CI Docs

Quick Start

pip install adif-mcp

Configure Your MCP Client

adif-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": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

Claude Code

Add to .claude/settings.json:

{
  "mcpServers": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

ChatGPT Desktop

Configure via Settings > Apps & Connectors, or in your agent definition:

{
  "mcpServers": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

Cursor

Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

VS Code / GitHub Copilot

Add to .vscode/mcp.json in your workspace:

{
  "servers": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):

{
  "mcpServers": {
    "adif": {
      "command": "adif-mcp"
    }
  }
}

Tools

adif-mcp exposes 8 tools via the Model Context Protocol:

Category Tool Description
Validation validate_adif_record Validate a raw ADIF string against the 3.1.6 spec
Validation parse_adif Streaming parser for large ADIF files with pagination
Spec read_specification_resource Retrieve raw JSON for any spec module (band, mode, fields)
Spec list_enumerations List all ADIF enumerations with entry counts
Spec search_enumerations Search enumeration records by keyword
Geospatial calculate_distance Great Circle distance (km) between two Maidenhead locators
Geospatial calculate_heading Initial beam heading (azimuth) between two locators
System get_version_info Active service version and ADIF spec version

Architecture

adif-mcp is the foundation package -- ADIF spec tools, persona management, and credential storage. Service integrations are separate MCP servers that depend on adif-mcp for identity and auth:

Package PyPI What It Does
adif-mcp v0.9.6 ADIF 3.1.6 spec tools + persona/credential management
lotw-mcp v0.2.0 LoTW confirmations, QSOs, DXCC credits, user activity
eqsl-mcp v0.2.0 eQSL inbox, verification, AG status, last upload
qrz-mcp v0.2.1 Callsign lookup, DXCC, logbook status/fetch
hamqth-mcp v0.2.0 Callsign lookup, DXCC, bio, activity, DX spots, RBN
pota-mcp v0.1.1 Parks on the Air spots, park info, stats, schedules
sota-mcp v0.1.1 Summits on the Air spots, alerts, summit info, stats
solar-mcp v0.1.1 Space weather conditions, forecasts, band outlook
wspr-mcp v0.1.1 WSPR beacon spots, propagation, band activity
iota-mcp v0.1.0 Islands on the Air lookup, search, nearby groups

Authenticated servers use adif-mcp for persona lookup and keyring-backed credentials. Operators install only the servers they need. Each server is independently versioned with no unnecessary dependencies.

Compliance & Provenance

adif-mcp follows the ADIF Specification (currently 3.1.6) and uses registered Program IDs to identify all exports:

  • ADIF-MCP -- Core engine
  • ADIF-MCP-LOTW -- LoTW server
  • ADIF-MCP-EQSL -- eQSL server
  • ADIF-MCP-QRZ -- QRZ server

The project uses APP_ fields for provenance when augmenting records:

  • APP_ADIF-MCP_OP -- operation performed (normalize, validate, merge)
  • APP_ADIF-MCP-LOTW_ACTION -- LoTW server operation
  • APP_ADIF-MCP-EQSL_TIME -- timestamp of eQSL merge

License

GPL-3.0-or-later. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

adif_mcp-1.0.1.tar.gz (254.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

adif_mcp-1.0.1-py3-none-any.whl (261.0 kB view details)

Uploaded Python 3

File details

Details for the file adif_mcp-1.0.1.tar.gz.

File metadata

  • Download URL: adif_mcp-1.0.1.tar.gz
  • Upload date:
  • Size: 254.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for adif_mcp-1.0.1.tar.gz
Algorithm Hash digest
SHA256 ba77769dd6b8ccb3a5145b91ca3ddbcbc847797f0511da3f23140a03e79cdbf2
MD5 bd4ac3ad68812a65d94c83d32f0116ba
BLAKE2b-256 6b1be726183ca942e6fb7eec68415365fe3cad85d8cd6ff79815c81d9bac04b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for adif_mcp-1.0.1.tar.gz:

Publisher: publish.yml on qso-graph/adif-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adif_mcp-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: adif_mcp-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 261.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for adif_mcp-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a0a8bc7e9a6d95e1e95f382459a0442a2cdd9fa69031f2de0b3fa46f6543c61c
MD5 3bc32861ba5a93571b70711e60bc6c2e
BLAKE2b-256 1898a0778c519c706857aa116ff87976e2d21d497f5a454c9ebc133b0c29e6ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for adif_mcp-1.0.1-py3-none-any.whl:

Publisher: publish.yml on qso-graph/adif-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page