Internet Radio (internet-radio-mcp)
Pesquise mais de 50.000 estações de rádio pela internet no diretório público Radio Browser por nome, gênero, país ou idioma; obtenha URLs de transmissão, estações mais populares e em alta, países e gêneros. Somente leitura, sem chave de API. Instalação: npx -y github:AlonDrilich/internet-radio-mcp
Documentação
internet-radio-mcp
Um servidor Model Context Protocol (MCP) de código aberto para rádio na internet. Ele permite que Claude, Cursor, VS Code Copilot e outros clientes MCP pesquisem estações de rádio no mundo todo e obtenham suas URLs de stream diretas. Ele também lista estações em alta e em tendência, países e gêneros.
Os dados das estações vêm do Radio Browser, um diretório de domínio público mantido pela comunidade com mais de 50.000 estações que possuem streams funcionais. O servidor é construído pela 72FM, um player de rádio web gratuito construído sobre o mesmo diretório. Cada resultado inclui um listen_url que reproduz a estação no navegador na 72FM, além do stream_url da própria estação.
As estações pertencem aos seus radiodifusores. Nem a 72FM nem este servidor as possuem, operam ou curadoria. Qualquer pessoa pode adicionar ou editar entradas no diretório, então um stream pode ocasionalmente ficar offline.
- Sem chave de API, sem conta, somente leitura.
- 5 ferramentas, 1 prompt, transporte stdio.
- Dependências de execução:
@modelcontextprotocol/server(o SDK oficial do MCP TypeScript, v2) ezod.
Perguntas de exemplo
- "Encontre estações de jazz no Brasil"
- "Quais são as estações mais populares no Japão?"
- "Me dê a URL do stream da BBC World Service"
- "O que está em alta na rádio na internet agora?"
- "Quais países têm mais estações de rádio?"
- "Quais gêneros posso pesquisar? Depois encontre algumas estações de lofi."
Instalação
Requer Node.js 20 ou mais recente. O servidor roda diretamente do GitHub com npx, então não há nada para instalar globalmente.
Claude Code
claude mcp add internet-radio -- npx -y github:AlonDrilich/internet-radio-mcp
Depois execute /mcp em uma sessão para confirmar que internet-radio está conectado.
Claude Desktop
Abra Configurações → Desenvolvedor → Editar Config. Isso abre claude_desktop_config.json: no macOS fica em ~/Library/Application Support/Claude/claude_desktop_config.json, e no Windows em %APPDATA%\Claude\claude_desktop_config.json. Adicione:
{
"mcpServers": {
"internet-radio": {
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
Reinicie o Claude Desktop.
Cursor
Adicione o servidor a ~/.cursor/mcp.json para usá-lo em todos os lugares, ou a .cursor/mcp.json para usá-lo em um único projeto:
{
"mcpServers": {
"internet-radio": {
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
VS Code (GitHub Copilot, modo Agente)
Adicione o servidor a .vscode/mcp.json, ou execute MCP: Adicionar Servidor na Paleta de Comandos:
{
"servers": {
"internet-radio": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
Outros clientes
Qualquer cliente MCP que possa iniciar um servidor stdio pode usar o mesmo comando: npx -y github:AlonDrilich/internet-radio-mcp.
O primeiro lançamento baixa o pacote do GitHub, o que leva alguns segundos. Lançamentos posteriores usam o cache do npx.
Ferramentas
Todas as ferramentas são somente leitura e anotadas com readOnlyHint: true e openWorldHint: true. Cada resultado contém:
- um resumo de uma linha,
- os mesmos dados como texto JSON,
structuredContentque corresponde aooutputSchemada ferramenta.
Streams quebrados (streams que falharam na última verificação automatizada do diretório) são excluídos das pesquisas.
| Ferramenta | Argumentos | Retorna |
|---|---|---|
search_stations | name?, tag? (gênero), countrycode? (ISO 3166-1 alpha-2, ex.: BR), language? (ex.: portuguese), order = votes | clickcount | bitrate (padrão votes), limit 1–50 (padrão 10) | Estações correspondentes |
get_station | id (Radio Browser stationuuid) | Uma estação |
top_stations | by = votes | clicks | trending (padrão votes), countrycode?, tag?, limit 1–50 (padrão 10) | Estações mais votadas, mais tocadas ou em tendência |
list_countries | min_stations? (padrão 1), limit? | Nome do país, código ISO, contagem de estações e página do país na 72FM (https://72fm.com/radio/<iso2>) |
list_genres | limit 1–100 (padrão 30) | Principais tags de gênero por contagem de estações. Tags de espaço reservado e não-gênero são filtradas (ex.: undefined, radio, fm, e nomes de país, região ou idioma). |
Campos da estação
{
"id": "963fa65f-0601-11e8-ae97-52543be04c81",
"name": "Antena 1 São Paulo, SP (ZYD823 94,7 MHz FM) [aac]",
"country": "Brazil",
"countrycode": "BR",
"language": "portuguese",
"tags": ["adult contemporary", "jazz", "pop", "smooth jazz"],
"codec": "AAC+",
"bitrate": 96,
"homepage": "http://antena1.com.br/",
"stream_url": "http://antena1.newradio.it/stream?ext=.mp3",
"favicon": null,
"votes": 33238,
"lastcheckok": true,
"listen_url": "https://72fm.com/station/963fa65f-0601-11e8-ae97-52543be04c81"
}
stream_urlé a URL de stream resolvida do diretório, ou a URL original quando não existe uma resolvida.listen_urlreproduz a estação no navegador na 72FM.tagscontém até 8 tags.
Prompt
find_radio(request) encontra estações para um humor, lugar, atividade ou gênero, por exemplo "jazz calmo para uma noite chuvosa" ou "rádio de Lisboa".
Confiabilidade
O servidor consulta os espelhos do Radio Browser nesta ordem, com um tempo limite de 8 segundos para cada um:
de1.api.radio-browser.infode2.api.radio-browser.infoall.api.radio-browser.info
Se todos os três falharem, a ferramenta retorna um erro claro (isError: true) e o servidor continua rodando. As solicitações se identificam com User-Agent: internet-radio-mcp/1.0 (+https://72fm.com).
Você pode alterar esse comportamento com duas variáveis de ambiente opcionais:
RADIO_BROWSER_MIRRORS: URLs base separadas por vírgula para usar em vez dos padrões.RADIO_BROWSER_TIMEOUT_MS: o tempo limite para cada espelho, em milissegundos (padrão8000).
Desenvolvimento
git clone https://github.com/AlonDrilich/internet-radio-mcp
cd internet-radio-mcp
npm install
npm run typecheck # tsc checkJs over the JSDoc-typed sources
npm run smoke # spawns the server over stdio and calls every tool against the live API
npx @modelcontextprotocol/inspector node src/index.js # interactive testing
O código-fonte é módulos ES simples com tipos JSDoc (src/), então não há etapa de build. É por isso que npx github:… funciona sem uma publicação no npm.
Relacionados
- radio-playlists: playlists M3U semanais por país e gênero do mesmo diretório (veja online).
- radio-player-72fm: plugin WordPress para colocar o player de uma estação em um site.
- Todas as ferramentas da 72FM: 72fm.com/developers.
Dados e créditos
- Os dados do diretório de estações vêm do Radio Browser e estão em domínio público. Agradecemos aos seus mantenedores e contribuidores. Se você usar este servidor com frequência, considere apoiar o Radio Browser.
- Streams, nomes e logotipos pertencem aos seus respectivos radiodifusores.
- 72FM é um player de rádio web gratuito construído sobre o diretório do Radio Browser.
Licença
MIT © Alon Drilich (72FM)