AE5VG

Product · GPL-3.0-or-later

fldigi-mcp

fldigi-mcp is an MCP server. It lets an MCP client such as Claude Desktop control fldigi, the amateur radio digital modem program. fldigi has a built-in XML-RPC control interface. fldigi-mcp connects to it and offers the whole API as a small set of grouped tools. You ask in plain English, and the assistant reads the radio's state and runs the modem, rig, log and transmitter.

Version…
Released…
LicenseGPL-3.0-or-later
Ships as.mcpb bundle · PyPI

What it does

fldigi's XML-RPC interface is its official control API, and it works the same on every operating system. fldigi-mcp talks to it directly and does not depend on an unmaintained wrapper. All 174 XML-RPC methods in fldigi 4.2.13 can be reached. Each one is a named operation in one of 17 grouped tools, and each tool is one permission. The build fails a coverage test if any method in the shipped catalog is not wired up, or if an argument type does not match fldigi's signature. The Tools table below lists every tool the server offers. That includes the tools for diagnostics, band guidance, signal hunting and the proposed patches.

The server also does some things the API does not. It hunts for signals in the receiver audio. It gives advisory band guidance. It comes with two operating skills written from live on-air use. On a fldigi built with two proposed patches, it can also read fldigi's Signal Browser and the RSID bursts that fldigi's detector heard.

Proposed, not yet in fldigi

The Signal Browser and RSID patches were offered to the fldigi maintainer on 11 and 16 September 2026 (w1hkj/fldigi issue 55). They have not been merged and are not in any released fldigi. Details are under Features and benefits.

The project is in beta. It supports fldigi 4.2.13, checked live on 9 September 2026. It is an independent project and is not affiliated with the fldigi / W1HKJ project.

The license is GPL-3.0-or-later, the same as fldigi, so code can move in both directions. Versions up to 0.2.2 were MIT. Talking to fldigi over XML-RPC did not require the change. Porting fldigi's decoders does.

Features and benefits

FeatureWhat it gives you
Complete API coverageAll 174 XML-RPC methods of fldigi 4.2.13, reached through grouped tools with one permission per tool. A coverage test fails the build if a method is not wired up. The fldigi_call tool reaches methods that a newer build may add.
Callsign transmit gateWith no callsign set, the station is receive-only and nothing can key the radio.
Names match fldigiTools and operations use the names from fldigi's own API and its on-screen labels: Op Mode, AFC, SQL, Rev, Lock, RxID and TxID, T/R.
Standard-library XML-RPCTalks to fldigi with the xmlrpc.client module in Python's standard library. It does not use an unmaintained wrapper. The only third-party runtime dependencies are the MCP SDK and PyYAML.
Signal huntingsignal_hunt listens to the receiver audio and names the mode of each signal. It ranks a station higher when it holds one frequency and calls CQ. tune_to then sets the modem and carrier. So far the mode naming has been tested on five recordings of known mode, and it named all five correctly. Hunting only listens. It never transmits.
Audio from where the receiver isThe Audio input device setting names the sound card fldigi uses. Sometimes the server cannot open that sound card, for example inside a sandbox or when fldigi runs on another computer. Then you run fldigi-mcp-tap on the computer next to the receiver, and the server reaches it over HTTP at the Signal-hunt tap URL. With no audio at all, method="api" steps through fldigi's own search_up. That is slow, and it cannot tell what mode a signal is.
Signal Browser over the API (proposed patch)On a patched fldigi, the assistant can read every station in fldigi's decoder bank, up to 30 PSK, RTTY or CW stations at once, with the decoded text for each.
RSID hits over the API (proposed patch)On a patched fldigi, with RxID set to notify-only, fldigi names the modes on the band from their RSID bursts without switching the modem. This separates Olivia from Contestia and THOR from DominoEX.
Band guidanceSuggests watering holes and warns when a frequency is outside its band segment, using the band plan for your IARU region, from 160 m to 70 cm. It is advisory only. It is experimental and off by default.
Operating skillsfldigi-operating and signal-hunting come with the repository and the bundle. Both were written from live on-air use.
Free API referenceA reference to fldigi's XML-RPC API, with every method checked against a running fldigi build. You can use it free whether or not you use this server. It comes as a PDF, Markdown, and a machine-readable catalog of all 174 methods.
Proposed, not yet in fldigi

Two patches were offered to the fldigi maintainer on w1hkj/fldigi issue 55. Neither has been merged. The Signal Browser patch (11 September 2026) touches four files and adds browser.get_channels and browser.clear. The RSID patch (16 September 2026) applies on top of it and adds rsid.get_hits and rsid.clear, which return each accepted burst as {utc, mode, hz}. Until they are merged, names and fields may change. The server looks for the methods in fldigi.list and does not go by the version number. It caches the result for 30 seconds. On an unpatched fldigi the browser and rsid tools answer with a hint.

To try the Signal Browser patch now, build fldigi from source with it. The RSID patch, patches/fldigi-4.2.13-rsid-hits.patch, applies on top of the first in the same way.

tar xf fldigi-4.2.13.tar.gz && cd fldigi-4.2.13
patch -p1 < /path/to/fldigi-mcp/patches/fldigi-4.2.13-browser-xmlrpc.patch
./configure --prefix=$HOME/.local/fldigi && make -j8 && make install

How it works

Claude Desktop fldigi-mcp fldigi radio MCP XML-RPC
Here the assistant, the connector and fldigi all run on the computer attached to the radio.

fldigi's XML-RPC interface is on by default at 127.0.0.1:7362. The server groups the 174 methods into tools by the part of fldigi they control. Changing the mode is then one permission, whichever method does the work.

fldigi can also run on another computer. Set FLDIGI_HOST and FLDIGI_PORT to point the server at it, and start fldigi with --xmlrpc-server-address 0.0.0.0. The XML-RPC interface has no authentication. Keep the link on a trusted LAN or tunnel it over SSH. Sandboxed clients such as Claude Desktop can only reach loopback addresses. mcp-host-bridge carries the connection across the LAN.

Ask it

What is fldigi doing right now? the status tool: version, mode, frequency, T/R, callsign, band Set the rig to 14.070 USB and BPSK31. rig and modem tools; with band guidance on, an advisory note if the frequency is off the segment Find me someone calling CQ on 20 meters PSK31. signal_hunt ranks the steady CQ callers, tune_to picks one, twenty seconds of text confirms it Call CQ Field Day until someone answers. Work them, our exchange is 2A STX, log the contact to N3FJP, then keep calling. with n3fjp-mcp, the full loop: CQ, listen, exchange, TU, log, repeat; transmit is callsign gated stop abort is always allowed; it drops PTT at once and discards queued text
The CQ request keys the transmitter

It works only with a callsign set, and Claude Desktop asks you to approve each time before it keys the radio. Run it first into a dummy load. You are the licensed operator and remain responsible for everything you transmit.

Tools

Each tool is one permission. It takes an operation argument that says which method to run.

ToolControls (fldigi area)
statusQuick snapshot: version, mode, frequency, T/R, callsign, band.
diagnosticsHost and network information for troubleshooting the connection. Works without a connection to fldigi.
applicationProgram info, launch and stop the fldigi process (fldigi.*).
modemOp Mode and modem select, carrier, bandwidth, AFC range, Olivia.
frequencyDial frequency and waterfall sideband.
controlsAFC, SQL, Rev, Lock, RxID, TxID, status fields.
transmitT/R, Tune, abort, disable and enable Tx, macros, send. Callsign gated.
rigCAT control: mode, frequency, bandwidth, notch, QSY, meters.
logLogbook and contest fields. Reads the last ADIF record or all of them.
textRX and TX text and data streams.
spotSpotting and PSK Reporter.
wefaxWEFAX (weather fax) mode.
navtexNAVTEX / SitorB mode.
flmsgflmsg (message forms) interworking.
ioARQ / KISS I/O port selection.
legacyDeprecated methods fldigi still serves, each with its current equivalent named.
band_guidanceAdvisory band and watering-hole help. Experimental.
signal_huntFind and name the signals in the receiver audio, and rank the stations calling CQ. Experimental. Needs the [hunt] extra.
tune_toSet modem and carrier to a signal_hunt candidate. Receive only.
browserfldigi's Signal Browser: every station the decoder bank holds, with its text. Needs the fldigi patch in patches/.
rsidRSID bursts heard in the passband, mode and frequency, without switching the modem. Needs the rsid-hits patch in patches/.
fldigi_callCall any method by name, including methods a later fldigi adds.
Proposed, not yet in fldigi

The patches that browser and rsid need have been offered upstream on w1hkj/fldigi issue 55 and are not merged. On a stock fldigi, both tools answer with a hint.

To list every method the running fldigi supports, use application → list_methods. On 4.2.13, every method is already in one of the groups. fldigi_call is for methods a newer fldigi may add before this server is updated to match.

Settings

VariableDefaultPurpose
FLDIGI_HOST127.0.0.1fldigi XML-RPC host.
FLDIGI_PORT7362fldigi XML-RPC port.
FLDIGI_CALLSIGNemptyOperator callsign. This is the only transmit gate. Set it to allow transmit. Leave it blank and the station is receive-only.
FLDIGI_BAND_GUIDANCEoffExperimental advisory band guidance. Set it to on to turn it on.
FLDIGI_REGION2IARU region for band guidance: 1, 2 or 3.
FLDIGI_PATHautoExplicit path to the fldigi executable, for application launch.

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

Signal-hunt settings

signal_hunt uses two more settings. FLDIGI_AUDIO_DEVICE ("Audio input device") names the sound device fldigi listens to. Part of its name is enough, for example iMic. FLDIGI_HUNT_URL ("Signal-hunt tap URL") points at fldigi-mcp-tap when the server cannot reach the sound card, for example http://127.0.0.1:7365.

Safety

Can key a transmitter

The callsign is the only transmit gate. Keying operations (transmit tx, tune, run_macro and send, the wefax and 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 value that is not blank is accepted, so club, event, vanity, portable and international calls all work. You remain the control operator under Part 97.

The client adds a second check. The server marks the read and status tools as read-only and the keying tools as destructive. Claude Desktop then asks you to approve each on-air action. On the Tool permissions page you can set a tool to Ask or Block. Nothing you set there can loosen the callsign gate, because the server enforces it.

Documents