fldigi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLDIGI_HOST | No | fldigi XML-RPC host | 127.0.0.1 |
| FLDIGI_PATH | No | Explicit path to the fldigi executable (for application launch) | |
| FLDIGI_PORT | No | fldigi XML-RPC port | 7362 |
| FLDIGI_REGION | No | IARU region for band guidance: 1, 2, or 3 | 2 |
| FLDIGI_CALLSIGN | No | Operator callsign. The single transmit gate — set it to enable transmit; blank keeps the station receive-only | |
| FLDIGI_BAND_GUIDANCE | No | Experimental advisory band guidance. 'on' to enable | off |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusB | Snapshot: version, modem, frequency (Hz), TX/RX state, transmit gate, region, band. |
| diagnosticsA | Host + network diagnostics for troubleshooting connectivity. Does NOT connect to fldigi. Reports the resolved FLDIGI_HOST/PORT, this process's Python and hostname, the transmit-gate state, and the host's network interfaces — so you can tell whether the process can even see the target's network (e.g. when running host-side vs. sandboxed). If a non- loopback host times out, see mcp-host-bridge (docs/INSTALL.md). |
| applicationC | The fldigi program and its process. Info operations: version, version_struct, name, name_version, config_dir, list_methods. Process operations: launch, stop, terminate, is_running.
|
| modemC | Operating 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. |
| frequencyC | RF frequency and waterfall sideband. operations: get, set (value=Hz), increment (value=Hz), get_sideband, set_sideband (value='USB'|'LSB'). |
| controlsC | fldigi 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. |
| transmitA | Transmitter 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'. Keying operations (tx, tune, run_macro, send) require a configured callsign;
rx, abort, disable_tx and the timing operations never key and are always allowed.
|
| rigA | Rig (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). |
| logA | Logbook (QSO / contest) fields. operations: get (field=...), set (field=..., value=...), clear, last_record, all_records. Settable fields: call, name, qth, locator, serial_number, exchange, rst_in, rst_out, contest_counter (set only: the starting contest serial number). Gettable fields also include frequency, time_on/off, serial_number_sent, state, province, country, band, notes, az. last_record / all_records return ADIF. |
| textC | RX/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.
|
| spotC | Spotting / PSK Reporter. operations: get_auto, set_auto (value=bool), toggle_auto, pskrep_count. |
| wefaxC | WEFAX (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]). send_file transmits and is callsign-gated. |
| navtexC | NAVTEX / SitorB mode. operations: get_message (value=timeout seconds), send_message (value=text). send_message transmits and is callsign-gated. |
| flmsgB | flmsg (message forms) interworking. operations: online, available, transfer, squelch, get_data (RX data since the last query). These signal or hand data to a running flmsg; none of them key the transmitter. |
| ioC | ARQ / KISS I/O port. operations: in_use (which port is active), enable_kiss, enable_arq. |
| legacyA | Deprecated 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 flmsg tool. |
| browserA | fldigi'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 signal), clear, available. Runs for PSK, RTTY and CW modems (fldigi's browser covers those). Needs a fldigi built with the patch in fldigi-mcp/patches; stock 4.2.13 has no browser.* methods, and then this tool says so instead of failing. Receive only. |
| rsidB | RSID bursts the detector heard: which modes were announced in the passband and where, as {utc, mode, hz} entries since the last clear. Works with fldigi's RSID set to notify-only (RxID on, "do not change modem"), so the current modem keeps decoding while the list tells you what else is on. operations: hits, clear, available. Needs a fldigi built with the rsid-hits patch in fldigi-mcp/patches; on stock 4.2.13 the tool says so instead of failing. Receive only. |
| fldigi_callA | Escape hatch: call ANY fldigi XML-RPC method by dotted name (e.g. 'rig.get_mode'). Use |
| signal_huntA | Find 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. method 'audio' (default): tap Each candidate carries carrier_hz, mode (RTTY with shift, CW, BPSK31/63/125, Olivia with tones and bw, MFSK16, DominoEX, MT63, or unknown), db_over_floor, persistence (fraction of the window it was present), periodicity (a CQ loop repeats), score, and fldigi_modem, the name tune_to needs. Nothing here transmits. |
| tune_toA | Set 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 |
| band_guidanceA | Advisory band guidance (experimental, region-aware) — informational / QSY help only. operations:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Several tools overlap in triggering technical operations (e.g., 'legacy' deprecated methods mixed with 'fldigi_call' escape hatch and 'transmit' keying operations create ambiguity about which to use). Additionally, 'controls' vs 'status' fields are not clearly delineated from 'application' info operations, and 'signal_hunt' and 'browser' both serve signal detection, though with different methods.
Naming is inconsistent: some tools use single-word verbs (status, legacy, transmit, rig, log, text) while others use compound nouns (signal_hunt, tune_to, band_guidance, wefax, navtex). Operations within tools are mostly verb_noun (get/set/toggle) but the tool-level names mix styles, and 'legacy' is a category name not a clear action.
22 tools is on the higher side but not extreme, given fldigi's broad feature set (transmit, rig, modem, log, text, special modes). However, some tools like 'legacy' and 'fldigi_call' add bulk without distinct value, making the count feel heavier than needed; a leaner set around 15 would be more appropriate.
The server covers core fldigi operations well: transmit, receive, modem control, frequency, log, text, rig, special modes (WEFAX, NAVTEX), and diagnostics. Minor gaps include lack of a direct receive-while-transmitting control, but the 'transmit' send with auto-return and 'text' read cover most workflows. The presence of 'legacy' and 'fldigi_call' suggests full reachability, but they are fallback rather than missing functionality.