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.
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
| Feature | What it gives you |
|---|---|
| Complete API coverage | All 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 gate | With no callsign set, the station is receive-only and nothing can key the radio. |
| Names match fldigi | Tools 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-RPC | Talks 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 hunting | signal_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 is | The 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 guidance | Suggests 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 skills | fldigi-operating and signal-hunting come with the repository and the bundle. Both were written from live on-air use. |
| Free API reference | A 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. |
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
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
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.
| Tool | Controls (fldigi area) |
|---|---|
| status | Quick snapshot: version, mode, frequency, T/R, callsign, band. |
| diagnostics | Host and network information for troubleshooting the connection. Works without a connection to fldigi. |
| application | Program info, launch and stop the fldigi process (fldigi.*). |
| modem | Op Mode and 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 and enable Tx, macros, send. Callsign gated. |
| rig | CAT control: mode, frequency, bandwidth, notch, QSY, meters. |
| log | Logbook and contest fields. Reads the last ADIF record or all of them. |
| text | RX and TX text and data streams. |
| spot | Spotting and PSK Reporter. |
| wefax | WEFAX (weather fax) mode. |
| navtex | NAVTEX / SitorB mode. |
| flmsg | flmsg (message forms) interworking. |
| io | ARQ / KISS I/O port selection. |
| legacy | Deprecated methods fldigi still serves, each with its current equivalent named. |
| band_guidance | Advisory band and watering-hole help. Experimental. |
| signal_hunt | Find and name the signals in the receiver audio, and rank the stations calling CQ. Experimental. Needs the [hunt] extra. |
| tune_to | Set modem and carrier to a signal_hunt candidate. Receive only. |
| browser | fldigi's Signal Browser: every station the decoder bank holds, with its text. Needs the fldigi patch in patches/. |
| rsid | RSID bursts heard in the passband, mode and frequency, without switching the modem. Needs the rsid-hits patch in patches/. |
| fldigi_call | Call any method by name, including methods a later fldigi adds. |
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
| 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. This is the only transmit gate. Set it to allow transmit. Leave it blank and the station is receive-only. |
| FLDIGI_BAND_GUIDANCE | off | Experimental advisory band guidance. Set it to on to turn it on. |
| 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 fill in the callsign.
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
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
- Operating Field Guide (PDF) · read it online
- fldigi XML-RPC API reference: PDF · Markdown · machine-readable spec
- INSTALL · install-and-safety · band-guidance · README · CHANGELOG
- PyPI · GitHub repository