get_version_info
Get Version Info
Returns the version of the ADIF-MCP server and spec.
Takes no parameters.

io.github.qso-graphPublished by GitHub account qso-graphv2.1.1Updated Nov 3, 2026
ADIF 3.1.7 spec engine for amateur radio logs: validation, parsing, enumerations, geospatial.
Local MCP server for the ADIF 3.1.7 amateur radio log format: validates and parses ADIF records, searches spec enumerations, and computes distance and heading…
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
MCP server for the ADIF 3.1.7 specification: validate and parse ADIF records, search the spec's fields, enumerations and data types, and compute distance and heading between Maidenhead locators, through any MCP-compatible AI assistant.
Part of the qso-graph project. No authentication required — the ADIF specification is bundled, so it works offline.
ADIF (Amateur Data Interchange Format) is the standard file format amateur radio logging programs use to exchange QSO records. adif-mcp is the specification package of qso-graph: it validates, parses and searches ADIF so an assistant can work with logs safely and accurately. Credentials are handled separately by qso-graph-auth, and each logging service has its own MCP server (see qso-graph.io).
No credentials needed — just install and configure your MCP client.
adif-mcp works with any MCP-compatible client. Add the server config and restart. The tools appear automatically.
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
Add to .claude/settings.json:
Configure via Settings > Apps & Connectors, or in your agent definition:
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
Add to .vscode/mcp.json in your workspace:
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
"Is this ADIF record valid? CALL:5KI7MT<QSO_DATE:8>20260928BAND:320mMODE:3SSB"
"What values does the ADIF MODE enumeration allow for digital modes?"
"Parse my log file and show me the first 50 QSOs."
"How far is it from DN13 to JN48, and what heading should I point the beam?"
adif-mcp ships ADIF 3.1.7 as ADIF publishes it: 186 fields, 25 enumerations and 28 data types.
validate_adif_record checks each field against its ADIF data type and, for enumerated fields,
against the enumeration:
BAND=15M is accepted as 15m.CREDIT_SUBMITTED (a list of Credit or Credit:Medium entries) are
checked entry by entry.MODE=MFSK with SUBMODE=FT4.Location (XDDD MM.MMM), Boolean (Y or N), and IOTA, WWFF, POTA and SOTA
references. What the grammar allows but cannot be right, such as a latitude over 90 degrees or
N/S on a longitude, is a warning, never an error.The server also publishes the MCP resource adif://system/version: the service version and the ADIF
specification version it serves.
Then open the MCP Inspector at http://localhost:8003.
adif-mcp's own code is GPL-3.0-or-later. See LICENSE for details.
The ADIF specification files are not ours. The package includes ADIF's published files for two versions, the previous and the current (3.1.6 and 3.1.7 today), unmodified: every file in ADIF's resource zip except its test material, in every format ADIF publishes (JSON, XML with all.xml and the XSD, CSV, TSV, XLSX, ODS), with a MANIFEST.json of their SHA-256s per version, from the ADIF Developers Group. They are ADIF's work, and our licence doesn't cover them. The only files in that folder that are ours are the derived Country enumeration and each version's MANIFEST.json. See NOTICE.
Source: README.md at commit 8614aab
Get Version Info
Returns the version of the ADIF-MCP server and spec.
Takes no parameters.
Calculate Distance
Calculates distance (km) between Maidenhead locators.
endrequiredstartrequiredCalculate Heading
Calculates heading (azimuth) between Maidenhead locators.
endrequiredstartrequiredParse Adif
Streaming parser for large ADIF files with record seeking. SECURITY NOTE: This tool reads files from the local filesystem using the provided path. Only pass paths to ADIF log files you own.
limitstart_atfile_pathrequiredRead Specification Resource
Reads an ADIF 3.1.7 specification resource (e.g., 'mode', 'fields', 'all'). An unknown or unreadable name is a tool execution error, so the model can see it failed and correct the name rather than being handed an error document that looks like a successful result.
resource_namerequiredList Enumerations
Lists the 26 enumerations: ADIF 3.1.7's 25 plus Country (derived). Each entry's ``source`` says whether it is ADIF's own export or derived by adif-mcp, so a consumer loading reference tables can tell them apart.
Takes no parameters.
Search Enumerations
Searches ADIF 3.1.7 enumerations. Optionally filter by enumeration name.
enumerationsearch_termrequiredValidate Adif Record
Validates an ADIF record against 3.1.7 rules including enum membership.
adif_stringrequired90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
uvx adif-mcp # run it; nothing to install{ "mcpServers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}{ "mcpServers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}{ "mcpServers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}{ "mcpServers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}{ "servers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}{ "mcpServers": { "adif": { "command": "uvx", "args": ["adif-mcp"] } }}adif-mcp --transport streamable-http --port 8003git clone https://github.com/qso-graph/adif-mcp.gitcd adif-mcpuv sync --group devuv run pytest