fldigi-mcpSAFE
Operate fldigi by chatting with an AI — read, tune, log, and transmit ham-radio digital modes through the Model Context Protocol.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
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:
- docs/fldigi-api.md — a clean, complete, human-readable
reference organized by namespace, with transport details, types, worked examples, a transmit-safety section, and field-tested gotchas.
- docs/fldigi-api.pdf — the same, as a printable PDF.
- docs/fldigi-api-spec.md — a terse,
machine-readable catalog of all 174 methods (args, return type, read/write/keying).
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
42fd6665b30bOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add fldigi-mcp -- None fldigi-mcp==0.4.0
Exposed tools (22)
17 read · 5 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
application | read | The fldigi program and its process. |
band_guidance | read | Advisory band guidance (experimental, region-aware) — informational / QSY help only. |
browser | read | fldigi |
controls | read | fldigi operating controls (the AFC / SQL / Rev / Lock / RxID / TxID buttons) and status. |
diagnostics | read | Host + network diagnostics for troubleshooting connectivity. |
fldigi_call | read | Escape hatch: call ANY fldigi XML-RPC method by dotted name (e.g. |
flmsg | write | flmsg (message forms) interworking. operations: online, available, transfer, |
frequency | write | RF frequency and waterfall sideband. operations: get, set (value=Hz), |
io | read | ARQ / KISS I/O port. operations: in_use (which port is active), enable_kiss, |
legacy | read | Deprecated fldigi methods, kept so the whole catalog is reachable. Each has a |
log | write | Logbook (QSO / contest) fields. operations: get (field=...), set (field=..., value=...), |
modem | read | Operating mode (the fldigi |
navtex | read | NAVTEX / SitorB mode. operations: get_message (value=timeout seconds), |
rig | read | Rig (CAT) control via flrig/Hamlib/RigCAT. operations: get/set_name, |
rsid | read | RSID bursts the detector heard: which modes were announced in the passband and |
signal_hunt | read | Find and name the signals in the receiver audio and rank them the way a contest |
spot | read | Spotting / PSK Reporter. operations: get_auto, set_auto (value=bool), |
status | read | Snapshot: version, modem, frequency (Hz), TX/RX state, transmit gate, region, band. |
text | write | RX/TX text and data. operations: read (decoded RX text; start/length), |
transmit | read | Transmitter control. operations: tx, tune, rx, abort, disable_tx, enable_tx, |
tune_to | write | Set fldigi to a signal_hunt candidate: modem by fldigi name (e.g. |
wefax | read | WEFAX (weather fax) mode. operations: state, skip_apt, skip_phasing, tx_abort, |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (2 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (7)
"/usr/local/bin/fldigi",
.mcpbignore
| `FLDIGI_HUNT_URL` | _(empty)_ | URL of a `fldigi-mcp-tap` running beside fldigi, e.g. `http://127.0.0.1:7365`, for when this server cannot open the sound card (sandbox, or fldigi on another machine)
| somewhere without the sound card (Cowork sandbox, a container, or fldigi on a VM via mcp-host-bridge) | run `fldigi-mcp-tap --device iMic` beside fldigi and set **Signal-hunt tap URL** = `http://127
- **Endpoint:** `http://127.0.0.1:7362/` by default.
fldigi = xmlrpc.client.ServerProxy("http://127.0.0.1:7362/", allow_none=True)f = xmlrpc.client.ServerProxy("http://127.0.0.1:7362/", allow_none=True)Gates applied: no_behavioural_pass.
42fd6665b30bfull audit observations/trust-audit/mcp-server/sbrunner-atx__fldigi-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 42fd6665b30b | SAFE | B | 89 | first audit |
Questions
What is the fldigi-mcp MCP server?
Operate fldigi by chatting with an AI — read, tune, log, and transmit ham-radio digital modes through the Model Context Protocol.
What tools does fldigi-mcp expose?
22 in total: 17 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is fldigi-mcp safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does fldigi-mcp need?
No credential environment variables were found in its source, so it appears to need none.
How does fldigi-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as fldigi-mcp.
How current is this page?
The grade is for one exact copy of the source (42fd6665b30b), read on 2026-10-12. The repository is watched and re-audited when it changes.