Internet radio MCP server + TUI player - 55,000+ stations, Airtune API, mpv playback
Project description
Airtune
Search and play 41,000+ verified internet radio stations from 200+ countries.
Powered by Airtune API | korean
Components
| Component | Description |
|---|---|
| radiomcp | MCP Server + HTTP API + CLI - integrates with Claude Desktop, Codex, GPT |
| radio | TUI App - interactive terminal player |
radiomcp (MCP Server)
Installation
pip install radiomcp
Player Installation (Optional)
Install one of the following for better playback quality. Falls back to browser if none installed.
| Player | macOS | Linux | Windows |
|---|---|---|---|
| mpv (recommended) | brew install mpv |
apt install mpv |
winget install mpv |
| VLC | brew install vlc |
apt install vlc |
vlc.io |
| ffplay | brew install ffmpeg |
apt install ffmpeg |
ffmpeg.org |
Auto-detection priority: mpv > vlc > ffplay > browser
Claude Desktop Configuration
claude_desktop_config.json:
{
"mcpServers": {
"radio": {
"command": "python3",
"args": ["-m", "radiomcp"]
}
}
}
CLI Mode
radiomcp search jazz
radiomcp search "korean news"
radiomcp play <url> "Station Name"
radiomcp stop
radiomcp now
radiomcp recommend focus
radiomcp update # Update station DB from Airtune API
radiomcp serve --port 8100 # Start HTTP API server
Usage with Claude
Ask Claude in natural language:
- "Play some jazz radio"
- "Find Korean news stations"
- "What's playing now?"
- "Stop the radio"
Player Backends
| Backend | Description |
|---|---|
| mpv | Best quality, auto-reconnect, ICY metadata |
| vlc | Widely installed, stable |
| ffplay | Included with ffmpeg, lightweight |
| browser | No installation needed, auto fallback |
See radiomcp/README.md for details.
radio (TUI)
Interactive terminal player for internet radio. Installed with pip install radiomcp.
Installation
# Required
brew install mpv
# Optional (for song recognition)
brew install ffmpeg
pip install openai-whisper
Run
radio
Usage
Search
> jazz # keyword search
> korea news # combined search
> relaxing music # mood search
> japan classical # multilingual
| Key | Function |
|---|---|
g |
Genre selection |
c |
Country selection |
p |
Popular stations |
h |
High quality (256k+) |
/ |
Search mode |
! |
Toggle search mode (DB only/DB+API) |
Search Modes
| Mode | Speed | Description |
|---|---|---|
| DB only | 0.1s | Local SQLite (default, instant) |
| DB+API | 1s+ | Includes RadioGraph API |
Toggle with ! key
AI Recommendations
| Key | Function |
|---|---|
a |
Personalized recommendations |
t |
View taste analysis |
w |
Time-based mood recommendations |
Song Info
| Key | Function |
|---|---|
n |
Current song |
i |
Song recognition (Shazam-like) |
il |
Recognized songs list |
Song History (Auto)
Songs are automatically saved when track changes.
| Key | Function |
|---|---|
sl |
View song history |
st |
Toggle song history on/off |
sc |
Clear song history |
Favorites
| Key | Function |
|---|---|
f |
View favorites |
+ |
Add to favorites |
- |
Remove from favorites |
< |
Previous favorite |
> |
Next favorite |
l |
Playlists |
pl name type |
Create playlist |
Playlist types: favorites, history, mood, ai, tag:jazz, country:KR
Playback
| Key | Function |
|---|---|
number |
Play station |
r |
Resume last station |
s |
Stop |
q |
Quit |
Auto-fetches latest URL on play (handles token expiration)
Volume Control
| Key | Function |
|---|---|
v |
Show volume |
v+ |
Volume up |
v- |
Volume down |
v50 |
Set volume to 50% |
DJ Mode
RADIOCLI_DJ=1 radio
| Key | Function |
|---|---|
d |
Toggle DJ mode |
Supports 10 languages: English, Korean, Japanese, French, German, Spanish, Chinese, Portuguese, Russian, Italian
DB Management
radio --db-stats # DB statistics
radio --cleanup # Clean dead stations
radiomcp update # Sync latest stations from RadioGraph API
Multilingual Search
Supports 50+ languages including:
| Language | Example | Converts to |
|---|---|---|
| English | jazz, classical, news | jazz, classical, news |
| Korean | jazz, classical, news | jazz, classical, news |
| Japanese | ジャズ, クラシック | jazz, classical |
| Chinese | 爵士乐, 古典音乐 | jazz, classical |
| Russian | джаз, классика | jazz, classical |
| Arabic | موسيقى, أخبار | music, news |
| Hindi | संगीत, समाचार | music, news |
Quality Filters
Include in search:
| Keyword | Filter |
|---|---|
| HQ, high quality | 192k+ |
| HD | 256k+ |
| LQ, low quality | 96k or less |
Example: jazz HQ
Environment Variables
| Variable | Description | Default |
|---|---|---|
RADIOCLI_LLM |
LLM provider | none |
RADIOCLI_DJ |
DJ mode | 0 |
RADIOCLI_LANG |
UI language | auto |
RADIOCLI_VOICE |
TTS voice | en-US-JennyNeural |
OLLAMA_MODEL |
Ollama model | llama3.2 |
OLLAMA_URL |
Ollama server | http://localhost:11434 |
ANTHROPIC_API_KEY |
Claude API key | - |
OPENAI_API_KEY |
OpenAI API key | - |
TTS Voices
| Voice | Language |
|---|---|
en-US-JennyNeural |
English (Female) |
ko-KR-SunHiNeural |
Korean (Female) |
ja-JP-NanamiNeural |
Japanese (Female) |
fr-FR-DeniseNeural |
French (Female) |
de-DE-KatjaNeural |
German (Female) |
zh-CN-XiaoxiaoNeural |
Chinese (Female) |
Data Storage
~/.radiocli/
├── favorites.json # Favorites
├── history.json # Listening history (stations)
├── songs.json # Song history (auto)
├── recognized_songs.json # Recognized songs
├── playlists.json # Playlists
└── mpv.sock # mpv socket
Station DB (radio_stations.db, 24k+ stations) is bundled with the package and stored in ~/.radiocli/ after first run. Use radiomcp update to sync latest stations.
Dependencies
- Python 3.9+
- mpv (required for CLI)
- ffmpeg (for song recording)
- openai-whisper (for DJ speech recognition, optional)
- edge-tts (for DJ mode)
- ollama (for LLM, optional)
Architecture
See docs/ARCHITECTURE.md for system architecture.
Data Pipeline:
- Daily URL validation & new station sync
- Korean broadcaster URL resolvers (KBS, MBC, YTN)
- Stations sourced from Radio Browser + Icecast directories
License
- Code: MIT - See LICENSE
- Station Database: ODbL 1.0 - See DATA_LICENSE.md
- Attribution: See ATTRIBUTION.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file radiomcp-1.0.6-py3-none-any.whl.
File metadata
- Download URL: radiomcp-1.0.6-py3-none-any.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59e36ff75bed61ef33a50dff8639dd6ab5d3ac1026e0e823925b22893168f0e8
|
|
| MD5 |
5fbddd8c28d28701c0789a4bd1f0ee6e
|
|
| BLAKE2b-256 |
d9f191cfecaaf7c78f1d39229571499c8f6bf9b4064776ce7b94190a3c0b2a82
|