loading…
Search for a command to run...
loading…
Conversational AI control for Software Defined Radio via the Model Context Protocol.
Conversational AI control for Software Defined Radio via the Model Context Protocol.
Conversational AI control for Software Defined Radio via the Model Context Protocol.
Control RTL-SDR hardware through natural dialogue — query spectrum, tune frequencies, browse station databases, and visualize real-time waterfall displays. Works with Claude Desktop, any MCP client, or the included web dashboard.
# Install
pip install sdr-mcp
# Check hardware
sdr-mcp check
# Start server (STDIO mode for Claude Desktop)
sdr-mcp serve
For the web dashboard:
cd web_sota
npm install
npm run dev
| Document | What it covers |
|---|---|
| INSTALL.md | Full setup, drivers, configuration |
| ARCHITECTURE.md | System design, data flow, transport |
| MCP_SERVER.md | All 17 MCP tools with examples |
| SDR_TECHNOLOGY.md | Radio basics for beginners |
| RTL_SDR_V4.md | Recommended hardware specs |
Hardware Control
Spectrum Analysis
Frequency Database
WebSocket Streaming
Web Dashboard
Recommended: RTL-SDR Blog v4 (~$35)
Any RTL2832U-based SDR with R820T2 tuner works. See RTL_SDR_V4.md for full specs.
sdr-mcp/
├── README.md # This file
├── docs/ # Documentation
│ ├── INSTALL.md # Setup guide
│ ├── ARCHITECTURE.md # System design
│ ├── MCP_SERVER.md # Tool reference
│ ├── SDR_TECHNOLOGY.md # Radio primer
│ └── RTL_SDR_V4.md # Hardware specs
├── pyproject.toml # Python package config
├── justfile # Lint, fix, security recipes
├── start.ps1 # Launch backend + webapp
├── src/sdr_mcp/ # Python backend
│ ├── server.py # FastMCP server, 17 tools
│ ├── capture.py # RTL-SDR hardware interface
│ ├── processor.py # FFT / spectrum processing
│ ├── frequency_db.py # Station database
│ ├── online_db.py # radio-browser.info API
│ ├── websocket_server.py # Real-time WebSocket stream
│ ├── transport.py # STDIO / HTTP transport
│ └── cli.py # Command-line interface
├── web_sota/ # React/TypeScript webapp
│ └── src/
│ ├── pages/ # Spectrum, Waterfall, Stations, etc.
│ └── components/ # Layout, UI components
└── tests/ # Pytest test suite
| Layer | Technology |
|---|---|
| Protocol | FastMCP 3.2, MCP 2.14+ |
| Backend | Python 3.12, asyncio |
| Hardware | pyrtlsdr, RtlSdr |
| Signal | numpy, scipy (FFT) |
| Streaming | websockets (RFC 6455) |
| Frontend | React 19, TypeScript, Vite |
| UI | Tailwind CSS, Radix UI, Lucide icons |
| Standards | Fleet SOTA, ruff, Biome, just |
MIT
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"sdr-mcp-server": {
"command": "npx",
"args": []
}
}
}