Skip to main content

MCP server for N1MM Logger+ — live contest state via UDP broadcast

Project description

n1mm-mcp

MCP server for N1MM Logger+ — live contest state via UDP broadcast.

Part of the qso-graph amateur radio MCP ecosystem.

Install

pip install n1mm-mcp

Tools (Phase 1 — 8 Composite State Views)

Tool Description
n1mm_current_state Station snapshot — connection, contest, operator, radios
n1mm_lookup Pre-log callsign (Contest-Copilot trigger) + current band/mode
n1mm_contacts QSO log — recent contacts, edits, deletes
n1mm_bandmap Live spots, mult targets, band activity
n1mm_performance Score, rate, bands, run/S&P, hourly timeline
n1mm_multipliers Mult grid, needs, value analysis
n1mm_clock Contest timing, off-time, pacing
n1mm_diagnostics Server health, parse errors, memory

Quick Start

  1. In N1MM: Config → Configure Ports → Broadcast Data — enable all message types
  2. N1MM broadcasts to 255.255.255.255:12060 by default

Claude Desktop

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

Or with uvx (no install needed):

{
  "mcpServers": {
    "n1mm": {
      "command": "uvx",
      "args": ["n1mm-mcp"]
    }
  }
}

Claude Code

claude mcp add n1mm-mcp -- n1mm-mcp

Architecture

N1MM Logger+ (Windows)
    │ UDP broadcast (port 12060, XML)
    ▼
n1mm-mcp (Python, any OS on same LAN)
    ├── UDP Listener Thread (background)
    ├── State Engine (in-memory, partitioned by StationName)
    │   MCP protocol (stdio)
    ▼
AI Assistant (Claude, qsp-mcp, etc.)
  • Passive listener — N1MM doesn't know we exist
  • Stream-to-state — UDP packets → in-memory state → tool queries
  • Multi-station — state partitioned by StationName (SO2R, multi-op)
  • Zero auth — no credentials needed

CLI Options

Option Default Description
--port 12060 UDP listen port
--transport stdio MCP transport (stdio or streamable-http)
--heartbeat-timeout 60 Seconds before connection goes stale
--stale-timeout 900 Seconds before connection goes disconnected
--max-spots 2000 Maximum spots in bandmap buffer
--spot-ttl 30 Spot time-to-live in minutes

Testing

# Mock mode (no N1MM needed)
N1MM_MCP_MOCK=1 n1mm-mcp

# MCP Inspector
n1mm-mcp --transport streamable-http

Development

git clone https://github.com/qso-graph/n1mm-mcp.git
cd n1mm-mcp
pip install -e .
N1MM_MCP_MOCK=1 n1mm-mcp

License

GPL-3.0-or-later

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

n1mm_mcp-0.1.2.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

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

n1mm_mcp-0.1.2-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file n1mm_mcp-0.1.2.tar.gz.

File metadata

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

File hashes

Hashes for n1mm_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c5b053ea2b8a829d49e5678280c1ac2999fe07e01699ed7b2b9359053bff4c80
MD5 cef3deb91ecddce7c72afe13dcf6ecb3
BLAKE2b-256 507a3e54823a097749b38aaf3f2d81718a9ba2f30e88a77c7e6c56cd035dee0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1mm_mcp-0.1.2.tar.gz:

Publisher: publish.yml on qso-graph/n1mm-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 n1mm_mcp-0.1.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for n1mm_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5a29b48707b492d22e8c37ca7879fc6abbcb5a4f68b19f02825dcf5ca4e9ede4
MD5 2b4c46333bee1a295f3f0cd338763d6e
BLAKE2b-256 bf177c158880f79177faa7ae87fb3dcdd7587b5ba5991694f1305641cc2445aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1mm_mcp-0.1.2-py3-none-any.whl:

Publisher: publish.yml on qso-graph/n1mm-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