itu-zones-mcp¶
Source: the IARU's HF Managers Handbook, chapter 9.8, "Definition of ITU-Zones when used by radio amateurs" (IARU Region 1, v8.2; the chapter's pages are dated November 2000). The zone border-lines for amateur use are kept there under IARU Region 1 recommendation REC/99/LH/C4.2; the list was drafted by G3HTA from the ITU's CIRAF zones and approved by all three IARU regions. The 90 ITU zones are the IARU's: this package serves facts from that chapter, each citing its page and zone, and links to the handbook rather than copying it. Our GPL-3.0 licence covers our code, not the IARU's data.
Checked against: AD1C's country files (Jim Reisert, AD1C), ADIF 3.1.7's subdivision zones, and ARRL's DXCC list. The tests fetch AD1C's and ARRL's files from their sites to validate the facts; neither is included here. where they differ, the owner's list wins (see docs/TRANSCRIPTION.md).
MCP server for ITU zones as the IARU publishes them for amateur use: the 90 zones of chapter 9.8, "Definition of ITU-Zones when used by radio amateurs", of the IARU Region 1 HF Managers Handbook (v8.2), used by the IARU HF Championship and ITU-zone awards. Each zone's prefixes are given in ADIF's own DXCC and subdivision codes, with the IARU's own wording where it splits an area by a line.
Part of the qso-graph project. No network, no authentication: the facts from the owner's list ship with the package, and every answer names its source.
Install¶
Tools¶
| Tool | Description | Key Parameters |
|---|---|---|
itu_zones_lookup |
One zone: every prefix, subdivision and boundary the IARU lists, with the citation | code |
itu_zones_codes_for |
Which zones cover an ADIF DXCC entity, or one of its subdivisions | dxcc, subdivision |
itu_zones_search |
Find zones by prefix or wording | text, limit |
itu_zones_valid_on |
Whether a zone was valid on a date (ITU zones have no validity window) | code, on_date |
itu_zones_source_info |
Owner, edition, terms, and the owner's file's URL and SHA-256 | — |
get_version_info |
Service version + the owner's edition served (fleet identity attestation) | — |
Quick Start¶
No credentials needed — just install and configure your MCP client.
Configure your MCP client¶
itu-zones-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):
Claude Code¶
Add to .claude/settings.json:
ChatGPT Desktop¶
Cursor¶
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
VS Code / GitHub Copilot¶
Add to .vscode/mcp.json in your workspace:
Gemini CLI¶
Add to ~/.gemini/settings.json (global) or .gemini/settings.json (project):
Ask questions¶
"Which ITU zone is Arizona in?"
"What does ITU zone 75 cover?"
"Which ITU zones does Antarctica span?"
MCP Inspector¶
Then open the MCP Inspector at http://localhost:8017.
Development¶
git clone https://github.com/qso-graph/itu-zones-mcp.git
cd itu-zones-mcp
uv sync --group dev
uv run pytest
scripts/fetch_published.py fetches the owner's document(s) into published/ (not committed) and checks their SHA-256s; uv run pytest --live runs the tests that need them. scripts/build.py regenerates derived/ and load.sql, a PostgreSQL load for QSO Graph's reference data (load QG ADIF's adif schema first).
License¶
itu-zones-mcp's own code is GPL-3.0-or-later. See LICENSE. The data it serves is the owner's, credited at the top of this page: our licence doesn't cover it, and we claim no rights in it. The owner's document itself is not included; data/SOURCE.json records its URL and SHA-256 so anyone can check the facts against it. Files we built from the facts (data/derived/) are ours and labelled as ours. How the owner's text was read is recorded in docs/TRANSCRIPTION.md. See NOTICE.
Tool Reference¶
Generated from the released server's own tool definitions.
get_version_info¶
Get itu-zones-mcp's version and the edition of the IARU's list it serves.
Returns: service_name, service_version (PyPI), and spec_version (the owner's edition).
No parameters.
itu_zones_codes_for¶
Which ITU zones cover an ADIF DXCC entity, or one of its subdivisions. Where the IARU splits an entity by a line (W7 states at 110W), each zone is returned with the IARU's boundary wording.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dxcc |
integer | Yes | ADIF DXCC entity code (e.g. 291 for the United States, 1 for Canada). | |
subdivision |
string | No | null |
ADIF Primary_Administrative_Subdivision code, e.g. "QC" or "AZ". |
itu_zones_lookup¶
One ITU zone: every prefix, subdivision and boundary the IARU lists for it, with ADIF codes and the citation. Zones 76-77 and 79-89 have no entry in this edition.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
code |
string | Yes | An ITU zone number, 1 to 90. |
itu_zones_search¶
Find codes whose name, prefixes, area wording or attributes contain every word of text.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
text |
string | Yes | Words to look for, e.g. "Antarctica", "UA0" or "110W". | |
limit |
integer | No | 50 |
Most records to return (1 to 200, default 50). |
itu_zones_source_info¶
Who owns this list, which edition is served, its terms, and the owner's files' URLs and SHA-256s.
No parameters.
itu_zones_valid_on¶
Whether an ITU zone was valid on a date. The chapter gives no validity window, so every zone it lists is valid; the tool exists so every owner-list server answers the same questions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
code |
string | Yes | An ITU zone number, 1 to 90. | |
on_date |
string | Yes | The date, YYYY-MM-DD. |