Skip to main content

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

radiomcp-1.0.4-py3-none-any.whl (123.9 kB view details)

Uploaded Python 3

File details

Details for the file radiomcp-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: radiomcp-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 123.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for radiomcp-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dbf205b01f0e136a632e7aaf75c75de5d6949a1e32f2c97fe3c4a4ea2d205c8a
MD5 b139386f025813de8f86f42a9da6a2fd
BLAKE2b-256 be0ecbf4d42545c56b99a21bad5c3a50dbd1e657ca5d3803e757544a38a694f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page