网络电台流媒体协议服务

Radio Browser MCP 是一个现代模型上下文协议(MCP)服务器,提供对Radio Browser API的访问,并直接使用VLC流式传输网络电台。

  • by Filyus
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Filyus/Radio-Browser-MCP

使用说明

无线电浏览器MCP

一种现代的模型上下文协议(MCP)服务器,提供对无线电浏览器API的访问,并使用VLC直接流式传输互联网无线电台。

特性

🔧 无线电发现工具

  • get_radio_stats():数据库统计(站点、国家、标签)。
  • search_stations_by_country_code(country_code):按ISO代码发现(例如“US”、“GB”)。
  • search_stations_by_station_name(name):模糊搜索特定电台。
  • search_stations_by_tag(tag):按流派或标签搜索电台(例如,“chillout”、“jazz”、“rock”)。
  • get_available_tags([limit], [order]):获取可用标签的全局列表(按站数或名称排序)。
  • search_global_top_voted_stations(limit):从API获取全球投票最多的电台。
  • search_global_top_clicked_stations(limit):从API获取全球点击量最大的电台。
  • get_available_servers():API服务器发现和故障转移信息。
    • 搜索响应在本地缓存,以改进个人标签分析。

⭐ 收藏夹和个人历史

  • add_favorite_station(url, [name], [stationuuid]):将电台添加到您的个人收藏夹列表中。
  • remove_favorite_station(url):从收藏夹中删除电台。
  • get_favorite_stations():列出所有已保存的收藏夹电台。
  • get_my_recent_stations([limit]):查看您最近播放的电台。
  • get_my_top_stations([limit]):查看按总收听时间排序的个人热门电台。
  • get_my_top_tags([limit]):根据收听的电台和缓存的电台元数据查看您的个人热门标签。

🎵 播放和控制工具

  • play_radio_station(url, [name], [stationuuid]):将任何广播URL直接流式传输到您的系统扬声器。支持播放列表分辨率(.m3u,.pls)。
  • stop_radio():立即终止播放。
  • get_radio_status():返回当前电台、URL、, 正在播放 跟踪元数据和Windows媒体桥状态。
  • get_windows_media_bridge_status():MCP->SMTC主机通信的详细诊断(/health + /debug/state).
  • set_radio_volume(volume):调节音量(0-100)。
  • get_radio_volume():检索当前音量水平。
  • Automatic Reconnection:对于不稳定的流,平滑播放,指数回退(可配置)。
    • 在Windows上,播放可以委托给 Radio-Browser-SMTC-Host 媒体播放器。如果不可用,则自动使用VLC回退。

🛠️ 需求

  • VLC 媒体播放器:必须安装在您的系统上。
  • Python 3.10+
  • 可选(Windows媒体弹出集成):运行伴侣主机在 Radio-Browser-SMTC-Host.

🚀 快速开始

服务器已针对以下方面进行了优化 紫外线。您甚至可以在不克隆存储库或管理虚拟环境的情况下运行它。

使用 uvx

uvx --from git+https://github.com/Filyus/Radio-Browser-MCP radio-browser-mcp

本地开发

如果您在本地有源代码,可以使用以下命令运行:

uvx --from . radio-browser-mcp

⚙️ 配置

服务器支持多个环境变量来调整重新连接、监听跟踪和Windows媒体会话行为:

变量 默认值 描述
RADIO_INITIAL_RECONNECT_DELAY 0.1 重新连接尝试的启动延迟(秒)。
RADIO_MAX_RECONNECT_DELAY 30.0 指数回退的最大上限延迟(秒)。
RADIO_RECONNECT_BACKOFF_THRESHOLD 5.0 检测不稳定流并触发回退的窗口(秒)。
RADIO_ENABLE_BACKGROUND_TRACKING true 启用监听SQLite持续时间的定期后台提交。
RADIO_TRACKING_INTERVAL 60.0 后台持续时间跟踪提交之间的间隔(秒)。
RADIO_MAX_PLAYLIST_BYTES 262144 解析时要读取的最大字节数 .m3u/.pls 播放列表。
RADIO_ENABLE_WINDOWS_SMTC_HOST false 通过HTTP将SMTC更新发送到外部桌面主机(选择加入)。
RADIO_ENABLE_WINDOWS_SMTC_HOST_PLAYER false 更喜欢通过桌面SMTC主机播放(/player/*)在VLC回退(选择加入)之前。
RADIO_WINDOWS_SMTC_HOST_UPDATE_URL http://127.0.0.1:8765/smtc/update 更新C#SMTC主机的终结点。
RADIO_WINDOWS_SMTC_HOST_TIMEOUT 0.6 主机更新的HTTP超时(秒)。

Windows SMTC+MSIX

有关完整的Windows设置(主机播放器模式、MSIX打包、证书/安装、故障排除),请参阅:

⚙️ MCP配置

根据您安装服务器的方式,将以下配置之一添加到MCP客户端(如Claude Desktop或 mcp_config.json 反重力AI)。

选项1:远程执行(通过 uvx)

如果您不想手动克隆存储库,这是推荐的方法。它自动获取代码和依赖关系。

{
  "mcpServers": {
    "radio-browser": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/Filyus/Radio-Browser-MCP",
        "radio-browser-mcp"
      ],
      "env": {
        "RADIO_INITIAL_RECONNECT_DELAY": "0.1",
        "RADIO_ENABLE_BACKGROUND_TRACKING": "true",
        "RADIO_TRACKING_INTERVAL": "60.0"
      }
    }
  }
}

选项2:本地执行(通过 uv run / python)

如果您已在本地克隆了存储库(例如,用于Antigravity AI或主动开发),请将配置指向您的本地脚本路径。使用 uv run 确保自动管理所有依赖关系。

{
  "mcpServers": {
    "radio-browser": {
      "command": "uv",
      "args": [
        "run",
        "C:\\MCP-Servers\\Radio-Browser-MCP\\server.py"
      ],
      "env": {
        "RADIO_INITIAL_RECONNECT_DELAY": "0.1",
        "RADIO_ENABLE_BACKGROUND_TRACKING": "true",
        "RADIO_TRACKING_INTERVAL": "60.0"
      }
    }
  }
}

(注:您可以替换 "uv", "run" 随着 "python" 如果您通过手动安装了依赖项 pip 进入你的活跃环境。)


📁 文件结构

  • server.py:带有回放事件挂钩和历史路由的FastMCP服务器。
  • app.py:无线电浏览器API客户端和播放列表解析程序。
  • db.py:SQLite数据库跟踪收藏夹、播放指标和缓存的电台元数据(radio_browser.db).
  • pyproject.toml:现代Python项目定义。
  • example_usage.py:演示脚本。

🛡️ 关键技术

  • VLC(python VLC):用于高兼容性音频流(HTTPS/HLS/ICY)。
  • FastMCP:用于工具注册的高级MCP框架。
  • 拉夫:确保干净、现代化的代码库。

⚖️ 许可证

这个项目是开源的。由免费提供动力 无线电浏览器API.