Everything happens where the server runs — the file lands in your download path and the sound comes out of your speakers — which is what makes it work with a local model in LM Studio and what makes it wrong for anything remote. The author is explicit that this is for content you have the right to download, and that the YouTube terms and local copyright law are yours to comply with.
A Python server that lets a local model search YouTube for music, download and convert it to MP3, and start or stop playback. Searches and downloads are asynchronous, so a long download does not block the conversation.
- Search YouTube Music by artist, song title, album or any query
- Download and convert a result to a high-quality MP3 in the folder you configured
- Start and stop playback from the model
- Debug-level logging to a file and to stderr when something does not play
Ffmpeg on the machine — `winget install ffmpeg` on Windows, `sudo apt install ffmpeg` on Debian or Ubuntu. It is launched through `uv run` with fastmcp, yt-dlp, tinydb and pygame supplied as `--with` dependencies, pointing at `server.py`, and `DOWNLOAD_PATH` set to where files should land. A model actually trained for tool use is needed; the author names Qwen 3 and Gemma 3. The Python package is `llm-jukebox`, version 0.1.0.
