AetherLink SDR MCP:软件定义无线电模型上下文协议服务器
  
通过AI友好的模型上下文协议接口控制软件定义的无线电并解码无线电协议。
特性
- 协议解码器ADS-B飞机跟踪、POCSAG寻呼机、AIS船舶跟踪、Meteor-M LRPT卫星、ISM频段设备
- 气象卫星:使用SatDump进行Meteor-M2-3/M2-4 LRPT解码
- 高级分析:实时频谱分析、瀑布式显示、信号检测、频率扫描
- 录音:将FM/AM音频解调并记录为WAV文件
- ISM频段扫描:解码433MHz/315MHz设备(气象站、传感器、门铃、胎压监测器)
- MCP集成:与Claude Desktop和其他MCP客户端无缝集成
- 26个MCP工具:通过自然语言完成SDR控制
安装
来自PyPI(推荐)
pip install aetherlink
aetherlink --setup就是这样 --setup 命令自动配置Claude Desktop——它检测您的操作系统,查找配置文件,并在不接触其他MCP服务器的情况下添加AetherLink。然后重新启动Claude Desktop。
或者,如果你更喜欢 uvx (无需安装):
uvx aetherlink --setup注: 您仍然需要安装RTL-SDR系统驱动程序。看 系统依赖 在......下面
完整安装程序(包括系统驱动程序)
macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/N-Erickson/AetherLink-SDR-MCP/main/install.sh | bashWindows(PowerShell):
irm https://raw.githubusercontent.com/N-Erickson/AetherLink-SDR-MCP/main/install.ps1 | iex安装程序处理一切:系统驱动程序、Python包、可选解码器和Claude Desktop配置。
Windows用户: 你还需要 扎迪格 用WinUSB替换RTL-SDR USB驱动程序。安装程序将引导您完成此操作。
系统依赖
AetherLink要求在系统级别安装RTL-SDR驱动程序:
| 工具 | macOS | Ubuntu/Debian | 目的 |
|---|---|---|---|
| RTL-SDR | brew install rtl-sdr | sudo apt install rtl-sdr librtlsdr-dev | 必需-SDR驱动程序 |
| 垃圾桶1090 | brew install dump1090-fa | sudo apt install dump1090-fa | 可选-ADS-B飞机跟踪 |
| rtl433 | brew install rtl_433 | sudo apt install rtl-433 | 可选-ISM频段设备 |
| SatDump | brew install satdump | PPA说明 | 可选-卫星成像 |
| multimon ng | 构建于 来源 按安装程序 | sudo apt install multimon-ng | 可选-POCSAG寻呼机 |
Install from source (development)
git clone https://github.com/N-Erickson/AetherLink-SDR-MCP
cd AetherLink-SDR-MCP
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"快速开始
1.配置克劳德桌面
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或同等版本:
{
"mcpServers": {
"aetherlink": {
"command": "/path/to/AetherLink-SDR-MCP/venv/bin/python",
"args": ["-m", "sdr_mcp.server"],
"cwd": "/path/to/AetherLink-SDR-MCP"
}
}
}重要提示: 替换 /path/to/ 你的实际路径。跑 which python 激活您的venv以找到正确的Python路径。
2.重新启动克劳德桌面
完全退出(Cmd+Q)并重新启动Claude Desktop以加载MCP服务器。
3.测试连接
在克劳德桌面中:
Connect to my RTL-SDR您应该看到:“已成功连接到RTL-SDR”
故障排除
- 服务器未出现: 查看日志
~/Library/Logs/Claude/mcp-server-aetherlink.log - “设备繁忙”错误: 一次只能有一个程序使用SDR。关闭GQRX、SDR#或其他SDR软件。
- Linux设备权限: 为RTL-SDR添加udev规则(
/etc/udev/rules.d/20-rtlsdr.rules)并将其列入黑名单dvb_usb_rtl28xxu内核模块。 - E4000调谐器间隙: 1084-1239 MHz的频率可能不适用于基于E4000的加密狗。这是正常的硬件行为。
支持的硬件
| 设备 | RX频率 | TX支持 | 状态 | 已测试 |
|---|---|---|---|---|
| RTL-SDR | 24 MHz-1766 MHz | ❌ | ✅ 稳定 | ✅ 是的 |
| HackRF One | 1 MHz-6 GHz | ✅ | ✅ 工作 | ⚠️ 有限 |
| Nooelec E4000 | 55 MHz-2300 MHz | ❌ | ✅ 稳定 | ✅ 是的 |
协议支持
| 协议 | 描述 | 状态 |
|---|---|---|
| 监视系统 | 飞机跟踪 | ✅ 准备好了 |
| 凹陷 | 寻呼机解码 | ✅ 准备好了 |
| 自动识别系统 | 船舶跟踪 | ✅ 准备好了 |
| Meteor-M LRPT | 气象卫星(M2-3、M2-4) | ✅ 准备好了 |
| ISM频段 | 433MHz/315MHz设备 | ✅ 准备好了 |
协议细节
ADS-B(1090 MHz):
- 用途
dump1090解调和原始TCP输出的子过程 - 用于DF/CRC滤波ADS-B消息解码的pyModeS
- 默认捕获时间为120秒;集
duration=0一直跑到停 - 跟踪呼号、高度、速度、航向、垂直速率、消息计数
- 通过hexdb.io查询可选的飞机注册/类型/运营商
- 为观察到的ICAO地址发送实时跟踪链接
- 经过充分测试并正常工作
POCSAG(152/454/929 MHz):
- 用途
multimon-ng用于专业解码 - 支持512/1200/2400波特
- 字母数字信息
- 常见频率:152.240 MHz、454 MHz、929-931 MHz
自动识别系统(161.975/162.025兆赫):
- GMSK解调(简化)
- 解码船舶位置、速度、类型
- 需要沿海位置
流星-M LRPT(137 MHz):
- 用途
satdumpOQPSK解调的子过程 - 带纠错功能的数字LRPT传输
- 解码可见光和红外通道
- 活动卫星:流星-M2-3(137.9 MHz)、流星-M2-4(137.9 Hz主卫星,137.1 MHz备用卫星)
- 现行气象卫星标准 (取代美国国家海洋和大气管理局APT)
ISM频段(433/315/868/915 MHz):
- 用途
rtl_433解码子过程 - 多跳频支持
- 自动解码200多种设备类型
- 气象站、传感器、门铃、胎压监测器、遥控器
- 常见频率:433.92 MHz(欧盟/亚洲)、315 MHz(北美)、868 MHz(欧盟)、915 MHz(北美
可用MCP工具(共26个)
核心SDR控制(5个工具)
sdr_connect-连接到RTL-SDR或HackRFsdr_disconnect-断开与SDR的连接sdr_set_frequency-设置中心频率(Hz)sdr_set_gain-设置增益(dB或“自动”)sdr_get_status-获取硬件状态
航空(3个工具)
aviation_track_aircraft-在1090 MHz上启动ADS-B跟踪aviation_stop_tracking-停止跟踪aviation_get_aircraft-获取被跟踪飞机列表
寻呼机解码(3个工具)
pager_start_decoding-启动POCSAG解码器pager_stop_decoding-停止解码pager_get_messages-获取已解码的消息
海洋(3个工具)
marine_track_vessels-启动AIS船舶跟踪marine_stop_tracking-停止跟踪marine_get_vessels-获取船只列表
气象卫星(1个工具)
satellite_decode_meteor-解码Meteor-M2-3/M2-4 LRPT卫星通行证
ISM频段设备(3个工具)
ism_start_scanning-开始使用多跳频扫描ISM频段(433/315/868/915 MHz)ism_stop_scanning-停止ISM频段扫描ism_get_devices-获取检测到的设备(气象站、传感器等)
分析(5个工具)
spectrum_analyze-分析射频频谱(FFT、信号检测)spectrum_scan-扫描频率范围recording_start/recording_stop-记录原始IQ样本(保存到/tmp/sdr_recordings/)audio_record_start/audio_record_stop-将解调后的音频记录为WAV(FM/AM)
HackRF传输(2个工具)
hackrf_set_tx_gain-设置发射增益signal_generator-生成和传输信号
用法示例
跟踪飞机
Track aircraft in my area30-60秒后:
Show me the aircraft解码寻呼机
Set frequency to 152.240 MHz
Start paging decoder at 1200 baud等待几分钟,然后:
Get pager messages注意:请查看RadioReference.com,了解您所在地区的活动寻呼机频率。
分析频谱
Set frequency to 100 MHz
Analyze the spectrum扫描信号
Scan from 430 MHz to 440 MHz with 1 MHz steps从调频收音机录制音频
Set frequency to 103.7 MHz
Start audio recording with FM modulation and description "Local FM station"等待所需的持续时间(例如30秒),然后:
Stop audio recording文件保存到: /tmp/sdr_recordings/audio_YYYYMMDD_HHMMSS_XXXMHz_FM.wav
记录原始IQ样本
Set frequency to 103.7 MHz
Start recording with description "Raw baseband data"等待所需的持续时间,然后:
Stop recording文件保存到: /tmp/sdr_recordings/recording_YYYYMMDD_HHMMSS_XXXMHz.iq
使用案例: 使用GNU Radio/SDR进行高级分析、回放或处理#
Meteor-M气象卫星(头顶时)
Decode Meteor-M2-4 satellite for 600 seconds要求:
- SatDump已安装(
brew install satdump) - 卫星通过头顶(使用Gpredict、N2YO或Heavens Above等工具预测通过)
- 理想情况下,V偶极天线调谐到137 MHz
您将获得:
- 可见光通道图像
- 红外通道图像
- 合成RGB图像
- 已保存到
/tmp/sdr_recordings/meteor_METEOR-M2-4_*/
提示:
- Meteor-M2-4在137.9 MHz(主)或137.1 MHz(备用)上传输
- 卫星仰角>30°时的最佳结果
- 全票通常为10-15分钟
- 对弱信号使用更高的增益(40-49dB)
扫描ISM频段设备
Start ISM scanning on 433.92 MHz and 315 MHz with 30 second hop interval等待1-2分钟让设备传输,然后:
Show me the ISM devices检测到的常见设备:
- 气象站(温度、湿度、风、雨)
- 无线温度计
- 胎压监测系统(TPMS)
- 门窗传感器
- 门铃和遥控器
- 土壤湿度传感器
提示:
- 气象站通常每30-60秒发送一次
- 433.92 MHz在欧洲/亚洲很常见
- 315 MHz在北美很常见
- 尝试不同的频率组合:
[433.92, 315]或[868, 915] - 增加跳跃间隔,使每个频率的停留时间更长
发展
项目结构
AetherLink-SDR-MCP/
├── sdr_mcp/
│ ├── server.py # Main MCP server (26 tools)
│ ├── __main__.py # python -m sdr_mcp entry point
│ ├── hardware/
│ │ ├── base.py # Abstract SDR device base class
│ │ ├── rtlsdr.py # RTL-SDR interface
│ │ └── hackrf.py # HackRF interface
│ ├── decoders/
│ │ ├── pocsag.py # POCSAG pager decoder
│ │ ├── ais.py # AIS ship decoder
│ │ ├── rtl433.py # ISM band device decoder
│ │ └── meteor_lrpt.py # Meteor-M LRPT satellite decoder
│ ├── analysis/
│ │ └── spectrum.py # Spectrum analysis, signal detection
│ └── utils/
│ └── validators.py # Input validation and safety checks
├── tests/ # All test scripts
├── pyproject.toml # Package configuration
└── readme.md # This file建筑
设备管理:
- RTL-SDR和子过程解码器使用 独占设备访问
- Python SDR控制和子流程工具(dump1090,rtl_433)不能同时运行
- 基于子进程的解码器会自动断开Python SDR的连接
- 停止解码器重新连接Python SDR控件
解码器:
- ADS-B:
dump1090子进程+pyModeS+可选的hexdb.io查找 - ISM频段:
rtl_433JSON输出+多跳频的子流程 - 凹陷:
rtl_fm+multimon-ng管道 - AIS:内置GMSK解调器(简化)
