Skip to main content
Glama

Navidrome MCP Server

Navidrome 用の MCP (Model Context Protocol) サーバーです。Claude Desktop、Claude Code、Cursor、その他の MCP クライアントは、ライブラリの閲覧、プレイリストの作成、新しい音楽の発見、そしてお使いのマシンのスピーカーでのオーディオ再生ができます。

目次

Related MCP server: Spotify MCP Server

機能

🎵 音楽ライブラリ

曲、アルバム、アーティスト、ジャンル、タグを閲覧・検索できます。フィルターはクエリ、スター付きステータス、年範囲、並び順、タグ値をカバーし、組み合わせることもできます: 「90年代のスター付きジャズアルバムを年順に並べたもの」「サウンドトラックのタグが付いた5つ星の曲すべて」 など。タグ分析ツールはライブラリの内容を表示するので、フィルター値を推測する必要はありません。

🔊 ローカルオーディオ再生

MCP サーバーを実行しているホストに mpv が必要です (mpv のインストール を参照)。

オーディオはブラウザや Navidrome の Web UI を使わず、お使いのマシンのスピーカーから再生されます。検索と再生を一度に行えます: 「スター付きのアルバムをランダムに5枚再生」「90年代にスターを付けたすべての曲を年順にキューに入れて」「再生中の曲にロックを10曲ランダムにシャッフルで追加して」 など。アルバムには3つのシャッフルモードがあります: 順序を維持、アルバム順をランダム化、トラックをインターリーブ。

再生中にキューを編集できます: 現在の曲を中断せずに並べ替えやシャッフルができ、現在のトラックを削除すると次のトラックに進みます。保存された Navidrome ラジオ局 (Icecast、SHOUTcast) は、ライブの ICY メタデータとともに mpv でストリーミング再生されるため、放送局が何を再生しているかを確認できます。再生は Navidrome にスクロブルされるため、再生回数と最近のアクティビティが同期されます。mpv は初回使用時に起動し、ユーザーごとのソケットを通じて MCP クライアントの再起動後も維持できます (ライフタイムのルールは MPV Remote のセットアップ を参照)。Linux、macOS、Windows 11 で動作します。

これは、Raspberry Pi や常時稼働のマシンでのハンズフリーミュージックデバイス向けに、音声トランスポート (Whisper STT + TTS) と連携します。

🎛️ MPV Remote (Web UI)

mpv が必要です (ローカルオーディオ再生と同じ)。デフォルトでオンになり、サーバーとともに起動します。

http://localhost:8808 の Web UI は、任意のブラウザにローカル再生のコントロールを提供します: カバーアート付きの再生中情報、トランスポートとシーク、ボリューム、クリックして移動できるライブキューがリアルタイムで更新されます。内蔵ピッカーは、ページから任意のプレイリスト、スター付きの曲、スター付きのアルバムを開始できるため、アシスタントなしでリモコンとして機能します。Expose on LAN を有効にすると、スマートフォンやタブレットから再生を制御できます。オーディオは常にサーバーを実行しているマシンから出力されます。セットアップ、ライフタイム、セキュリティの詳細は MPV Remote のセットアップ にあります。

MPV Remote の Web インターフェース

🎶 プレイリスト

プレイリストの作成、更新、並べ替え、削除ができます。曲、アルバム全体、アーティストのディスコグラフィ、特定のディスクを一度の操作で追加できます。特定の曲が含まれるプレイリストを検索できます。リスニングデータからプレイリストを構築できます: 「再生回数が5回未満の5つ星の曲の『Hidden Gems』プレイリスト」「トップ10アーティストの各アルバムからトップトラックを1曲ずつ、時系列順に」 など。

🎼 ミュージックディスカバリー (Last.fm)

Last.fm API キーが必要です (last.fm/api で無料取得)。設定ページで設定します。

類似アーティストやトラックを見つけ、バイオグラフィやトップトラックを取得し、グローバルな音楽チャートを閲覧できます。これをライブラリと組み合わせて、欠けているアルバムを見つけたり (「トップ5アーティストから欠けているアルバムを人気順に」)、見落としていた音楽を再発見したり (「お気に入りに似ているが、所有しているのに再生していないトラック」)、所有している曲から「ベスト・オブ」プレイリストを構築したりできます。

🎤 同期歌詞

設定ページで有効にします (LRCLIB プロバイダー + ユーザーエージェント)。API キーは不要です。

LRCLIB のコミュニティデータベースから、タイトル、アーティスト、アルバム、再生時間で一致する時間同期歌詞 (LRC 形式、ミリ秒タイムスタンプ) を取得します。同期バージョンがない場合はプレーンテキストが返されます。

📻 インターネットラジオ

Navidrome のラジオ局を管理し、世界中の新しいラジオ局を発見できます。ストリーム URL は追加前に検証され (MP3、AAC、OGG、FLAC の検出)、SHOUTcast/Icecast のメタデータが抽出されます。一括メンテナンスも可能です: 「すべての放送局を検証して、壊れたものを削除して」「これらの10個の URL をテストして、動作するものを追加して」 など。

グローバルな発見には Radio Browser を使用します (ユーザーエージェントが必要で、設定ページで設定します)。ジャンル、国、言語、コーデック、ビットレート、人気度のフィルターで数千の放送局をカバーしています。投票とクリックが登録されるため、あなたの利用がコミュニティランキングに反映されます。

📊 リスニング分析

再生回数、最近のアクティビティ、高評価・再生回数上位のリスト、ライブラリ全体のタグ分布にアクセスできます。これを使って習慣を比較したり (「今年、よく再生しているジャンルとあまり再生していないジャンル」)、忘れていたお気に入りや一発屋を見つけたり、リスニングパターンからムードプレイリストを構築したりできます。

⭐ 評価とお気に入り

曲、アルバム、アーティストにスターを付けたり外したりできます。0〜5 の星評価を設定し、スター付きまたは高評価のすべてを一覧表示できます。Web UI がクロスデバイス同期に使用する保存済み Navidrome キューを読み書きできます。

📚 マルチライブラリサポート

すべての操作を Navidrome ライブラリのサブセットにフィルタリングできます。設定ページでデフォルトを設定するか (Default librarieslibrary.defaultLibraryIds)、実行時にアクティブなライブラリを切り替えることができます。

利用可能なツール

見出しに requires ... とあるツールカテゴリは、その設定が存在する場合にのみ登録されます。

コアシステム

Tool

Description

test_connection

Navidrome への接続を検証し、機能/ツールの利用可能性を報告します

ライブラリ管理

Tool

Description

get_song

ID による曲の詳細メタデータ

get_album

ID によるアルバムの詳細メタデータ

get_artist

ID によるアーティストの詳細メタデータ

get_song_playlists

指定した曲を含むすべてのプレイリストを一覧表示

get_user_details

ユーザープロフィール、利用可能なライブラリ、アクティブライブラリのステータス

set_active_libraries

すべての検索/一覧操作でアクティブにするライブラリを設定

検索

Tool

Description

search_all

フィルターと並べ替えを使用してアーティスト、アルバム、曲を横断検索

search_songs

高度なフィルターと並べ替えで曲を検索

search_albums

高度なフィルターと並べ替えでアルバムを検索

search_artists

高度なフィルターと並べ替えでアーティストを検索

プレイリスト

Tool

Description

list_playlists

アクセス可能なすべてのプレイリストを表示

get_playlist

ID によるプレイリストのメタデータを取得

create_playlist

新しいプレイリストを作成

update_playlist

名前、説明、可視性を更新

delete_playlist

プレイリストを削除

get_playlist_tracks

プレイリストの内容を取得 (JSON または M3U)

add_tracks_to_playlist

曲、アルバム、アーティストのディスコグラフィ、特定のディスクを一度の操作で追加

remove_tracks_from_playlist

位置でトラックを削除

reorder_playlist_track

トラックを新しい位置に移動

評価とお気に入り

Tool

Description

star_item

曲、アルバム、またはアーティストにスターを付ける

unstar_item

スターを外す

set_rating

0〜5 の星評価を設定

list_starred_items

スター付きの曲、アルバム、またはアーティストを表示

list_top_rated

最高評価のアイテムを表示

再生履歴と保存済みキュー

Tool

Description

list_recently_played

オプションの時間範囲フィルター付きの最近のリスニングアクティビティ

list_most_played

最も再生された曲、アルバム、またはアーティスト

get_saved_queue

Navidrome の保存済みキューを読み取る (Web UI 同期)

save_queue

Web UI 同期のためにキューを Navidrome に保存

clear_saved_queue

Navidrome の保存済みキューをクリア

メタデータとタグ

Tool

Description

search_by_tags

タグ値で検索 (ジャンル、リリースタイプ、メディアなど)

get_tag_distribution

ライブラリ全体のタグ使用回数

get_filter_options

検索操作で利用可能なフィルター値を発見

Last.fm ディスカバリー (Last.fm API キーが必要)

Tool

Description

get_similar_artists

指定したアーティストに類似するアーティストを検索

get_similar_tracks

指定したトラックに類似するトラックを検索

get_artist_info

アーティストのバイオグラフィとタグ

get_top_tracks_by_artist

アーティストのトップトラック

get_trending_music

Last.fm チャートからのトレンドアーティスト、トラック、タグ

get_artist_albums

リリースタイプと年 (MusicBrainz)、ジャンルと人気度 (Last.fm)、アルバムごとのライブラリ内フラグを含む完全なディスコグラフィ。「X のどのアルバムが欠けているか?」に答えます。

get_album_info

アルバム詳細: 再生時間付きのトラックリスト、年とタイプ、ジャンル、Wiki サマリー、人気度、ライブラリ所属。所有していないアルバムにも対応

歌詞 (LRCLIB プロバイダーが必要、設定ページで設定)

ツール

説明

get_lyrics

タイトル/アーティスト/アルバム/再生時間で照合する、時間同期(LRC)およびプレーンテキストの歌詞

ラジオ管理

ツール

説明

list_radio_stations

保存済みのNavidromeラジオ局をすべて一覧表示

get_radio_station

IDによるラジオ局の詳細情報

create_radio_station

1つ以上のラジオ局を作成(JSON配列、任意のvalidateBeforeAdd

delete_radio_station

ラジオ局を削除

validate_radio_stream

http(s)ストリームURLの到達可能性と音声コンテンツをテスト

グローバルラジオ検出(Radio Browserユーザーエージェントが必要)

ツール

説明

discover_radio_stations

Radio Browser経由で世界中のラジオ局を検索

get_radio_filters

利用可能なフィルター値(タグ、国、言語、コーデック)

get_station_by_uuid

Radio Browserのラジオ局の詳細情報

click_station

人気メトリクスのための再生クリックを登録

vote_station

ラジオ局に投票

ローカル再生(mpvが必要)

再生はデフォルトで元のファイルをストリーミングします(初回セットアップトランスコード形式を参照)。

ツール

説明

play_songs

1曲または複数曲を再生。mode: 'replace' | 'append'、任意のshuffle

play_albums

1枚または複数枚のアルバムを再生。modeに加えてshuffle: 'none' | 'albums' | 'songs'(順序維持、アルバム順をシャッフル、またはトラックを交互に再生)

play_albums_search

検索とアルバム再生を1ステップで実行。search_albumsの全フィルターに加えてmodeshuffleを受け付ける

play_songs_search

検索と曲の再生を1ステップで実行。search_songsの全フィルターに加えてmodeshuffleを受け付ける

play_playlist

playlistIdでプレイリストのトラックをキューに読み込む。modeshuffleに対応

play_radio_station

保存済みのNavidromeラジオ局を再生。ラジオは曲やアルバムと混在できないため、キューを置き換える

pause

再生を一時停止(位置は保持)

resume

再生を再開

next

次のトラックへスキップ

previous

前のトラックへスキップ

seek

現在のトラック内を移動(絶対位置または相対位置)

set_volume

mpvの内部ボリュームを設定(0〜100)

now_playing

現在のタイトル/アーティスト/アルバム/位置/再生時間とキューのインデックス(ラジオの場合は局+ICYメタデータ)

playback_status

mpvを起動せずにエンジンの健全性をプローブ(実行中、mpvバージョン、アイドル状態)

get_play_queue

メタデータと現在のトラックインデックスを含むライブキューのスナップショット

clear_play_queue

キューをクリアして再生を停止

shuffle_play_queue

メンバーシップを変更せずにキューの順序をランダム化。現在のトラックは再生を続け、先頭に移動

move_in_play_queue

キューのエントリをインデックス間で移動。再生中の内容は変更されない

remove_from_play_queue

エントリを削除。現在のトラックが削除された場合、mpvは次のトラックに進む

play_queue_index

指定されたインデックスのキューエントリにジャンプ。並べ替えは行わない

インストールとセットアップ

前提条件

  • Node.js 20以上ダウンロード

  • 実行中のNavidromeサーバー

  • MCP互換クライアント(Claude Desktop、Claude Code、Cursor、またはローカルstdio対応のその他のMCPクライアント)

  • 任意: mpv ローカル音声再生用

クイックセットアップ

公開パッケージをインストール(起動時に自動更新):

npm install -g navidrome-mcp

パッケージ: npmのnavidrome-mcp

開発ビルドの場合:

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を編集します(場所: Windowsでは%APPDATA%/Claude/、macOSでは~/Library/Application Support/Claude/、Linuxでは~/.config/Claude/)。他のMCPクライアントも同じJSON形式を使用します。

{
  "mcpServers": {
    "navidrome": {
      "command": "npx",
      "args": ["navidrome-mcp"]
    }
  }
}

手動ビルドの場合、command/argsを次のように置き換えます:

"command": "node",
"args": ["/absolute/path/to/Navidrome-MCP/dist/index.js"]

初回セットアップ

設定なしで初回起動すると、ブラウザで設定ページが開きます。これはMCPサーバーを起動した場合も、スタンドアロンのWebプレーヤー(navidrome-web)を起動した場合も同様です。ブラウザを開けない場合(SSH経由など)は、URLがコンソールに出力され、未設定のMCPサーバーはそれを返すopen_settingsツールを公開します。設定ページはいつでも次のコマンドで開けます:

npx navidrome-config

NavidromeのURL、ユーザー名、パスワード、および任意の機能を入力します。次に接続テスト保存をクリックします。これによりローカルのsettings.json(形式: settings.example.json)が書き込まれます。設定は起動時に読み込まれ、ホットリロードされないため、起動したものを再起動してください: MCPクライアントを終了して再度開くか、navidrome-webを再実行します。以前のenvセットアップからアップグレードする場合、フォームには以前のenv/.envの値が事前入力されます。確認して保存してください。

ヘッドレスマシンとコンテナ: 設定ページはループバックのみにバインドされるため、ブラウザのないホスト(VPS、Dockerコンテナ)では代わりに環境変数で設定します。settings.jsonが存在しない場合、サーバーはNAVIDROME_URLNAVIDROME_USERNAMENAVIDROME_PASSWORD、およびMCP_TRANSPORTLASTFM_API_KEYなどの任意の変数から実行されます。一度作成されたsettings.jsonは常にenvより優先されます。

必須: NavidromeのURL、ユーザー名、パスワード。

任意(設定ページで設定):

  • デフォルトライブラリ: デフォルトで有効にするライブラリID(カンマ区切り)。空白はすべてを意味します。

  • Last.fm APIキー: Last.fmディスカバリーを有効にします。

  • Radio Browserユーザーエージェント: グローバルなラジオ局検出を有効にします。

  • 歌詞プロバイダー(LRCLIB) + ユーザーエージェント: 歌詞の取得を有効にします。

  • mpvパス: PATHにない場合のmpvバイナリの場所。空白は自動検出。

  • トランスコード形式: デフォルトはrawで、最高品質と信頼性の高いシークのために元のファイルをストリーミングします。低速または従量制のリンクにはコーデック(例: mp3opus)を設定します。ビットレートはコーデックが設定されている場合にのみ適用されます。

  • Web UI(ポート/ホスト/公開/有効/ブラウザ自動起動): MPV Remoteを設定します(MPV Remoteセットアップを参照)。デフォルトはlocalhost:8808

  • トランスポート(タイプ/ホスト/ポート): サーバーがMCPプロトコルを公開する方法。デフォルトはstdioで、デスクトップクライアントが使用するローカルトランスポートです。typehttpに設定すると、サーバーをネットワークプロセスとして実行します(HTTP経由での実行を参照)。

機能は、対応する設定が存在すると有効になります。

mpvのインストール(任意)

mpvはクロスプラットフォームのメディアプレーヤーです。サーバーは起動時にmpvを検出すると再生ツールを登録します。mpvがない場合でも、サーバーはライブラリと保存済みのNavidromeキューを管理しますが、音声は出力されません。

macOSHomebrew経由):

brew install mpv

Linux:

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    # openSUSE

Windows:

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用にリンクしているものです。

WindowsのPATHに関する注意。 shinchiro.mpvパッケージはC:\Program Files\MPV Player\にインストールされ、PATHには追加されません。次のいずれかを実行してください:

  • そのフォルダをPATHに追加(システムプロパティ→環境変数→Path→新規)し、新しいターミナルを開く、または

  • 設定ページ(playback.mpvPath)でmpvパスに完全な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: デスクトップとアプリメニュー(~/.local/share/applications)に Navidrome Player.desktop。GNOMEでは、初回は右クリック → Allow Launching を選択します。

  • macOS: デスクトップに Navidrome Player.app(必要に応じて /Applications にドラッグ)。

  • Windows: デスクトップとスタートメニューに Navidrome Player.vbs。(OneDrive リダイレクトされたデスクトップの場合はそこに配置されます。)

プロジェクトを移動または再ビルドした後は、ジェネレーターを再実行してパスを更新してください。

設定

すべての設定はオプションで、設定ページの Web UI セクションにあり、以下では settings.json のパスで示しています。保存後、クライアントを再起動してください。例外は persistAfterMcpExit で、これはギアモーダルでライブ適用されます。

設定(settings.json

デフォルト

効果

webui.enabled

true

false に設定するとパネルを無効化します。

webui.port

8808

HTTP サーバーがリッスンするポート。ホストで 8808 が使用中の場合は空きポートを選択してください。

webui.host

127.0.0.1

バインドアドレス。特定のインターフェースが必要な場合のみ上書きしてください。通常は Expose on LAN が適切な設定です。

webui.expose

false

0.0.0.0 にバインドして、LAN 上の他のデバイスからパネルにアクセスできるようにします。

webui.autoOpenBrowser

false

MCP サーバー起動時にブラウザでプレイヤーを開きます。navidrome-web を直接実行した場合は常にブラウザが開きます。

webui.persistAfterMcpExit

false

MCP サーバーが閉じるか再起動した後も、MCP が起動したプレイヤー(および mpv)を実行し続けます。プレイヤー内のギアモーダルでライブ切り替えできます。

スマートフォン/タブレットのリモコンとして使う

  1. 設定ページで Expose on LAN を有効にして保存します。

  2. MCP クライアントを再起動します(または navidrome-web を再起動します)。

  3. プレイヤーはバインド時に到達可能な LAN URL をログに記録します(例:http://192.168.1.42:8808)。スマートフォンのブラウザでその URL を開き、ブックマークします。

セキュリティに関する注意

Web UI には認証がありません。ポートに到達できる人は誰でも、一時停止、スキップ、シーク、音量変更、キューの操作ができます。

  • webui.host=127.0.0.1(デフォルト)の場合、ホストマシンからのみ到達可能で、安全です。

  • Expose on LANwebui.expose=true)の場合、LAN 上のすべてのデバイスから到達可能です。信頼できる家庭内ネットワークでは問題ありませんが、パブリックインターネットに公開しないでください。レート制限はなく、コントロール API はキューの変更やプレイリストの開始を許可します。プレイヤー設定と電源ボタンはループバックのみに制限され、リモートブラウザには非表示のため、LAN 上のスマートフォンは再生を制御できますが、設定の変更やプレイヤーのシャットダウンはできません。メインの設定ページは公開されません。公開後、GET /healthz はホスト外では 404 を返し、バージョンのフィンガープリントの漏洩を防ぐため、プレイヤーのヘルスチェックはホストから行ってください。

HTTP 経由での実行

デフォルトでは、サーバーは stdio 上で MCP を話します。クライアントはサーバーを子プロセスとして起動し、標準入力/標準出力で通信します。これは同じマシン上のデスクトップクライアントでは機能しますが、ネットワーク経由では到達できません。

トランスポートを http に設定すると、サーバーはソケットをバインドし、/mcp で MCP の Streamable HTTP トランスポート を提供します。その後、supergatewaymcp-proxy ブリッジなしで、ネットワーク上の MCP クライアントが直接接続するスタンドアロンプロセスとして実行されます。

settings.jsontransport ブロックを追加します。host のデフォルトは 127.0.0.1(ループバックのみ)です。expose: true を設定するとすべてのインターフェース(0.0.0.0)にバインドしてリモートクライアントが到達できるようになり、明示的な hostexpose より優先されます。authToken を設定するとベアラー認証が要求されます。これはポートがループバックを超えて到達可能な場合は常に推奨され、設定ページには 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 が返ります。トランスポートがトークンなしで非ループバックアドレスにバインドする場合、サーバーは起動を拒否する代わりに起動時に警告をログに記録するため、ファイアウォールや NetworkPolicy でロックダウンされたデプロイでも実行されます。GET /healthz はゲートされません。これはコンテナのヘルスチェック用の認証なしの liveness エンドポイントで、200 {"status":"ok"} を返し、Navidrome への呼び出しは行いません。

ホストフィルタリング(DNS リバインディング保護): デフォルトのバインド(認証トークンなしのループバック)では、Host ヘッダーがループバックエイリアスでないリクエストは拒否されるため、悪意のある Web ページがブラウザ経由でサーバーを操作できません。authToken を設定するか、非ループバックアドレスにバインドすると、自動フィルターはオフになります。リモートデプロイはサーバーが事前に知ることのできない名前で到達されるため、ベアラートークンがすでにリバインディングをブロックします(誘導されたブラウザはトークンを添付できません)。受け入れる名前を固定するには、transport.allowedHosts を設定します。これは存在する場合は常に強制されます。transport.allowedOrigins はブラウザクライアントの場合のみ設定してください。Origin ヘッダーをゲートします。

トランスポートは環境変数でも設定できます:MCP_TRANSPORTstdio|http)、MCP_HTTP_HOSTMCP_HTTP_PORTMCP_HTTP_EXPOSEtrue ですべてのインターフェースにバインド)、MCP_HTTP_AUTH_TOKENMCP_HTTP_ALLOWED_HOSTS / MCP_HTTP_ALLOWED_ORIGINS(カンマ区切り)。Web UI には対応する WEBUI_* ファミリーがあります(WEBUI_ENABLEDWEBUI_PORTWEBUI_HOSTWEBUI_EXPOSEWEBUI_AUTO_OPEN_BROWSERWEBUI_PERSIST_AFTER_MCP_EXIT)。これらは settings.json が存在しない場合に適用され、初回実行時に設定フォームを事前入力します(初回セットアップを参照)。

単一アカウント、共有状態: すべての HTTP セッションは、認証済みの単一の Navidrome アカウントを保持する 1 つのプロセスによって提供され、アクティブライブラリの選択はプロセス全体でグローバルです。set_active_libraries の呼び出しは、接続されているすべてのセッションのライブラリフィルターを変更し、get_user_details はその共有された選択を反映します。

セキュリティ: サーバーは認証済みの Navidrome セッションを保持するため、開かれたポートは資格情報なしでライブラリを完全に制御できることを意味します。localhost を超えてポートを公開することはオプトインです(expose: true、または明示的な非ループバック host)。公開する場合は、認証トークンを設定するか、ファイアウォール、Kubernetes NetworkPolicy、TLS を追加するリバースプロキシでアクセスを制限してください。リモートアクセスが必要でない限り、デフォルトの stdio トランスポートを維持してください。

音声の出力先。 トランスポートは MCP プロトコルに誰が到達できるかを決定し、音声は移動しません。mpv はサーバープロセスと同じ場所で実行されるため、サーバーを実行しているマシンが音を出します。コンテナ外のマシンでの HTTP は、再生が機能するリモート MCP アクセスを提供します:スピーカーに接続されたマシンでサーバーを実行し、リモートクライアントを http://そのマシン:3000/mcp に向け、authToken を設定します。コンテナは、ライブラリツール(検索、プレイリスト、レーティング、ラジオメタデータ、Last.fm、歌詞)のみの常時稼働エンドポイントを提供し、音声はありません。

コンテナについては、Docker での実行 を参照してください:イメージ、デプロイ形態、マウントされた設定、音声に関する注意事項。

ChatGPT Desktop に関する注意

ChatGPT の MCP サポート(Web およびデスクトップ)はホストされた HTTPS エンドポイントを必要とし、ローカルの stdio サーバーでは機能しません。このサーバーは HTTP 経由で MCP を提供できるため(HTTP 経由での実行を参照)、mcp-remote のようなブリッジの代わりに、TLS を終端するリバースプロキシの背後でホストできます。セルフホストの音楽サーバーでは、Claude Desktop、Claude Code、Cursor、または stdio をサポートする他のクライアントを使用する方が簡単です。

トラブルシューティング

接続の問題

  • Navidrome が実行中で到達可能であることを確認します

  • 設定ページの Navidrome URL にプロトコル(http:// または https://)が含まれていることを確認します

  • 保存する前に、設定ページの Test connection ボタン(または curl / ブラウザでの資格情報のテスト)を使用します

macOS 固有

設定

  • 設定ファイルでは絶対パスを使用します

  • JSON を検証します(末尾のカンマなし)

  • 変更後は MCP クライアントを再起動します

既知の制限事項

  • mpv がないと音声が出ません。 代わりに Navidrome の Web UI または Subsonic クライアントを使用してください(mpv のインストールを参照)。

  • 最近再生した曲にタイムスタンプがありません。 Navidrome は再生回数と完了ステータスを公開しますが、トラックが最後に再生された日時は公開しません。

  • 保存されたキュー ≠ ライブキュー。 *_saved_queue ツールは Navidrome のサーバーサイドキュー(Web UI 同期)を操作します。*_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

開発ビルドからスタンドアロン Web プレイヤーをテストする

これは、リリースが 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:launcherNavidrome Player.vbs をデスクトップとスタートメニューに書き込みます。コンソールウィンドウなしで node dist\web\main.js を起動し、このチェックアウトへの絶対パスを埋め込むため、フォルダを移動した後は再実行してください。

  • リダイレクトされた/OneDrive のデスクトップがファイルを隠す場合、スタートメニューのコピーは引き続き機能します(スタート → 「Navidrome」と入力)。

  • 再生には mpv のインストールが必要です。PATH にない場合は、設定ページで playback.mpvPath を設定してください。

npm install -g navidrome-mcp の後、同じフローが navidrome-webnavidrome-confignavidrome-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 コミュニティへの ❤️ を込めて

Maintenance

ActivityActive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables 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.
    7
    13
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    109
    5
    MIT

Latest Blog Posts

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