radio-browser-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@radio-browser-mcpPlay some jazz"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-serverneededStatus 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 |
| Search Radio-Browser and play by name. |
| Browse popular stations from Radio-Browser. |
| Play a Radio-Browser station by UUID. |
| Stop playback. |
| Get current track + spectrum. |
| Play next popular station. |
| 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 --spectrumRequirements
Python 3.10+
mcppackage (auto-installed)httpxpackage (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 toolsbrowse_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")
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| country | No | ||
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.3.0- First observed
browse_radio - First observed
next_station - First observed
now_playing - First observed
play_by_uuid - First observed
play_station - First observed
random_station - First observed
stop
TDQS
Scored across 7 tools
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.
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.
7 tools cover core radio browsing and playback workflows well. The count is appropriate without being excessive or sparse.
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
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
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
MCP server for Producer/Riffusion AI music generation
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables controlling Spotify playback through natural language commands in MCP clients like Cursor or Claude for Desktop.1-
- AlicenseNot gradedqualityFmaintenanceInternet 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
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude access to your SoundCloud library, allowing you to manage playlists and tracks through natural language.1AGPL 3.0
- AlicenseAqualityDmaintenanceMCP server for controlling the mpv media player, enabling playback control, music library browsing, YouTube streaming and downloading, and metadata editing from within an MCP client.17251MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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