Navidrome-MCP
Navidrome MCP Server
MCP-сервер (Model Context Protocol) для Navidrome. Claude Desktop, Claude Code, Cursor и другие MCP-клиенты могут просматривать вашу медиатеку, создавать плейлисты, открывать новую музыку и воспроизводить аудио через динамики вашего компьютера.
Содержание
Related MCP server: Spotify MCP Server
Возможности
🎵 Музыкальная библиотека
Просматривайте и ищите песни, альбомы, исполнителей, жанры и теги. Фильтры охватывают поисковый запрос, статус избранного, диапазон лет, порядок сортировки и значения тегов, и они комбинируются: «все мои избранные джазовые альбомы из 90-х, отсортированные по году» или «каждая песня с тегом Soundtrack и рейтингом 5 звёзд». Инструменты анализа тегов показывают, что есть в вашей библиотеке, чтобы вам не приходилось угадывать значения фильтров.
🔊 Локальное воспроизведение аудио
Требуется
mpvна хосте, где запущен MCP-сервер (см. Установка mpv).
Аудио воспроизводится через динамики вашего компьютера без браузера или веб-интерфейса Navidrome. Поиск и воспроизведение за один шаг: «сыграй 5 случайных избранных альбомов», «поставь в очередь всё, что я отметил избранным из 90-х, отсортированное по году» или «добавь 10 случайных рок-песен к тому, что уже играет, вперемешку». У альбомов есть три режима перемешивания: сохранять порядок, перемешивать порядок альбомов или чередовать треки.
Очередь можно редактировать во время воспроизведения: переставлять или перемешивать, не прерывая текущую песню, а удаление текущего трека переключает на следующий. Сохранённые радиостанции Navidrome (Icecast, SHOUTcast) транслируются через mpv с живыми метаданными ICY, так что вы видите, что играет на станции. Воспроизведение отправляет скробблы обратно в Navidrome, так что счётчики проигрываний и недавняя активность остаются синхронизированными. mpv запускается при первом использовании, может переживать перезапуски MCP-клиента через сокет на пользователя (см. Настройка MPV Remote для правил времени жизни) и работает на Linux, macOS и Windows 11.
Это работает с голосовыми транспортами (Whisper STT + TTS) для устройства hands-free на Raspberry Pi или постоянно включённой машине.
🎛️ MPV Remote (веб-интерфейс)
Требуется
mpv(так же, как для локального воспроизведения). Включён по умолчанию и запускается вместе с сервером.
Веб-интерфейс по адресу http://localhost:8808 даёт любому браузеру управление локальным воспроизведением: сейчас играет с обложкой, транспорт и перемотка, громкость и живая очередь, по которой можно кликать для перехода, обновляемая в реальном времени. Встроенный выбор запускает любой плейлист, ваши избранные песни или избранные альбомы прямо со страницы, так что он работает как пульт без ассистента. Включите Expose on LAN, чтобы управлять воспроизведением с телефона или планшета. Аудио всегда выходит из машины, на которой запущен сервер. Подробности настройки, времени жизни и безопасности — в Настройка MPV Remote.

🎶 Плейлисты
Создавайте, обновляйте, переставляйте и удаляйте плейлисты. Добавляйте песни, целые альбомы, дискографии исполнителей или конкретные диски одной операцией. Находите, в каких плейлистах есть данная песня. Стройте плейлисты на основе данных прослушивания: «плейлист "Скрытые жемчужины" из песен с 5 звёздами и менее чем 5 проигрываниями» или «по одному лучшему треку из каждого альбома моих топ-10 исполнителей в хронологическом порядке».
🎼 Музыкальные открытия (Last.fm)
Требуется ключ API Last.fm (бесплатно на last.fm/api), указанный на странице настроек.
Находите похожих исполнителей и треки, получайте биографии и лучшие треки, просматривайте мировые музыкальные чарты. Комбинируйте это со своей библиотекой, чтобы находить недостающие альбомы («альбомы, отсутствующие у моих топ-5 исполнителей, отсортированные по популярности»), заново открывать забытую музыку («треки, похожие на мои любимые, которые у меня есть, но я никогда не играю») или создавать плейлисты «Лучшее» из того, что у вас есть.
🎤 Синхронизированные тексты песен
Включается на странице настроек (провайдер LRCLIB + user agent). Ключ API не нужен.
Получайте тексты с временными метками (формат LRC, миллисекундные метки) из сообщественной базы LRCLIB, сопоставляемые по названию, исполнителю, альбому и длительности. Если синхронизированной версии нет, возвращается обычный текст.
📻 Интернет-радио
Управляйте радиостанциями Navidrome и открывайте новые по всему миру. URL потоков проверяются перед добавлением (определение MP3, AAC, OGG и FLAC), а метаданные SHOUTcast/Icecast извлекаются. Работает массовое обслуживание: «проверь все мои станции и удали неработающие» или «протестируй эти 10 URL и добавь работающие».
Глобальное открытие использует Radio Browser (требуется user agent, задаётся на странице настроек). Он охватывает тысячи станций с фильтрами по жанру, стране, языку, кодеку, битрейту и популярности. Голоса и клики регистрируются, так что ваше использование влияет на рейтинг сообщества.
📊 Аналитика прослушивания
Доступ к счётчикам проигрываний, недавней активности, спискам с высоким рейтингом и самым проигрываемым, а также распределению тегов по библиотеке. Используйте это для сравнения привычек («жанры, которые я играю больше или меньше в этом году»), поиска забытых фаворитов и хитов-однодневок или создания плейлистов под настроение на основе ваших паттернов прослушивания.
⭐ Рейтинги и избранное
Отмечайте и снимайте отметки «избранное» с песен, альбомов и исполнителей. Устанавливайте рейтинг от 0 до 5 звёзд и просматривайте всё отмеченное или с высоким рейтингом. Читайте и записывайте сохранённую очередь Navidrome, которую веб-интерфейс использует для синхронизации между устройствами.
📚 Поддержка нескольких библиотек
Фильтруйте все операции по подмножеству ваших библиотек Navidrome. Установите значение по умолчанию на странице настроек (Default libraries, library.defaultLibraryIds) или переключайте активные библиотеки во время работы.
Доступные инструменты
Категории инструментов, в заголовке которых указано требуется ..., регистрируются только при наличии соответствующей конфигурации.
Основная система
Инструмент | Описание |
| Проверка подключения к Navidrome и отчёт о доступности функций/инструментов |
Управление библиотекой
Инструмент | Описание |
| Подробные метаданные песни по ID |
| Подробные метаданные альбома по ID |
| Подробные метаданные исполнителя по ID |
| Список всех плейлистов, содержащих данную песню |
| Профиль пользователя, доступные библиотеки и статус активной библиотеки |
| Установка активных библиотек для всех операций поиска/списка |
Поиск
Инструмент | Описание |
| Поиск по исполнителям, альбомам и песням с фильтрами и сортировкой |
| Поиск песен с расширенными фильтрами и сортировкой |
| Поиск альбомов с расширенными фильтрами и сортировкой |
| Поиск исполнителей с расширенными фильтрами и сортировкой |
Плейлисты
Инструмент | Описание |
| Просмотр всех доступных плейлистов |
| Получение метаданных плейлиста по ID |
| Создание нового плейлиста |
| Обновление названия, описания или видимости |
| Удаление плейлиста |
| Получение содержимого плейлиста (JSON или M3U) |
| Добавление песен, альбомов, дискографий исполнителей или конкретных дисков одной операцией |
| Удаление треков по позиции |
| Перемещение трека на новую позицию |
Рейтинги и избранное
Инструмент | Описание |
| Отметить песню, альбом или исполнителя избранным |
| Снять отметку избранного |
| Установить рейтинг от 0 до 5 звёзд |
| Просмотр избранных песен, альбомов или исполнителей |
| Просмотр элементов с наивысшим рейтингом |
История прослушивания и сохранённая очередь
Инструмент | Описание |
| Недавняя активность прослушивания с опциональным фильтром по времени |
| Самые проигрываемые песни, альбомы или исполнители |
| Чтение сохранённой очереди Navidrome (синхронизация веб-интерфейса) |
| Сохранение очереди в Navidrome для синхронизации веб-интерфейса |
| Очистка сохранённой очереди Navidrome |
Метаданные и теги
Инструмент | Описание |
| Поиск по значениям тегов (жанр, тип релиза, носитель и т.д.) |
| Счётчики использования тегов по библиотеке |
| Обнаружение доступных значений фильтров для операций поиска |
Открытия Last.fm (требуется ключ API Last.fm)
Инструмент | Описание |
| Поиск исполнителей, похожих на данного |
| Поиск треков, похожих на данный |
| Биография исполнителя и теги |
| Лучшие треки исполнителя |
| Трендовые исполнители, треки и теги из чартов Last.fm |
| Полная дискография с типами релизов и годами (MusicBrainz), жанрами и популярностью (Last.fm) и флагом наличия в библиотеке для каждого альбома. Отвечает на вопрос «каких альбомов X мне не хватает?» |
| Детали альбома: треклист с длительностями, год и тип, жанры, сводка из вики, популярность и принадлежность к библиотеке. Работает для альбомов, которых у вас нет |
Тексты песен (требуется провайдер LRCLIB, задаётся на странице настроек)
Инструмент | Описание |
| Тексты песен с синхронизацией по времени (LRC) и обычные тексты, сопоставляемые по названию/исполнителю/альбому/длительности |
Управление радиостанциями
Инструмент | Описание |
| Список всех сохранённых радиостанций Navidrome |
| Подробная информация о станции по ID |
| Создание одной или нескольких станций (JSON-массив, опционально |
| Удаление станции |
| Проверка http(s) URL потока на доступность и наличие аудиоконтента |
Глобальный поиск радиостанций (требуется user agent Radio Browser)
Инструмент | Описание |
| Поиск станций по всему миру через Radio Browser |
| Доступные значения фильтров (теги, страны, языки, кодеки) |
| Подробная информация о станции Radio Browser |
| Регистрация клика воспроизведения для метрик популярности |
| Голосование за станцию |
Локальное воспроизведение (требуется mpv)
По умолчанию воспроизведение транслирует исходный файл (см. Формат транскодирования в Первичная настройка).
Инструмент | Описание |
| Воспроизведение одной или нескольких песен. |
| Воспроизведение одного или нескольких альбомов. |
| Поиск и воспроизведение альбомов за один шаг. Принимает все фильтры |
| Поиск и воспроизведение песен за один шаг. Принимает все фильтры |
| Загрузка треков плейлиста в очередь по |
| Воспроизведение сохранённой радиостанции Navidrome. Заменяет очередь, так как радио не может смешиваться с песнями или альбомами |
| Пауза воспроизведения (позиция сохраняется) |
| Возобновление воспроизведения |
| Переход к следующему треку |
| Переход к предыдущему треку |
| Перемещение в пределах текущего трека (абсолютное или относительное) |
| Установка внутренней громкости mpv (0-100) |
| Текущие название/исполнитель/альбом/позиция/длительность и индекс в очереди (или станция + метаданные ICY для радио) |
| Проверка состояния движка (запущен, версия mpv, простой) без запуска mpv |
| Снимок текущей очереди с метаданными и индексом текущего трека |
| Очистка очереди и остановка воспроизведения |
| Перемешивание порядка очереди без изменения состава. Текущий трек продолжает играть и перемещается в начало |
| Перемещение элемента очереди между индексами. Никогда не меняет то, что играет |
| Удаление элемента. mpv переходит к следующему треку, если удалён текущий |
| Переход к элементу очереди по указанному индексу. Не меняет порядок |
Установка и настройка
Предварительные требования
Node.js 20+ (скачать)
Запущенный сервер Navidrome
MCP-совместимый клиент (Claude Desktop, Claude Code, Cursor или другой MCP-клиент с поддержкой локального stdio)
Опционально: mpv для локального воспроизведения аудио
Быстрая установка
Установите опубликованный пакет (автообновление при запуске):
npm install -g navidrome-mcpПакет: navidrome-mcp на npm.
Для сборки для разработки:
git clone https://github.com/Blakeem/Navidrome-MCP.git
cd Navidrome-MCP
pnpm install
pnpm buildНастройка вашего MCP-клиента
Конфигурация MCP-клиента только сообщает клиенту, как запустить сервер. Ваши учётные данные Navidrome и все параметры хранятся в локальном settings.json, редактируемом через страницу настроек в браузере, поэтому никакие секреты не попадают в JSON клиента или окружение. Страница настроек открывается при первом запуске (см. Первичная настройка).
Для Claude Desktop отредактируйте claude_desktop_config.json (расположение: %APPDATA%/Claude/ в Windows, ~/Library/Application Support/Claude/ в macOS, ~/.config/Claude/ в Linux). Другие MCP-клиенты используют ту же структуру JSON.
{
"mcpServers": {
"navidrome": {
"command": "npx",
"args": ["navidrome-mcp"]
}
}
}Для ручной сборки замените command/args на:
"command": "node",
"args": ["/absolute/path/to/Navidrome-MCP/dist/index.js"]Первичная настройка
При первом запуске без конфигурации страница настроек открывается в вашем браузере. Это происходит независимо от того, запустили ли вы MCP-сервер или автономный веб-плеер (navidrome-web). Если браузер не может открыться (например, через SSH), URL выводится в консоль, а ненастроенный MCP-сервер предоставляет инструмент open_settings, который возвращает его. Откройте страницу настроек в любое время с помощью:
npx navidrome-configВведите URL Navidrome, имя пользователя и пароль, а также любые дополнительные функции. Затем нажмите Проверить соединение и Сохранить. Это создаёт локальный settings.json (структура: settings.example.json). Настройки загружаются при запуске и не перезагружаются на лету, поэтому перезапустите то, что вы запустили: закройте и снова откройте MCP-клиент или повторно запустите navidrome-web. При обновлении со старой настройки через env форма предзаполняется вашими предыдущими значениями env/.env. Проверьте и сохраните.
Машины без графического интерфейса и контейнеры: страница настроек привязывается только к loopback, поэтому хост без браузера (VPS, Docker-контейнер) настраивается с помощью переменных окружения. Когда settings.json не существует, сервер работает с NAVIDROME_URL, NAVIDROME_USERNAME и NAVIDROME_PASSWORD, плюс дополнительные переменные, такие как MCP_TRANSPORT и LASTFM_API_KEY. settings.json, если он создан, всегда имеет приоритет над env.
Обязательно: URL Navidrome, имя пользователя, пароль.
Опционально (задаётся на странице настроек):
Библиотеки по умолчанию: разделённые запятыми ID библиотек, активируемые по умолчанию. Пусто — все.
API-ключ Last.fm: включает поиск Last.fm.
User agent Radio Browser: включает глобальный поиск станций.
Поставщик текстов песен (LRCLIB) + user agent: включает получение текстов песен.
Путь к mpv: расположение бинарного файла mpv, если его нет в
PATH. Пусто — автоопределение.Формат транскодирования: по умолчанию
raw, который транслирует исходный файл для наилучшего качества и надёжной перемотки. Установите кодек (например,mp3,opus) для медленных или тарифицируемых соединений. Битрейт применяется только при заданном кодеке.Веб-интерфейс (порт / хост / expose / включён / автооткрытие браузера): настраивает MPV Remote (см. Настройка MPV Remote). По умолчанию
localhost:8808.Транспорт (тип / хост / порт): способ, которым сервер предоставляет протокол MCP. По умолчанию
stdio, локальный транспорт, используемый настольными клиентами. Установитеtypeвhttp, чтобы запустить сервер как сетевой процесс (см. Работа через HTTP).
Функции включаются, когда их настройки присутствуют.
Установка mpv (опционально)
mpv — это кроссплатформенный медиаплеер. Сервер регистрирует инструменты воспроизведения, когда обнаруживает mpv при запуске. Без него сервер по-прежнему управляет вашей библиотекой и сохранённой очередью Navidrome, но не воспроизводит звук.
macOS (через Homebrew):
brew install mpvLinux:
sudo apt install mpv # Debian / Ubuntu / Mint / PopOS
sudo dnf install mpv # Fedora / RHEL / CentOS Stream
sudo pacman -S mpv # Arch / Manjaro
sudo zypper install mpv # openSUSEWindows:
winget install shinchiro.mpv # winget is included on Windows 11
scoop install mpv
choco install mpvИспользуйте полный ID
shinchiro.mpv. Обычныйwinget install mpvпредложит выбрать между ним и неофициальным пакетом из Store. Сборка shinchiro — та, на которую ссылается mpv.io для Windows.Примечание о
PATHв Windows. Пакетshinchiro.mpvустанавливается вC:\Program Files\MPV Player\и **не** добавляет себя вPATH. Либо:
Добавьте эту папку в
PATH(Свойства системы → Переменные среды → Path → Создать), затем откройте новый терминал, либоУкажите путь к mpv на странице настроек (
playback.mpvPath) как полный путь кmpv.exe, напримерC:\Program Files\MPV Player\mpv.exe.Другие способы установки (scoop, choco, ручной zip) используют другие папки. Если
mpv --versionне работает в новом терминале, найдитеmpv.exeи примените одно из исправлений выше.
Готовый бинарный файл с mpv.io также подойдёт. Проверьте с помощью mpv --version. Затем перезапустите ваш MCP-клиент, чтобы сервер заново обнаружил mpv.
Настройка MPV Remote
Включение и время работы
Панель включена по умолчанию. Сервер запускает её как отдельный процесс navidrome-web, и порт привязывается немедленно, поэтому страница доступна до начала воспроизведения. Хосты без mpv не запускают её. Настройки плеера находятся за значком шестерёнки в плеере, а кнопки шестерёнки и питания появляются только для браузеров на хост-машине.
Переживает ли воспроизведение закрытие вашего AI-клиента:
По умолчанию (выкл): плеер, запущенный через MCP, и mpv останавливаются, когда MCP-сервер закрывается или перезапускается.
Продолжать воспроизведение после закрытия MCP-сервера (
webui.persistAfterMcpExit, на странице настроек или в модальном окне шестерёнки): плеер продолжает работать. Остановите его кнопкой питания.Запущен вручную (
navidrome-web, ниже): всегда работает независимо. MCP-сервер подключается к нему и никогда его не завершает.
mpv останавливается, когда останавливается плеер, без фонового таймаута простоя. Чтобы отключить панель, снимите флажок Включить сопутствующую панель управления на странице настроек (webui.enabled).
Запуск автономно
Запустите плеер независимо от любого MCP-клиента:
navidrome-web # after: npm install -g navidrome-mcp
# or, from a dev clone / manual build:
node dist/web/main.jsОн читает settings.json, открывает ваш браузер и работает в фоновом режиме, пока вы не остановите его кнопкой питания. Он сосуществует с экземпляром, запущенным через MCP: процесс, который первым привязывает порт, владеет им, а другой подключается. Журналы записываются в navidrome-web.log в вашем каталоге конфигурации.
Если ещё ничего не настроено, при запуске откроется страница настроек вместо плеера (см. Настройка при первом запуске). Заполните её и сохраните. Затем перезапустите navidrome-web.
Ярлык на рабочем столе (рекомендуется)
Создаёт значок для двойного клика на вашей платформе. Он запускает плеер в фоновом режиме без окна терминала и открывает ваш браузер. Если плеер уже запущен, он только открывает браузер.
navidrome-web-shortcut # after: npm install -g navidrome-mcp
# or, from a dev clone (see Development):
pnpm make:launcherЯрлык содержит абсолютные пути к вашему node и собранному плееру, поэтому работает без PATH. Он создаёт:
Linux:
Navidrome Player.desktopна рабочем столе и в меню приложений (~/.local/share/applications). В GNOME в первый раз нажмите правой кнопкой → Allow Launching.macOS:
Navidrome Player.appна рабочем столе (при желании перетащите в/Applications).Windows:
Navidrome Player.vbsна рабочем столе и в меню «Пуск». (Если рабочий стол перенаправлен в OneDrive, файл окажется там.)
Повторно запустите генератор после перемещения или пересборки проекта, чтобы обновить пути.
Конфигурация
Все настройки необязательны и находятся в разделе Web UI страницы настроек, ниже указаны их пути в settings.json. После сохранения перезапустите клиент. Исключение — persistAfterMcpExit, который модальное окно с шестерёнкой применяет на лету.
Параметр ( | По умолчанию | Эффект |
|
| Установите |
|
| Порт, на котором слушает HTTP-сервер. Выберите свободный порт, если 8808 занят на вашем хосте. |
|
| Адрес привязки. Переопределяйте только если нужен конкретный интерфейс. Обычно правильный вариант — Expose on LAN. |
|
| Привязка к |
|
| Открывать плеер в браузере при запуске MCP-сервера. Запуск |
|
| Оставить запущенный через MCP плеер (и mpv) работать после закрытия или перезапуска MCP-сервера. Переключается на лету в модальном окне с шестерёнкой в плеере. |
Использование в качестве пульта для телефона/планшета
Включите Expose on LAN на странице настроек и сохраните.
Перезапустите MCP-клиент (или перезапустите
navidrome-web).Плеер записывает LAN-URL, по которым он доступен, в момент привязки (например,
http://192.168.1.42:8808). Откройте один из них в браузере телефона и добавьте в закладки.
Примечание по безопасности
Веб-интерфейс не имеет аутентификации. Любой, кто может дотянуться до порта, может ставить на паузу, перематывать, искать, менять громкость и переставлять очередь.
С
webui.host=127.0.0.1(по умолчанию) он доступен только с самой машины, что безопасно.С Expose on LAN (
webui.expose=true) он доступен любому устройству в LAN. Это нормально для доверенной домашней сети, но не выставляйте его в публичный интернет. Нет ограничения частоты запросов, а управляющий API позволяет менять очередь и запускать плейлисты. Настройки плеера и кнопка питания остаются доступны только через loopback и скрыты для удалённых браузеров, так что телефон в вашей LAN может управлять воспроизведением, но не может менять настройки или выключать плеер. Основная страница настроек никогда не выставляется наружу. При включённом exposeGET /healthzвозвращает404вне хоста, чтобы не раскрывать отпечаток версии; проверяйте здоровье плеера с его хоста.
Работа по HTTP
По умолчанию сервер говорит по MCP через stdio. Клиент запускает его как дочерний процесс и общается через stdin/stdout. Это работает для десктопного клиента на той же машине, но недоступно по сети.
Установка транспорта в http заставляет сервер привязать сокет и обслуживать MCP Streamable HTTP transport на /mcp. Тогда он работает как отдельный процесс, к которому сетевые MCP-клиенты подключаются напрямую, без моста supergateway или mcp-proxy.
Добавьте блок transport в ваш settings.json. host по умолчанию равен 127.0.0.1 (только loopback). Установите expose: true, чтобы привязаться ко всем интерфейсам (0.0.0.0) и позволить удалённому клиенту подключиться; явный host переопределяет expose. Установите authToken, чтобы требовать bearer-аутентификацию. Это рекомендуется всегда, когда порт доступен за пределами loopback, а на странице настроек для этого есть кнопка Generate:
"transport": {
"type": "http",
"port": 3000,
"expose": true,
"authToken": "a-long-random-secret"
}Укажите HTTP-совместимому MCP-клиенту адрес http://<host>:<port>/mcp:
{
"mcpServers": {
"navidrome": {
"type": "http",
"url": "http://your-host:3000/mcp",
"headers": { "Authorization": "Bearer a-long-random-secret" }
}
}
}Когда задан токен, каждый запрос к /mcp должен нести Authorization: Bearer <token> (сравнение за постоянное время), всё остальное получает 401. Если транспорт привязывается к не-loopback адресу без токена, сервер при запуске пишет предупреждение в лог, а не отказывается стартовать, так что развёртывание, ограниченное файрволом или NetworkPolicy, всё равно работает. GET /healthz никогда не закрывается токеном. Это неаутентифицированная конечная точка живости для проверок контейнеров: возвращает 200 {"status":"ok"} и не делает вызовов к Navidrome.
Фильтрация хостов (защита от DNS-ребinding): при привязке по умолчанию (loopback без токена) запросы, чей заголовок Host не является loopback-алиасом, отклоняются, так что вредоносная веб-страница не сможет управлять сервером через ваш браузер. Установка authToken или привязка к не-loopback адресу отключает автоматический фильтр. Удалённое развёртывание доступно по именам, которые сервер заранее знать не может, а bearer-токен уже блокирует ребinding (заманённый браузер не сможет подставить ваш токен). Чтобы закрепить допустимые имена, задайте transport.allowedHosts — он применяется всегда, когда присутствует. transport.allowedOrigins задавайте только для браузерных клиентов: он проверяет заголовок Origin.
Транспорт также можно настроить через переменные окружения: MCP_TRANSPORT (stdio|http), MCP_HTTP_HOST, MCP_HTTP_PORT, MCP_HTTP_EXPOSE (true — привязка ко всем интерфейсам), MCP_HTTP_AUTH_TOKEN и MCP_HTTP_ALLOWED_HOSTS / MCP_HTTP_ALLOWED_ORIGINS (через запятую). У веб-интерфейса есть соответствующее семейство WEBUI_* (WEBUI_ENABLED, WEBUI_PORT, WEBUI_HOST, WEBUI_EXPOSE, WEBUI_AUTO_OPEN_BROWSER, WEBUI_PERSIST_AFTER_MCP_EXIT). Они применяются, когда settings.json не существует, и предзаполняют форму настроек при первом запуске (см. Настройка при первом запуске).
Одна учётная запись, общее состояние: каждый HTTP-сеанс обслуживается одним процессом, держащим одну аутентифицированную учётную запись Navidrome, а выбор активной библиотеки глобален для процесса. Вызов
set_active_librariesменяет фильтр библиотек для всех подключённых сеансов, иget_user_detailsотражает этот общий выбор.
Безопасность: сервер держит аутентифицированный сеанс Navidrome, поэтому открытый порт — это полный контроль над библиотекой без каких-либо учётных данных. Выставление порта за пределы localhost — осознанное действие (
expose: trueили явный не-loopbackhost). Если вы это делаете, задайте токен аутентификации или ограничьте доступ файрволом, Kubernetes NetworkPolicy или обратным прокси с TLS. Оставляйте транспортstdioпо умолчанию, если удалённый доступ не нужен.
Откуда идёт звук. Транспорт определяет, кто может достучаться до MCP-протокола, и не перемещает аудио. mpv работает рядом с процессом сервера, поэтому звук издаёт машина, на которой запущен сервер. HTTP на машине вне контейнера даёт удалённый MCP-доступ с работающим воспроизведением: запустите сервер на машине, подключённой к колонкам, укажите удалённым клиентам http://that-machine:3000/mcp и задайте authToken. Контейнер даёт постоянно доступную конечную точку только для инструментов библиотеки (поиск, плейлисты, оценки, метаданные радио, Last.fm, тексты песен) без аудио.
Для контейнеров см. Running in Docker: образ, варианты развёртывания, монтируемая конфигурация и особенности аудио.
Примечание о ChatGPT Desktop
Поддержка MCP в ChatGPT (веб и десктоп) требует размещённого HTTPS-эндпоинта и не работает с локальными stdio-серверами. Этот сервер умеет обслуживать MCP по HTTP (см. Работа по HTTP), так что вы можете разместить его за обратным прокси с TLS вместо моста вроде mcp-remote. Для самостоятельно размещённого музыкального сервера проще использовать Claude Desktop, Claude Code, Cursor или другой клиент с поддержкой stdio.
Устранение неполадок
Проблемы с подключением
Убедитесь, что Navidrome запущен и доступен
Проверьте, что Navidrome URL на странице настроек содержит протокол (
http://илиhttps://)Используйте кнопку Test connection на странице настроек (или проверьте учётные данные через
curl/ браузер) перед сохранением
Специфика macOS
См. macOS Troubleshooting Guide. Частая проблема — не найден путь к Node.js; решается симлинками или полными путями.
Конфигурация
Используйте абсолютные пути в конфигурационных файлах
Проверяйте JSON на валидность (никаких висячих запятых)
Перезапускайте MCP-клиент после изменений
Известные ограничения
Нет звука без mpv. Вместо этого используйте веб-интерфейс Navidrome или Subsonic-клиент (см. Установка mpv).
В «недавно прослушанном» нет меток времени. Navidrome отдаёт счётчики воспроизведений и статус завершения, но не время последнего прослушивания.
Сохранённая очередь ≠ живая очередь. Инструменты
*_saved_queueработают с серверной очередью Navidrome (синхронизация веб-интерфейса). Инструменты*_play_queueработают с локальным плейлистом mpv.
Разработка
git clone https://github.com/Blakeem/Navidrome-MCP.git
cd Navidrome-MCP
pnpm install
pnpm build
node dist/config-app/main.js # opens the settings page; fill in + Save
# (writes settings.json to your OS config dir; see settings.example.json)
pnpm dev # hot reload
pnpm test # watch-mode tests
pnpm test:run # one-shot tests
pnpm check:all # lint + typecheck + dead-code
pnpm build # production bundleТестирование автономного веб-плеера из dev-сборки
Это путь из исходников, чтобы попробовать плеер до того, как релиз попадёт в npm (опубликованный пакет может отставать от dev). Это касается и MCP-сервера, поскольку оба запускаются из одного dist/.
# 1. Build (also bundles the web UI's static assets into dist/)
pnpm build
# 2. Configure if needed; writes settings.json to your OS config dir
node dist/config-app/main.js # opens the settings page; fill in + Save
# 3. Run the standalone player directly
node dist/web/main.js # serves http://127.0.0.1:8808 and opens your browserЧтобы сделать из этой сборки значок для двойного клика (глобальная установка не нужна):
pnpm make:launcher # writes a shortcut to your Desktop + app menuЗаметки для Windows (PowerShell):
Используйте
pnpm build, затемnode dist\web\main.js— то же самое, что выше, но с обратными слэшами.pnpm make:launcherзаписываетNavidrome Player.vbsна рабочий стол и в меню «Пуск». Он запускаетnode dist\web\main.jsбез окна консоли и встраивает абсолютный путь к этому каталогу, так что повторно запускайте его после перемещения папки.Если перенаправленный/OneDrive рабочий стол скрывает файл, копия в меню «Пуск» всё равно работает (Пуск → введите «Navidrome»).
Для воспроизведения должен быть установлен mpv. Задайте
playback.mpvPathна странице настроек, если его нет вPATH.
После npm install -g navidrome-mcp те же сценарии запускаются как navidrome-web, navidrome-config и navidrome-web-shortcut без клонирования и сборки.
Тестирование с MCP Inspector:
pnpm build
npx @modelcontextprotocol/inspector node dist/index.js # web UI
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name search_all --tool-arg query="jazz" # CLIЛицензия
Код: AGPL-3.0
Документация: CC-BY-SA-4.0
Поддержка
Сделано с ❤️ для сообщества Navidrome
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Control your internet radio from any AI client: listeners, stream, playlists, AutoDJ, DJs, store.
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.
AI music and podcast platform for autonomous agents. SoundCloud for AI bots.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables music management through search, playlist creation, and intelligent recommendations. Supports searching by song, artist, or album, creating and managing playlists, and getting music recommendations based on genre and mood.713
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Spotify through natural language for music discovery, playback control, library management, and playlist creation. Supports searching for music, controlling playback, managing saved tracks, and getting personalized recommendations based on mood and preferences.1095MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to control Spotify playback, search for music, manage playlists, and interact with your Spotify library through natural language commands.19
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search YouTube Music, manage playlists, and create smart recommendations using natural language.13
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Blakeem/Navidrome-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server