Fldigi MCP server
Control fldigi (amateur-radio digital modes) over XML-RPC: modem, frequency, rig, log, transmit.
0 stars84 downloads/wk
Reviews
Write oneNobody has reviewed Fldigi yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Fldigi tools (21)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
applicationThe fldigi program and its process.
band_guidanceAdvisory band guidance (experimental, region-aware) — informational / QSY help only.
browserfldigi's Signal Browser over XML-RPC: every station the multi-channel decoder bank has locked to in the passband, with the text decoded on each channel. This is what the left-hand browser panel shows, and it copies stations far too weak for the waterfall to show. operations: channels (list of {channel, freq, active, text}; text accumulates since the last clear, a newline marks a lost-and-regained
controlsfldigi operating controls (the AFC / SQL / Rev / Lock / RxID / TxID buttons) and status. operations: get/set/toggle_afc, get/set/toggle_squelch (SQL), get/set/inc_squelch_level, get/set/toggle_reverse (Rev), get/set/toggle_lock (Lock), get/set/toggle_rxid (RxID), get/set/toggle_txid (TxID), get_status1, get_status2, get_trx_status, get_trx_state.
diagnosticsHost + network diagnostics for troubleshooting connectivity.
fldigi_callEscape hatch: call ANY fldigi XML-RPC method by dotted name (e.g. 'rig.get_mode').
flmsgflmsg (message forms) interworking. operations: online, available, transfer, squelch, get_data (RX data since the last query).
frequencyRF frequency and waterfall sideband. operations: get, set (value=Hz), increment (value=Hz), get_sideband, set_sideband (value='USB'|'LSB').
ioARQ / KISS I/O port. operations: in_use (which port is active), enable_kiss, enable_arq.
legacyDeprecated fldigi methods, kept so the whole catalog is reachable. Each has a current equivalent, which you should prefer: get/set_sideband -> frequency get/set_sideband; rsid -> controls toggle_rxid; get/set_rig_name, get/set_rig_frequency, get/set_rig_mode(s), get/set_rig_bandwidth(s) -> the rig tool; log_get_sideband -> frequency get_sideband; flmsg_online/available/transfer/squelch -> the flms
logLogbook (QSO / contest) fields. operations: get (field=...), set (field=..., value=...), clear, last_record, all_records.
modemOperating mode (the fldigi "Op Mode" menu) and modem settings. operations: get, list, get_id, get_max_id, set (value=mode name e.g. 'BPSK31'), set_by_id (value=id), get_io_names (modems usable for KISS/ARQ I/O), get/set/inc_carrier, get/set/inc_afc_range, get/set/inc_bandwidth, get_quality, search_up, search_down, olivia_get/set_bandwidth, olivia_get/set_tones.
navtexNAVTEX / SitorB mode. operations: get_message (value=timeout seconds), send_message (value=text).
rigRig (CAT) control via flrig/Hamlib/RigCAT. operations: get/set_name, get/set_frequency (value=Hz), get/set_mode (value=name), get_modes, set_modes (value=[...]), get/set_bandwidth, get_bandwidths, set_bandwidths (value=[...]), get/set_notch, enable_qsy (value=1|0), set_smeter / set_pwrmeter (value=int, drives fldigi's meter display).
signal_huntFind and name the signals in the receiver audio and rank them the way a contest operator reads the waterfall: the station that sits still and calls CQ scores highest.
spotSpotting / PSK Reporter. operations: get_auto, set_auto (value=bool), toggle_auto, pskrep_count.
statusSnapshot: version, modem, frequency (Hz), TX/RX state, transmit gate, region, band.
textRX/TX text and data. operations: read (decoded RX text; start/length), rx_length, get_rx (value=[start, length], the raw byte range), clear_rx, add_tx (value=text), add_tx_queue, add_tx_bytes (value=text or bytes), clear_tx, get_rxtx_data, get_rx_data, get_tx_data.
transmitTransmitter control. operations: tx, tune, rx, abort, disable_tx, enable_tx, run_macro (value=id), get_max_macro_id, send (text=...), and timing information: tx_timing (value=test string), char_rates, char_timing (value=one character); both timings return 'samples : sample rate : seconds'.
tune_toSet fldigi to a signal_hunt candidate: modem by fldigi name (e.g. 'RTTY', 'BPSK31', 'OLIVIA-8/250', 'MFSK16', 'DOMEX11', 'MT63-500'), the audio carrier, AFC on, and RxID off by default so another station's RSID burst cannot retune the modem mid-pass. Read the result with `text` read after 20 seconds; `modem` get_quality says whether it locked. Does not transmit.
wefaxWEFAX (weather fax) mode. operations: state, skip_apt, skip_phasing, tx_abort, end_reception, start_manual_reception, set_adif_log (value=bool), set_max_lines (value=int), get_received_file (value=timeout), send_file (value=[filename, timeout_seconds]).
Public scan report
scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it
- Code scan17 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 16 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Fldigi compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 21
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 84
- more than 59% of 12,191 servers with a package
What its tools let an agent do: 21 read
Install Fldigi in Claude Code, Cursor or VS Code
claude mcp add fldigi-mcp -- uvx fldigi-mcp
What the publisher says
From the Fldigi repository's README, as published. We do not edit it. Read it on GitHub
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. Signal hunting (find, name and tune to a station from the
receiver audio, 0.2.0) and full API coverage (every one of fldigi's 174 XML-RPC methods
is reachable through a named operation, enforced by a test), callsign-gated
transmit, and an optional experimental Band Guidance feature. Supports the
current fldigi release, 4.2.13, verified live on 2026-09-09.
📻 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.
- docs/fldigi-api.md — a clean, complete, human-readable
machine-readable catalog of all 174 methods (args, return type, read/write/keying).
- docs/fldigi-api.pdf — the same, as a printable PDF.
- docs/fldigi-api-spec.md — a terse,
Verified live against fldigi 4.2.13 via fldigi.list on 2026-09-09 (the method list is identical to 4.2.11, first verified 2026-06-23). 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
reachable through a named operation in one of 17 tools (one permission each); tests/testcoverage.py fails the build if a method of the shipped catalog is not wired or an argument type disagrees with fldigi's signature. The fldigicall escape hatch remains for methods a newer build may add.
- Complete control — every one of the 174 XML-RPC methods in fldigi 4.2.13 is
callsign configured the station is receive-only; nothing can key the radio.
- Safe by default — the callsign is the single transmit gate. With no
namespaces and on-screen labels (Op Mode, AFC, SQL, Rev, Lock, RxID/TxID, T/R).
- Names match fldigi — tools and operations mirror fldigi's own API
xmlrpc.client. The only third-party runtime deps are the MCP SDK and PyYAML (for the optional band-plan data).
- No fragile dependencies — talks to fldigi with Python's standard-library
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
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Fldigi: common questions
- Is Fldigi MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Fldigi safety report
- How do I install Fldigi?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Fldigi need an API key?
- No secret keys are declared. It reads 5 settings from the environment.
- Is Fldigi maintained?
- The last commit was 36 days ago (2026-09-29). The latest release is v0.3.1.
- How does Fldigi compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 21 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.