Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
fldigi-mcp logo

fldigi-mcp

sbrunner-atx/fldigi-mcp
0 starsv0.1.0STDIORegistry activeMITUpdated 2026-06-23Community

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

claude mcp add fldigi -- uvx fldigi-mcp

Summary

Enables MCP clients like Claude Desktop to control the fldigi amateur radio digital modem application, including modem, rig, log, and transmit functions, with a callsign-based transmit safety gate.

Connect from your MCP client

One-click install

Add this server to your editor with a single click. Fill in any required credentials afterward.

Claude Code

Run this once and Claude Code registers the server for you:

claude mcp add fldigi -- uvx fldigi-mcp

Claude Desktop

Add this to claude_desktop_config.json under Settings → Developer → Edit Config:

{
  "mcpServers": {
    "fldigi": {
      "command": "uvx",
      "args": [
        "fldigi-mcp"
      ],
      "env": {
        "FLDIGI_CALLSIGN": "<FLDIGI_CALLSIGN>",
        "FLDIGI_HOST": "<FLDIGI_HOST>",
        "FLDIGI_PORT": "<FLDIGI_PORT>",
        "FLDIGI_BAND_GUIDANCE": "<FLDIGI_BAND_GUIDANCE>",
        "FLDIGI_REGION": "<FLDIGI_REGION>"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "fldigi": {
      "command": "uvx",
      "args": [
        "fldigi-mcp"
      ],
      "env": {
        "FLDIGI_CALLSIGN": "<FLDIGI_CALLSIGN>",
        "FLDIGI_HOST": "<FLDIGI_HOST>",
        "FLDIGI_PORT": "<FLDIGI_PORT>",
        "FLDIGI_BAND_GUIDANCE": "<FLDIGI_BAND_GUIDANCE>",
        "FLDIGI_REGION": "<FLDIGI_REGION>"
      }
    }
  }
}

Cline and other MCP clients

Most MCP clients accept the standard mcpServers JSON block:

{
  "mcpServers": {
    "fldigi": {
      "command": "uvx",
      "args": [
        "fldigi-mcp"
      ],
      "env": {
        "FLDIGI_CALLSIGN": "<FLDIGI_CALLSIGN>",
        "FLDIGI_HOST": "<FLDIGI_HOST>",
        "FLDIGI_PORT": "<FLDIGI_PORT>",
        "FLDIGI_BAND_GUIDANCE": "<FLDIGI_BAND_GUIDANCE>",
        "FLDIGI_REGION": "<FLDIGI_REGION>"
      }
    }
  }
}

Codex CLI

Register the server with OpenAI's Codex CLI — run this once, or add the equivalent block to ~/.codex/config.toml:

codex mcp add fldigi --env FLDIGI_CALLSIGN=<FLDIGI_CALLSIGN> --env FLDIGI_HOST=<FLDIGI_HOST> --env FLDIGI_PORT=<FLDIGI_PORT> --env FLDIGI_BAND_GUIDANCE=<FLDIGI_BAND_GUIDANCE> --env FLDIGI_REGION=<FLDIGI_REGION> -- uvx fldigi-mcp

# or add to ~/.codex/config.toml:
[mcp_servers.fldigi]
command = "uvx"
args = ["fldigi-mcp"]
[mcp_servers.fldigi.env]
FLDIGI_CALLSIGN = "<FLDIGI_CALLSIGN>"
FLDIGI_HOST = "<FLDIGI_HOST>"
FLDIGI_PORT = "<FLDIGI_PORT>"
FLDIGI_BAND_GUIDANCE = "<FLDIGI_BAND_GUIDANCE>"
FLDIGI_REGION = "<FLDIGI_REGION>"

OpenClaw

OpenClaw reads MCP servers from the mcp.servers section of ~/.openclaw/openclaw.json (managed via `openclaw mcp add` or the mcporter skill):

{
  "mcp": {
    "servers": {
      "fldigi": {
        "command": "uvx",
        "args": [
          "fldigi-mcp"
        ],
        "env": {
          "FLDIGI_CALLSIGN": "<FLDIGI_CALLSIGN>",
          "FLDIGI_HOST": "<FLDIGI_HOST>",
          "FLDIGI_PORT": "<FLDIGI_PORT>",
          "FLDIGI_BAND_GUIDANCE": "<FLDIGI_BAND_GUIDANCE>",
          "FLDIGI_REGION": "<FLDIGI_REGION>"
        }
      }
    }
  }
}

Replace the <PLACEHOLDER> values with your own credentials — see the configuration table below.

Configuration

fldigi-mcp reads the following environment variables:

VariableRequired
FLDIGI_CALLSIGNOptional
FLDIGI_HOSTOptional
FLDIGI_PORTOptional
FLDIGI_BAND_GUIDANCEOptional
FLDIGI_REGIONOptional

README.md

fldigi-mcp

<!-- mcp-name: io.github.sbrunner-atx/fldigi-mcp -->

An MCP server for controlling fldigi, the popular amateur-radio digital-modem application, from MCP-aware clients such as Claude Desktop.

fldigi ships a built-in XML-RPC control interface. fldigi-mcp connects to it and exposes the whole API as a small set of logically-grouped MCP tools, so an assistant can read the radio's state and drive the modem, rig, log, and transmitter through plain language.

Status: beta. Full API coverage, callsign-gated transmit, and an optional experimental Band Guidance feature. Tested against fldigi 4.2.x.

📻 A field-tested fldigi XML-RPC API reference (free community resource)

Building this server meant mapping fldigi's entire XML-RPC interface and verifying every method against a live build — so we've written it all up and are sharing it freely, whether or not you ever use this MCP server:

reference organized by namespace, with transport details, types, worked examples, a transmit-safety section, and field-tested gotchas.

machine-readable catalog of all 174 methods (args, return type, read/write/keying).

Verified live against fldigi 4.2.11 via fldigi.list. It's more complete and current than the public wiki (it documents methods the wiki omits, e.g. TxID, and flags deprecated ones). Independent project — not affiliated with the fldigi / W1HKJ project. Corrections welcome via issues / PRs.

Highlights

  • Complete control — every documented XML-RPC method is reachable, grouped

into ~14 tools (one permission each) plus a fldigi_call escape hatch for the long tail and future methods.

  • Safe by default — the callsign is the single transmit gate. With no

callsign configured the station is receive-only; nothing can key the radio.

  • Names match fldigi — tools and operations mirror fldigi's own API

namespaces and on-screen labels (Op Mode, AFC, SQL, Rev, Lock, RxID/TxID, T/R).

  • No fragile dependencies — talks to fldigi with Python's standard-library

xmlrpc.client. The only third-party runtime deps are the MCP SDK and PyYAML (for the optional band-plan data).

Why XML-RPC (and not a third-party library)

fldigi's XML-RPC interface is its official, OS-independent control API. This project talks to it directly rather than through an unmaintained wrapper, keeping the moving parts to Python's standard library and fldigi's own API.

Requirements

To install the desktop extension (.mcpb) all you need is:

  • fldigi running (its XML-RPC server is on by default at 127.0.0.1:7362).

Claude Desktop's uv runtime supplies Python and the dependencies, so end users do not install Python or uv themselves. (That runtime is currently marked experimental, so a recent Claude Desktop is recommended.)

For development from source you additionally need Python 3.10+ and uv (and Node.js, only for the MCP Inspector).

Install

Easiest: one-click desktop extension

Download fldigi-mcp.mcpb from the latest release, then in Claude Desktop go to Settings → Extensions → Advanced settings → Install Extension… and choose the file. A short settings form asks for your callsign (everything else has a default). No terminal, no Python, no uv to install.

👉 New to this? Follow the simple step-by-step install guide. Also see the install & safety model.

From source (development)

git clone https://github.com/sbrunner-atx/fldigi-mcp.git
cd fldigi-mcp
uv sync

Then add it to Claude Desktop's config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "fldigi": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/fldigi-mcp", "run", "fldigi-mcp"],
      "env": { "FLDIGI_CALLSIGN": "AE5VG" }
    }
  }
}

Restart Claude Desktop and ask "What's fldigi's status?". Omit the env block to run receive-only.

Try it with the MCP Inspector

uv run mcp dev src/fldigi_mcp/server.py

Tools

Each tool is one permission and takes an operation argument, so e.g. "change the mode" is a single permission regardless of which underlying method runs.

| Tool | Controls (fldigi area) | | --- | --- | | status | quick snapshot: version, mode, frequency, T/R, callsign, band | | diagnostics | host/network info for connectivity troubleshooting (no fldigi connection) | | application | program info + launch/stop the fldigi process (fldigi.*) | | modem | Op Mode / modem select, carrier, bandwidth, AFC range, Olivia | | frequency | dial frequency and waterfall sideband | | controls | AFC, SQL, Rev, Lock, RxID, TxID, status fields | | transmit | T/R, Tune, abort, disable/enable Tx, macros, send — callsign-gated | | rig | CAT control: mode, frequency, bandwidth, notch, QSY, take/release | | log | Logbook / contest fields; ADIF last/all records | | text | RX/TX text and data streams | | spot | spotting / PSK Reporter | | wefax | WEFAX (weather fax) mode | | navtex | NAVTEX / SitorB mode | | band_guidance | advisory band/watering-hole help (experimental) | | fldigi_call | escape hatch — call any method by name, incl. future ones |

Use applicationlist_methods to enumerate every method the running build supports; anything not surfaced in a group is reachable via fldigi_call.

Configuration

| Variable | Default | Purpose | | --- | --- | --- | | FLDIGI_HOST | 127.0.0.1 | fldigi XML-RPC host | | FLDIGI_PORT | 7362 | fldigi XML-RPC port | | FLDIGI_CALLSIGN | _(empty)_ | Operator callsign. The single transmit gate — set it to enable transmit; blank keeps the station receive-only | | FLDIGI_BAND_GUIDANCE | off | Experimental advisory band guidance. on to enable | | FLDIGI_REGION | 2 | IARU region for band guidance: 1, 2, or 3 | | FLDIGI_PATH | _(auto)_ | Explicit path to the fldigi executable (for application launch) |

In the packaged desktop extension these appear as a settings form — most users only ever fill in the callsign.

Transmit safety

The callsign is the single transmit gate. Keying operations (transmit tx/tune/run_macro/send, and the wefax/navtex send operations, and any keying method via fldigi_call) refuse unless FLDIGI_CALLSIGN is set. With it blank, the station is receive-only. rx, abort, and disable_tx are always allowed because they take the station off the air. Any non-blank value is accepted (club, event, vanity, portable, and international calls all work). See docs/install-and-safety.md.

Band Guidance (experimental, off by default)

An optional, advisory feature that suggests a mode's customary "watering hole" and warns when a frequency falls outside the digital band segment — guidance and defaults, never hard locks. Region-aware (IARU R1/R2/R3), covering 160 m – 70 cm. Enable with FLDIGI_BAND_GUIDANCE=on. It adds the band_guidance tool and enriches modem/frequency set operations with an advisory guidance field. Because band-plan data is hard to get exactly right, it ships experimental and disabled by default. Design and data: docs/band-guidance.md.

Remote / distributed setups

fldigi need not run on the same machine. Point the server at it with FLDIGI_HOST/FLDIGI_PORT. The fldigi machine must be launched with --xmlrpc-server-address 0.0.0.0 to accept LAN connections, and the link should be kept on a trusted LAN or tunneled over SSH (the XML-RPC interface is unauthenticated).

Sandboxed MCP clients (e.g. Claude Desktop): the client runs the connector sandboxed so it can only reach 127.0.0.1, not LAN addresses — so a correct LAN IP for fldigi will time out even though telnet to it works. Use the standalone mcp-host-bridge relay on the client computer (it knows fldigi = port 7362), then set FLDIGI_HOST=127.0.0.1:

pipx install mcp-host-bridge             # or download a binary from its releases
mcp-host-bridge install fldigi --to 192.168.1.50

Manage it with mcp-host-bridge status fldigi / uninstall fldigi. The same tool also bridges N3FJP (for the sibling n3fjp-mcp) and any other local service.

Skills

The skills/ directory contains agent skills — operating procedures distilled from live on-air use — bundled with the repo and the .mcpb package:

done right (^r return-to-receive via transmit → send, abort as the panic button, never poll the TX buffer), RX-buffer polling discipline (delta reads, the no-echo rule, restart detection), and a reference CQ loop. Field-proven during ARRL Field Day 2026.

The Operating Skills Field Guide (PDF) documents this skill and its companion contest-operating from the sibling n3fjp-mcp — skills at a glance, installation, a plain-language "Your first session — Claude for hams" chapter for operators new to AI, the operating standard, the special-case playbook, and worked examples transcribed from ARRL Field Day 2026.

To use with Claude Code / Cowork, copy the skill directory into your ~/.claude/skills/ (or a project's .claude/skills/).

Development

uv sync
uv run ruff check .      # lint
uv run pytest            # tests (no running fldigi required)

The test suite covers the band-plan logic and the operation maps / type coercion; it does not require a running fldigi.

License

MIT © 2026 Stefan Brunner (AE5VG)

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Other servers.