A local music player controlled from Claude Code through MCP.
Drop your audio files into the library/ folder and control playback through MCP tools. The folder is the source of truth — no database or JSON file to maintain.
- Auto-scans the
library/folder for audio files (mp3, ogg, wav, flac, m4a, aac, opus) - Play or shuffle the library, or play a specific song by title
- Pause, resume, stop, next, and previous
- Repeat mode to loop the playlist
- Player status with current song and position
Playback is handled by VLC (via python-vlc), so any format VLC can play works — including m4a/AAC.
This project does not download music from YouTube or any streaming service. Users provide their own legal audio files.
- Python 3.13+
- uv
- Claude Code
- VLC media player installed on your system
- Local audio files
Clone the repo:
git clone https://github.com/JLDynamics/jukebox-mcp.git
cd jukebox-mcpInstall dependencies:
uv syncCreate the library folder (also created automatically on first run) and put your audio files in it:
mkdir libraryFrom the project folder (Windows):
claude mcp add jukebox-mcp -- .\.venv\Scripts\python.exe playlist_mcp_server.pymacOS/Linux:
claude mcp add jukebox-mcp -- ./.venv/bin/python playlist_mcp_server.pyRestart Claude Code after adding the server.
Then ask Claude Code:
Use the jukebox-mcp server to show my music library.
- Copy audio files into
library/. - Ask Claude Code to show your library.
- Ask Claude Code to play or shuffle the library, or a specific song.
- Use the player controls (pause, resume, next, previous, stop, repeat) and status tool.
get_library— scan the library folder and list all songscontrol_player(action, title, shuffle)— play, pause, resume, stop, next, previous, repeat_on, repeat_offget_status— current song, position, and repeat state
The following are intentionally ignored by Git:
library/- audio files such as
.mp3,.wav,.flac,.m4a, and.aac
This keeps personal music files out of the public repository.
The automated tests use a fake VLC player, so they do not play audio or require an audio output device:
uv run python -m unittest discover -s tests -vMIT