Internet Radio (internet-radio-mcp)
Busca más de 50,000 emisoras de radio por internet del directorio público Radio Browser por nombre, género, país o idioma; obtén URLs de transmisión, estaciones principales y en tendencia, países y géneros. Solo lectura, sin clave API. Instalación: npx -y github:AlonDrilich/internet-radio-mcp
Documentación
internet-radio-mcp
Un servidor Model Context Protocol (MCP) de código abierto para radio por internet. Permite que Claude, Cursor, VS Code Copilot y otros clientes MCP busquen emisoras de radio en todo el mundo y obtengan sus URL de transmisión directas. También lista emisoras populares y en tendencia, países y géneros.
Los datos de las emisoras provienen de Radio Browser, un directorio de dominio público mantenido por la comunidad con más de 50,000 emisoras que tienen transmisiones funcionales. El servidor está creado por 72FM, un reproductor de radio web gratuito construido sobre el mismo directorio. Cada resultado incluye un listen_url que reproduce la emisora en el navegador en 72FM, así como el stream_url propio de la emisora.
Las emisoras pertenecen a sus radiodifusores. Ni 72FM ni este servidor las poseen, operan o seleccionan. Cualquier persona puede añadir o editar entradas en el directorio, por lo que una transmisión puede estar ocasionalmente fuera de línea.
- Sin clave de API, sin cuenta, solo lectura.
- 5 herramientas, 1 prompt, transporte stdio.
- Dependencias de ejecución:
@modelcontextprotocol/server(el SDK oficial de MCP para TypeScript, v2) yzod.
Preguntas de ejemplo
- "Encuentra emisoras de jazz en Brasil"
- "¿Cuáles son las emisoras más populares en Japón?"
- "Dame la URL de transmisión de BBC World Service"
- "¿Qué está en tendencia en la radio por internet ahora mismo?"
- "¿Qué países tienen más emisoras de radio?"
- "¿Qué géneros puedo buscar? Luego encuéntrame algunas emisoras de lofi."
Instalación
Requiere Node.js 20 o más reciente. El servidor se ejecuta directamente desde GitHub con npx, por lo que no hay nada que instalar globalmente.
Claude Code
claude mcp add internet-radio -- npx -y github:AlonDrilich/internet-radio-mcp
Luego ejecuta /mcp en una sesión para confirmar que internet-radio está conectado.
Claude Desktop
Abre Configuración → Desarrollador → Editar configuración. Esto abre claude_desktop_config.json: en macOS está en ~/Library/Application Support/Claude/claude_desktop_config.json, y en Windows en %APPDATA%\Claude\claude_desktop_config.json. Añade:
{
"mcpServers": {
"internet-radio": {
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
Reinicia Claude Desktop.
Cursor
Añade el servidor a ~/.cursor/mcp.json para usarlo en todas partes, o a .cursor/mcp.json para usarlo en un solo proyecto:
{
"mcpServers": {
"internet-radio": {
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
VS Code (GitHub Copilot, modo Agente)
Añade el servidor a .vscode/mcp.json, o ejecuta MCP: Añadir servidor desde la Paleta de comandos:
{
"servers": {
"internet-radio": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:AlonDrilich/internet-radio-mcp"]
}
}
}
Otros clientes
Cualquier cliente MCP que pueda lanzar un servidor stdio puede usar el mismo comando: npx -y github:AlonDrilich/internet-radio-mcp.
El primer lanzamiento descarga el paquete desde GitHub, lo que tarda unos segundos. Los lanzamientos posteriores usan la caché de npx.
Herramientas
Todas las herramientas son de solo lectura y están anotadas con readOnlyHint: true y openWorldHint: true. Cada resultado contiene:
- un resumen de una línea,
- los mismos datos como texto JSON,
structuredContentque coincide con eloutputSchemade la herramienta.
Las transmisiones rotas (transmisiones que fallaron la última verificación automática del directorio) se excluyen de las búsquedas.
| Herramienta | Argumentos | Devuelve |
|---|---|---|
search_stations | name?, tag? (género), countrycode? (ISO 3166-1 alpha-2, p. ej. BR), language? (p. ej. portuguese), order = votes | clickcount | bitrate (por defecto votes), limit 1–50 (por defecto 10) | Emisoras coincidentes |
get_station | id (Radio Browser stationuuid) | Una emisora |
top_stations | by = votes | clicks | trending (por defecto votes), countrycode?, tag?, limit 1–50 (por defecto 10) | Emisoras más votadas, más reproducidas o en tendencia |
list_countries | min_stations? (por defecto 1), limit? | Nombre del país, código ISO, número de emisoras y página de país en 72FM (https://72fm.com/radio/<iso2>) |
list_genres | limit 1–100 (por defecto 30) | Principales etiquetas de género por número de emisoras. Las etiquetas de marcador de posición y las que no son de género se filtran (p. ej. undefined, radio, fm, y nombres de países, regiones o idiomas). |
Campos de la emisora
{
"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_urles la URL de transmisión resuelta del directorio, o la URL original cuando no existe una resuelta.listen_urlreproduce la emisora en el navegador en 72FM.tagscontiene hasta 8 etiquetas.
Prompt
find_radio(request) encuentra emisoras para un estado de ánimo, lugar, actividad o género, por ejemplo "jazz tranquilo para una tarde lluviosa" o "radio de Lisboa".
Fiabilidad
El servidor consulta los espejos de Radio Browser en este orden, con un tiempo de espera de 8 segundos para cada uno:
de1.api.radio-browser.infode2.api.radio-browser.infoall.api.radio-browser.info
Si los tres fallan, la herramienta devuelve un error claro (isError: true) y el servidor sigue ejecutándose. Las solicitudes se identifican con User-Agent: internet-radio-mcp/1.0 (+https://72fm.com).
Puedes cambiar este comportamiento con dos variables de entorno opcionales:
RADIO_BROWSER_MIRRORS: URL base separadas por comas para usar en lugar de las predeterminadas.RADIO_BROWSER_TIMEOUT_MS: el tiempo de espera para cada espejo, en milisegundos (por defecto8000).
Desarrollo
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
El código fuente son módulos ES simples con tipos JSDoc (src/), por lo que no hay paso de compilación. Por eso npx github:… funciona sin una publicación en npm.
Relacionados
- radio-playlists: listas de reproducción M3U semanales por país y género del mismo directorio (ver en línea).
- radio-player-72fm: complemento de WordPress para poner el reproductor de una emisora en un sitio.
- Todas las herramientas de 72FM: 72fm.com/developers.
Datos y créditos
- Los datos del directorio de emisoras provienen de Radio Browser y son de dominio público. Gracias a sus mantenedores y colaboradores. Si usas este servidor con frecuencia, considera apoyar a Radio Browser.
- Las transmisiones, nombres y logotipos pertenecen a sus respectivos radiodifusores.
- 72FM es un reproductor de radio web gratuito construido sobre el directorio de Radio Browser.
Licencia
MIT © Alon Drilich (72FM)