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.1.tar.gz (30.3 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.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: n1mm_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 30.3 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.1.tar.gz
Algorithm Hash digest
SHA256 e6484027514fb19bba253132a341afe60652f39e7723af0ab59f9beb61d26b95
MD5 c0eb3df181f5eb8f40a8591026ff2736
BLAKE2b-256 3d798a9e079ffff6dcb9f01ce26ce102d3d484b5b388ceec7a24ae79ad991785

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1mm_mcp-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: n1mm_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 32.1 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8b5a5fedb4caa9af00c7829c00e99e97b79f728764ea17bc9cac97a0c6ebe091
MD5 94e556144bef2148ead5278d5d8e5844
BLAKE2b-256 ffe53a6414472f3fac133b91f56c4da15721f134ca256948869ed0451a00ba31

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1mm_mcp-0.1.1-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