Atlas / MCP servers / alondrilich / internet-radio-mcp

internet-radio-mcpCAUTION

mcp/alondrilich/internet-radio-mcp

MCP server for internet radio: search 50,000+ stations, get stream URLs, top/trending stations, countries and genres (Radio Browser public-domain data). By 72FM.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Exposed tools
5 5r · 0w · 0d
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An open-source Model Context Protocol (MCP) server for internet radio. It lets Claude, Cursor, VS Code Copilot and other MCP clients search radio stations worldwide and get their direct stream URLs. It also lists top and trending stations, countries and genres.

The station data comes from Radio Browser, a community-maintained, public-domain directory with over 50,000 stations that have working streams. The server is built by 72FM, a free web radio player built on the same directory. Every result includes a listen_url that plays the station in the browser on 72FM, as well as the station's own stream_url.

Stations belong to their broadcasters. Neither 72FM nor this server owns, operates or curates them. Anyone can add or edit entries in the directory, so a stream can occasionally be offline.
  • No API key, no account, read-only.
  • 5 tools, 1 prompt, stdio transport.
  • Runtime dependencies: @modelcontextprotocol/server (the official MCP TypeScript SDK, v2) and zod.

Example questions

  • "Find jazz stations in Brazil"
  • "What are the most popular stations in Japan?"
  • "Give me the stream URL for BBC World Service"
  • "What's trending on internet radio right now?"
  • "Which countries have the most radio stations?"
  • "What genres can I search for? Then find me some lofi stations."

Install

Requires Node.js 20 or newer. The server runs straight from GitHub with npx, so there is nothing to install globally.

Claude Code

claude mcp add internet-radio -- npx -y github:AlonDrilich/internet-radio-mcp

Then run /mcp in a session to confirm that internet-radio is connected.

Claude Desktop

Open Settings → Developer → Edit Config. This opens claude_desktop_config.json: on macOS it is at ~/Library/Application Support/Claude/claude_desktop_config.json, and on Windows at %APPDATA%\Claude\claude_desktop_config.json. Add:

`

Read from source at commit 61c8fa4d4668OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (oci)
claude mcp add internet-radio-mcp:1.0.3 -- docker run -i --rm ghcr.io/alondrilich/internet-radio-mcp:1.0.3:None
03

Exposed tools (5)

5 read · 0 write · 0 destructive.

ToolRiskDescription
get_stationread
list_countriesread
list_genresread
search_stationsread
top_stationsread
04

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/hostile.mjs:49
env: { ...getDefaultEnvironment(), RADIO_BROWSER_MIRRORS: `http://127.0.0.1:${port}` }, stderr: 'pipe'
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/smoke.mjs:142
RADIO_BROWSER_MIRRORS: 'http://127.0.0.1:59998,http://127.0.0.1:59999',
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/unit.mjs:59
assert.equal(cleanUrl(' http://195.150.20.242:8000/rmf_fm '), 'http://195.150.20.242:8000/rmf_fm');
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/unit.mjs:117
assert.deepEqual(mirrorsFromEnv('http://127.0.0.1:8080'), ['http://127.0.0.1:8080']);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/unit.mjs:129
return { base: `http://127.0.0.1:${port}`, close: () => new Promise(resolve => { server.closeAllConnections(); server.close(() => resolve(undefined)); }) };
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/hostile.mjs:24
{ stationuuid: '../../vote/' + UUID, name: 'Bad id', url_resolved: 'https://ok.example/b', votes: 1, lastcheckok: 1 }
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/unit.mjs:94
assert.equal(normalizeStation(station({ stationuuid: '../../vote/' + UUID })), null);
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/server, zod, @modelcontextprotocol/client, @types/node, typescript
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.override · CWE-94, CWE-1427
README.md:163
This reduces the risk of indirect prompt injection; it cannot remove it. A station can still be called "Ignore previous instructions", and that text will be shown, as one capped line, like any other n
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 61c8fa4d4668full audit observations/trust-audit/mcp-server/alondrilich__internet-radio-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1061c8fa4d4668CAUTIONB89first audit
06

Questions

What is the internet-radio-mcp MCP server?

MCP server for internet radio: search 50,000+ stations, get stream URLs, top/trending stations, countries and genres (Radio Browser public-domain data). By 72FM.

What tools does internet-radio-mcp expose?

5 in total: 5 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is internet-radio-mcp safe to connect to an agent?

With care. The audit graded it B (89/100) and found 9 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does internet-radio-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does internet-radio-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as internet-radio-mcp at 1.0.3.

How current is this page?

The grade is for one exact copy of the source (61c8fa4d4668), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement