Supports containerized deployment through Docker, enabling portable setup of the AetherLink server with all dependencies included.
Provides testing infrastructure for verifying functionality of radio protocol decoders and hardware interfaces.
Built on Python 3.10+, allowing for extensible development of new radio protocol decoders and hardware support.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AetherLink SDR MCPscan 100-150 MHz for emergency services signals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AetherLink-SDR-MCP: Software Defined Radio Model Context Protocol Server
Control Software Defined Radios and decode radio protocols through an AI-friendly Model Context Protocol interface.
π Features
Protocol Decoders: ADS-B aircraft tracking, POCSAG pagers, AIS ship tracking, NOAA weather satellites
Advanced Analysis: Real-time spectrum analysis, waterfall displays, signal detection, frequency scanning
Audio Recording: Demodulate and record FM/AM audio as WAV files
MCP Integration: Seamless integration with Claude Desktop and other MCP clients
23 MCP Tools: Complete SDR control through natural language
Related MCP server: MCP Hardware Access Library
π¦ Installation
Prerequisites
1. RTL-SDR Drivers:
2. RTL-SDR Tools:
3. POCSAG Decoder (optional but recommended):
4. Python 3.10+
Install from Source
Required Python Packages
The following are installed automatically:
pyrtlsdr- RTL-SDR hardware interfacenumpy- Signal processingscipy- Filtering and demodulationmcp- Model Context Protocol serverpyModeS- ADS-B decoding
π― Quick Start
1. Configure Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or equivalent:
Important: Use absolute paths for the Python interpreter.
2. Restart Claude Desktop
Quit and restart Claude Desktop to load the MCP server.
3. Test the Connection
In Claude Desktop:
You should see: "Successfully connected to RTL-SDR"
π‘ Supported Hardware
Device | RX Frequency | TX Support | Status | Tested |
RTL-SDR | 24 MHz - 1766 MHz | β | β Stable | β Yes |
HackRF One | 1 MHz - 6 GHz | β | β Working | β οΈ Limited |
Nooelec E4000 | 55 MHz - 2300 MHz | β | β Stable | β Yes |
π Protocol Support
Protocol | Description | Status |
ADS-B | Aircraft tracking | β Ready |
POCSAG | Pager decoding | β Ready |
AIS | Ship tracking | β Ready |
NOAA APT | Weather satellites | β Ready |
Protocol Details
ADS-B (1090 MHz):
Uses
rtl_adsbsubprocess for demodulationpyModeS for message decoding
Tracks aircraft position, speed, altitude, callsign
FULLY TESTED AND WORKING
POCSAG (152/454/929 MHz):
Uses
multimon-ngfor professional decodingSupports 512/1200/2400 baud
Alphanumeric and numeric messages
Common frequencies: 152.240 MHz, 454 MHz, 929-931 MHz
AIS (161.975/162.025 MHz):
GMSK demodulation (simplified)
Decodes ship position, speed, type
Requires coastal location
NOAA APT (137 MHz):
AM demodulation
Decodes weather satellite images
Requires satellite overhead (2 passes/day)
π οΈ Available MCP Tools (23 Total)
Core SDR Control (5 tools)
sdr_connect- Connect to RTL-SDR or HackRFsdr_disconnect- Disconnect from SDRsdr_set_frequency- Set center frequency in Hzsdr_set_gain- Set gain (dB or 'auto')sdr_get_status- Get hardware status
Aviation (3 tools)
aviation_track_aircraft- Start ADS-B tracking on 1090 MHzaviation_stop_tracking- Stop trackingaviation_get_aircraft- Get list of tracked aircraft
Pager Decoding (3 tools)
pager_start_decoding- Start POCSAG decoderpager_stop_decoding- Stop decodingpager_get_messages- Get decoded messages
Marine (3 tools)
marine_track_vessels- Start AIS ship trackingmarine_stop_tracking- Stop trackingmarine_get_vessels- Get vessel list
Satellite (1 tool)
satellite_decode_noaa- Decode NOAA weather satellite pass
Analysis (5 tools)
spectrum_analyze- Analyze RF spectrum (FFT, signal detection)spectrum_scan- Scan frequency rangerecording_start/recording_stop- Record raw IQ samples (saved to/tmp/sdr_recordings/)audio_record_start/audio_record_stop- Record demodulated audio as WAV (FM/AM)
HackRF Transmit (2 tools)
hackrf_set_tx_gain- Set transmit gainsignal_generator- Generate and transmit signals
π Usage Examples
Track Aircraft
After 30-60 seconds:
Decode Pagers
Wait a few minutes, then:
Note: Check RadioReference.com for active pager frequencies in your area.
Analyze Spectrum
Scan for Signals
Record Audio from FM Radio
Wait for desired duration (e.g., 30 seconds), then:
Files saved to: /tmp/sdr_recordings/audio_YYYYMMDD_HHMMSS_XXXMHz_FM.wav
Record Raw IQ Samples
Wait for desired duration, then:
Files saved to: /tmp/sdr_recordings/recording_YYYYMMDD_HHMMSS_XXXMHz.iq
Use case: Advanced analysis, replay, or processing with GNU Radio/SDR#
NOAA Satellite (when overhead)
π§ Development
Project Structure
Architecture
Device Management:
RTL-SDR and ADS-B use exclusive device access
Python SDR control and rtl_adsb cannot run simultaneously
aviation_track_aircraftautomatically disconnects Python SDRaviation_stop_trackingreconnects Python SDR
Decoders:
ADS-B:
rtl_adsbsubprocess + pyModeSPOCSAG:
rtl_fm+multimon-ngpipelineAIS: Built-in GMSK demodulator (simplified)
NOAA: Built-in AM demodulator + sync detection