Skip to main content
Glama

radio-browser-mcp ♫

MCP server for Radio-Browser internet radio + Claude Code status line with audio spectrum.

♫ BBC Radio 1 ▂▄▆█▇▅▃▂▃▅▇█

Features

  • MCP Server — control internet radio from Claude Code via natural language

  • Radio-Browser — browse 30,000+ global stations by popularity, genre, country

  • Auto-start mpv — no manual mpv --input-ipc-server needed

  • Status Line — real-time now-playing + spectrum visualization

  • Cross-platform — macOS / Linux / Windows

Related MCP server: radiomcp

Quick Start

# Install
cd radio-browser-mcp
./install.sh          # macOS / Linux
# .\install.ps1       # Windows PowerShell

# Restart Claude Code, then use:
# "Play some jazz" → Claude calls browse_radio(tag="jazz")
# "下一首" → Claude calls next_station()

MCP Tools

Tool

Description

play_station(name)

Search Radio-Browser and play by name.

browse_radio(limit, tag, country, language)

Browse popular stations from Radio-Browser.

play_by_uuid(uuid)

Play a Radio-Browser station by UUID.

stop()

Stop playback.

now_playing()

Get current track + spectrum.

next_station()

Play next popular station.

random_station(tag?)

Play random station (optionally by genre).

CLI Usage

# Run MCP server (default, used by Claude Code)
radio-browser-mcp

# Browse popular radio stations
radio-browser-mcp --browse
radio-browser-mcp --browse --tag jazz --limit 5

# Status line output (used by statusLine config)
radio-browser-mcp --status

# Stop
radio-browser-mcp --stop

# Check setup
radio-browser-mcp --check

# Test spectrum visualization
radio-browser-mcp --spectrum

Requirements

  • Python 3.10+

  • mcp package (auto-installed)

  • httpx package (auto-installed)

  • mpv (for playback)

  • ffmpeg (for spectrum capture, optional - animated fallback without it)

  • pywin32 (Windows only, for named pipe support)

License

MIT

Available Tools

7 tools
browse_radioA

Browse popular radio stations from Radio-Browser global directory. Stations are sorted by popularity (click count).

Args: limit: Number of stations to show (default 20, max 100) tag: Filter by genre/tag (e.g. "jazz", "rock", "news", "classical") country: Filter by ISO country code (e.g. "US", "GB", "DE", "JP") language: Filter by language (e.g. "english", "german", "chinese")

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
countryNo
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description discloses sorting and filter options but omits pagination, error handling, or data freshness. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, well-structured with Args list. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values are covered. Description adequately explains inputs and sorting; slight gap on pagination details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant meaning beyond schema: explains limit default/max, tag as genre with examples, country as ISO codes, language with examples. Schema coverage 0% but description compensates fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Browse popular radio stations' with sorting by popularity, distinguishing from sibling tools that play or fetch random stations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use browse vs siblings like random_station or search; lacks usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

next_stationA

Play the next popular station from Radio-Browser.

Cycles through the top global stations. Each call advances to the next one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It states the tool 'cycles through top global stations' and 'advances to the next one', but it does not clarify whether the cycle loops, what happens at the end of the list, or if there is any state persistence. This lack of detail is a significant gap for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that front-load the purpose and avoid any filler. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and an output schema (which presumably describes the return value), the description covers the core action. However, it could mention the return value type or whether it plays immediately, but this is not essential given the output schema. Almost complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema provides no semantic information. The description adds meaning by explaining that each call advances to the next station. This is sufficient, though the description could be more explicit about the cycle behavior. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool plays the next popular station from Radio-Browser, with a specific verb ('play') and resource ('next popular station'). It distinguishes from siblings like play_station (plays a specific station) and random_station (plays a random station).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for skipping to the next station in a cycle, but it does not explicitly state when to use this tool versus alternatives like play_station or random_station. There is no guidance on prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

now_playingA

Get current track info with spectrum visualization.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'spectrum visualization' as a feature but does not explicitly state that the tool is read-only or non-destructive. For a simple get operation, this is minimally adequate but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. Every part serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (0 parameters, simple function) and the existence of an output schema, the description is complete enough for an agent to understand the tool's purpose and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the input schema is fully documented (100% coverage). Per the guidelines, with high schema coverage, baseline is 3. The description adds no additional parameter information, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'current track info', with an added feature 'spectrum visualization'. It distinguishes from sibling tools which are about browsing, playing, and stopping stations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. However, the sibling tool names imply that this is for viewing current track information while others control playback, so usage is somewhat implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_by_uuidA

Play a Radio-Browser station by its UUID (from browse_radio results). Automatically reports the click to Radio-Browser.

Args: uuid: Station UUID from browse_radio results

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adds valuable context: it automatically reports the click to Radio-Browser. This goes beyond a simple play action but could mention error handling or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus an Args line—no fluff, immediately front-loaded with the action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), the description does not need to detail return values. It covers the core purpose and input adequately, though could mention what happens on invalid UUID.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains that 'uuid' is a station UUID from browse_radio results, adding meaning not present in the schema. This compensates well for the lack of schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool plays a Radio-Browser station by UUID from browse_radio results. It uses a specific verb ('play') and resource ('station'), and distinguishes from sibling tools like browse_radio or next_station.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies the UUID comes from browse_radio results but does not explicitly differentiate from the sibling play_station tool. No when-to-use or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

play_stationB

Play a station by name from Radio-Browser global directory. Partial name matching is supported (case-insensitive).

Args: name: Station name (e.g. "BBC Radio 1", "jazz fm")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only says 'Play' without detailing side effects (e.g., stopping current playback) or return behavior. Partial matching info is useful but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus an Args section are concise. The Args section is slightly redundant but adds an example without unnecessary length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool and presence of output schema, the description covers the basic action. However, it lacks context on playback behavior (e.g., queueing vs streaming).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The 'name' parameter is explained with examples but the schema itself has 0% description coverage. Description adds value but is minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Play a station by name' with a specific verb and resource. It distinguishes from siblings like play_by_uuid by specifying name matching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions partial name matching and case-insensitivity, but does not explicitly state when to use this tool over alternatives like play_by_uuid or browse_radio.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

random_stationA

Play a random station from Radio-Browser.

Args: tag: Optional genre filter (e.g. "jazz", "rock", "classical", "news"). If empty, picks from top global stations.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It does not explain whether playback replaces current station, adds to queue, or just returns station info. The effect on current playback is unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the main action in the first sentence and parameter details structured clearly. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description misses details about the effect on current playback (e.g., whether it starts streaming immediately). This is relevant given sibling tools like 'next_station' and 'stop'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the schema: it clarifies 'tag' as a genre filter, gives examples, and explains behavior when empty. Schema coverage was 0%, so this fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'play' and the resource 'random station from Radio-Browser'. It distinguishes from sibling tools like 'play_station' and 'play_by_uuid' by emphasizing randomness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides when to use the tag parameter and its default behavior, but does not explicitly guide when to use this tool over siblings like 'browse_radio' or 'play_station'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stopA

Stop mpv playback.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description transparently indicates the tool stops playback. Given zero parameters and a simple action, the description sufficiently covers the behavioral impact without needing further detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, making it perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters, and an output schema exists (though not shown). The description adequately explains the primary action, though it could mention the response (e.g., confirmation) for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With no parameters (schema coverage 100%), the description adds meaning beyond the empty schema by stating the tool's function. This meets the baseline for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Stop mpv playback') with a clear verb ('Stop') and resource ('mpv playback'), and effectively distinguishes from sibling tools that handle browsing or starting playback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: the tool should be invoked when playback is active. However, no explicit guidance is given on when not to use it or alternatives (e.g., stopping is different from pausing).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.3.0
    • First observedbrowse_radio
    • First observednext_station
    • First observednow_playing
    • First observedplay_by_uuid
    • First observedplay_station
    • First observedrandom_station
    • First observedstop

TDQS

A3.8/5.0

Scored across 7 tools

Disambiguation4/5

Tools are mostly distinct: browse for discovery, separate play methods by name/UUID/random/next, now_playing for current track, stop to halt. The multiple play-start tools could cause confusion, but descriptions clarify their specific triggers.

Naming Consistency3/5

All names use snake_case, but verb style varies: 'browse_radio' and 'play_station' are imperative, while 'next_station', 'now_playing', and 'random_station' are descriptive noun phrases, creating minor inconsistency.

Tool Count5/5

7 tools cover core radio browsing and playback workflows well. The count is appropriate without being excessive or sparse.

Completeness4/5

Covers essential operations: browsing with filters, multiple play methods, now-playing info, and stop. Minor gaps exist, such as listing available tags/countries or controlling playback volume, but agents can accomplish main tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Internet radio for Claude and your terminal with ~25,000 verified live stations from 197 countries. Control playback, search, and get recommendations through natural language.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cococolanosugar/radio-browser-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server