返回市场
导航穹-MCP

导航穹-MCP

作者:Blakeem28 星标更新:2025-09-17

项目介绍

Navidrome MCP 服务器

通过一个由人工智能驱动的音乐助手来改造你的 Navidrome 音乐服务器。这个 MCP(模型上下文协议)服务器使 Claude、ChatGPT 和其他 AI 助手能够通过自然语言与你的个人音乐库进行交互,提供智能播放列表创建、音乐发现和库管理等功能。

目录

为什么选择 Navidrome MCP?

想象一下拥有一个真正理解你音乐品味的 AI 助手。这个 MCP 服务器让 AI 助手能够:

  • 分析你的听歌习惯并创建精心策划的播放列表
  • 根据你的心情或活动在你的库中发现隐藏的宝藏
  • 从你最喜欢的曲目构建自定义广播电台
  • 使用 Last.fm 的推荐引擎找到与你喜欢的音乐相似的歌曲
  • 通过高级过滤器发现来自世界各地的互联网广播电台
  • 获取精确到毫秒时间戳的同步歌词,用于你最喜欢的曲目
  • 通过简单的对话命令管理你的库

这不仅仅是一个音乐工具——它是由 AI 驱动的个人音乐策展人。

特性

🎵 音乐库管理

  • 智能浏览:通过智能过滤器导航歌曲、专辑、艺术家和流派
  • 深度搜索:跨所有元数据进行全文搜索或针对特定内容的搜索
  • 丰富的元数据:访问关于曲目、专辑和艺术家的详细信息
  • 标签分析:探索和分析元数据标签(流派、作曲家、唱片公司、年份等)
  • 简洁响应:优化数据传输,仅包含必要字段(约10个属性,而非原始的50多个)

🎶 智能播放列表创建

  • AI 助手集成:允许 AI 助手分析你的品味并构建主题播放列表
  • 智能管理:通过对话方式创建、更新和组织播放列表
  • 灵活的曲目添加:通过ID添加歌曲、整张专辑、艺术家的全部作品或特定光盘
  • 动态重新排序:通过简单命令重新排列曲目
  • 交叉引用:查找哪些播放列表包含特定歌曲

🎼 个性化音乐发现

  • 听歌数据访问:提供听歌历史数据,以便 AI 助手了解你的偏好
  • 类似艺术家/曲目的发现:通过 Last.fm 发现与你最喜欢的音乐相似的音乐
  • 深入艺术家:获取艺术家传记、热门曲目和相关艺术家
  • 全球趋势:浏览全球音乐排行榜和流行流派
  • 库分析工具:访问帮助 AI 助手找到被忽视的曲目的数据

📻 智能电台管理

  • 流验证:在添加之前测试广播电台 URL 以避免损坏的流
  • 格式检测:自动检测 MP3、AAC、OGG、FLAC 流
  • 元数据提取:从 SHOUTcast/Icecast 头部拉取电台信息
  • 自定义电台创建:从你的收藏中建立广播电台
  • 一次性设置提示:仅在需要时出现的智能上下文帮助

🌍 互联网电台发现

  • 全球电台数据库:通过 Radio Browser 访问全世界数千个互联网广播电台
  • 高级过滤:按流派、国家、语言、编解码器、比特率等搜索
  • 自动验证:发现的电台会进行可用性测试
  • 质量控制:过滤掉损坏的电台,专注于高质量流
  • 受欢迎度指标:按投票数和听众参与度发现电台
  • 电台管理:AI 助手用来将发现的电台添加到你的收藏中的工具

🎤 同步歌词

  • 时间同步歌词:获取带有毫秒精度时间戳的歌词,实现逐行定时
  • 双格式支持:访问时间同步和纯文本歌词
  • 社区驱动:歌词来源于 LRCLIB 社区数据库
  • 智能匹配:通过标题、艺术家、专辑和持续时间自动匹配
  • 无需 API 密钥:无需注册即可免费访问歌词

📊 分析与洞察

  • 听歌模式:通过播放统计数据了解你的音乐习惯
  • 品味演变:跟踪你的偏好随时间的变化
  • 最常/最少播放:发现你真正的最爱和被遗忘的曲目
  • 流派分布:访问有关你库组成的数据以供分析
  • 推荐数据:提供数据供 AI 助手基于你的历史生成建议

⭐ 偏好管理

  • 星标系统:标记最喜欢的项目以便快速访问
  • 五星级评分:对内容进行评分以获得更好的推荐
  • 队列控制:跨设备管理播放队列
  • 数据访问以组织:提供偏好数据供 AI 助手帮助组织你的收藏

安装

前提条件

  • Node.js 20+ (下载)
  • 运行中的 Navidrome 服务器,包含你的音乐库
  • Claude DesktopChatGPT Desktop(或任何兼容 MCP 的客户端)

手动构建的附加项:

快速设置

方法 1:NPM 包(推荐)

最简单的方法是使用已发布的 npm 包,它会在启动时自动更新:

npm install -g navidrome-mcp

📦 navidrome-mcp 在 npm 上

这会全局安装 MCP 服务器,并自动保持其更新。

方法 2:手动构建(开发)

对于开发或自定义构建:

git clone https://github.com/Blakeem/Navidrome-MCP.git
cd navidrome-mcp
pnpm install
pnpm build

配置 Claude Desktop

找到你的配置文件:

  • Windows%APPDATA%/Claude/claude_desktop_config.json
  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux~/.config/Claude/claude_desktop_config.json

添加 Navidrome MCP 服务器:

使用 NPM 包(推荐)

{
  "mcpServers": {
    "navidrome": {
      "command": "npx",
      "args": ["navidrome-mcp"],
      "env": {
        "NAVIDROME_URL": "http://your-server:4533",
        "NAVIDROME_USERNAME": "your_username",
        "NAVIDROME_PASSWORD": "your_password",
        "NAVIDROME_DEFAULT_LIBRARIES": "1,2", // 可选:设置默认激活的库(逗号分隔的ID)
        "LASTFM_API_KEY": "your_api_key", // 在 https://www.last.fm/api/account/create 获取自己的API密钥
        "RADIO_BROWSER_USER_AGENT": "Navidrome-MCP/1.0 (+https://github.com/Blakeem/Navidrome-MCP)",
        "LYRICS_PROVIDER": "lrclib",
        "LRCLIB_USER_AGENT": "Navidrome-M_1.0 (+https://github.com/Blakeem/Navidrome-MCP)"
      }
    }
  }
}

使用手动构建(替代方案)

{
  "mcpServers": {
    "navidrome": {
      "command": "node",
      "args": ["/绝对路径/to/navidrome-mcp/dist/index.js"],
      "env": {
        "NAVIDROME_URL": "http://your-server:4533",
        "NAVIDROME_USERNAME": "your_username",
        "NAVIDROME_PASSWORD": "your_password",
        "NAVIDROME_DEFAULT_LIBRARIES": "1,2", // 可选:设置默认激活的库(逗号分隔的ID)
        "LASTFM_API_KEY": "your_api_key", // 在 https://www.last.fm/api/account/create 获取自己的API密钥
        "RADIO_BROWSER_USER_AGENT": "Navidrome-MCP/1.0 (+https://github.com/Blakeem/Navidrome-MCP)",
        "LYRICS_PROVIDER": "lrclib",
        "LRCLIB_USER_AGENT": "Navidrome-MCP/1.0 (+https://github.com/Blakeem/Navidrome-MCP)"
      }
    }
  }
}

重要

  • NPM 方法:使用 npx navidrome-mcp,每次启动都会自动更新
  • 手动方法:需要绝对路径(从根开始的完整路径),并且需要手动更新
  • 库筛选:使用 NAVIDROME_DEFAULT_LIBRARIES 设置默认激活的库(例如,“1”表示一个库,“1,2,3”表示多个库)
    • 如果未设置,默认情况下所有库都是激活的
    • 运行时可以使用 set_active_libraries 工具更改激活的库
    • 无效的库ID会被忽略,并伴有警告
  • Last.fm 获取免费的 Last.fm API 密钥(可选 - 启用音乐发现)
  • 广播电台浏览器集成需要一个 User-Agent 字符串(启用电台发现)
  • 歌词集成无需 API 密钥(LRCLIB 是免费的)
  • 根据可用配置自动启用/禁用功能
  • 保存后重启 Claude Desktop

配置 ChatGPT Desktop

使用 NPM 包(推荐)

  1. 打开 ChatGPT Desktop
  2. 转到 设置 → 连接器
  3. 点击 创建 并添加:
    • 命令npx
    • 参数navidrome-mcp
    • 环境变量:同上
  4. 保存并重启

使用手动构建(替代方案)

  1. 打开 ChatGPT Desktop
  2. 转到 设置 → 连接器
  3. 点击 创建 并添加:
    • 命令node
    • 参数/绝对路径/to/navidrome-mcp/dist/index.js
    • 环境变量:同上
  4. 保存并重启

强大的使用示例

🎯 智能发现与播放列表创建

  • “查看我最常播放的艺术家,找出他们的唱片目录中我缺少的专辑,并告诉我哪些是最受欢迎的”
  • “使用 Last.fm 的顶级曲目数据创建一个‘Pink Floyd 最佳’播放列表,但只包含我实际拥有的歌曲”
  • “分析我最近播放的歌曲,找到我半年内没有播放过的类似曲目,并创建一个重新发现的播放列表”
  • “构建一个混合我最常播放的十首歌曲与我很少听的艺术家的类似曲目的播放列表”

🔍 收藏缺口分析

  • “显示我最常播放的五个艺术家缺少的专辑,并按 Last.fm 流行度排名”
  • “找出我只拥有单曲或合辑,而没有他们主要专辑的艺术家”
  • “识别我最喜欢的流派,然后显示那些我还没有拥有的高评价专辑”
  • “查看与我最喜欢的艺术家相似的艺术家,并告诉我我已经拥有但在我的库中从未播放过的艺术家”

📻 广播电台维护

  • “检查我现有的所有广播电台,验证每个电台,并移除损坏的电台”
  • “这里有我在网上找到的十个爵士广播电台网址 - 测试它们并将只有工作良好的电台添加进来”
  • “查找全球最受欢迎的爵士和古典电台,验证它们,并添加每种类型的前五名”
  • “检查我所有的广播电台,并用类似的正常工作的电台替换任何损坏的电台”

🎼 高级播放列表自动化

  • “创建一个‘隐藏珍宝’播放列表,包含五星级评分且播放次数少于五次的歌曲”
  • “根据去年每个月我最常播放的内容每周创建播放列表”
  • “制作一个‘完整的艺术家旅程’播放列表,包含我最喜欢的十个艺术家的每张专辑的一首顶级曲目,按时间顺序排列”
  • “通过分析我的听歌模式生成心情播放列表:我在早晨、晚上和周末播放什么”

📊 听歌洞察与组织

  • “分析我的爵士收藏:显示播放次数、评分,并找出我没有完全听过的专辑”
  • “查找不同专辑之间的重复歌曲并创建清理列表”
  • “显示我的听歌演变:我远离了哪些流派,以及我现在播放更多的是哪些”
  • “识别‘一炮走红’的艺术家 - 我只反复播放一首歌曲的艺术家”

可用工具

🔧 核心系统

工具描述
test_connection验证 Navidrome 服务器连接性和功能状态

📚 库管理

工具描述
get_song详细的歌曲信息
get_album详细的专辑信息
get_artist详细的艺术家信息
get_song_playlists获取包含特定歌曲的所有播放列表
get_user_details获取用户信息和可用库
set_active_libraries设置哪些库是激活的,用于筛选内容

🔍 搜索与发现

工具描述
search_all搜索所有类型的内容
search_songs搜索特定歌曲
search_albums搜索专辑
search_artists搜索艺术家
get_similar_artists查找相似的艺术家(Last.fm)
get_similar_tracks查找相似的曲目(Last.fm)
get_artist_info艺术家传记和标签
get_top_tracks_by_artist从 Last.fm 获取艺术家的顶级曲目
get_trending_music全球音乐趋势

🎵 播放列表操作

工具描述
list_playlists查看所有播放列表
get_playlist获取特定播放列表的详细信息(通过ID)
create_playlist创建新的播放列表
update_playlist更新播放列表元数据
delete_playlist删除播放列表
get_playlist_tracks获取播放列表内容
add_tracks_to_playlist在单个操作中添加多种类型的内容(歌曲/专辑/艺术家)
remove_tracks_from_playlist移除特定曲目
reorder_playlist_track重新排列曲目顺序

⭐ 评分与喜爱

工具描述
star_item标记为喜爱
unstar_item从喜爱中移除
set_rating设置 0-5 星评分
list_starred_items查看喜爱的项目
list_top_rated查看最高评分的项目

📊 分析与历史

工具描述
list_recently_played查看最近的听歌活动
list_most_played查找最常播放的内容
get_queue查看播放队列
set_queue设置播放队列
clear_queue清空播放队列

📻 广播电台管理

工具描述
validate_radio_stream测试流 URL 的有效性
list_radio_stations查看所有电台
get_radio_station获取特定电台的详细信息(通过ID)
create_radio_station使用 JSON 数组格式创建广播电台(单个或多个电台,可选验证*)
delete_radio_station删除互联网广播电台(通过ID)
play_radio_station开始广播电台播放
get_current_radio_info获取当前播放的广播电台和流元数据的信息
discover_radio_stations全球范围内发现互联网广播电台
get_radio_filters获取可用的搜索过滤器(流派、国家等)
get_station_by_uuid获取详细的电台信息
click_station注册播放点击以计算受欢迎度指标
vote_station对广播电台进行投票

*注意:create_radio_station 支持一个可选的 validateBeforeAdd 参数,该参数会在添加到 Navidrome 之前测试流 URL 的有效性。

🎤 歌词与时间戳

工具描述
get_lyrics获取同步和纯文本歌词

🏷️ 元数据与标签

工具描述
search_by_tags按特定标签搜索
get_tag_distribution分析标签使用模式和分布
get_filter_options获取搜索操作的可用过滤值

故障排除

常见问题

连接问题

  • 确认 Navidrome 服务器正在运行