One audio queue across Spotify, the browser, local files and whatever is already playing.
MCPpedia last refreshed this data
io.github.tothienbao6a0/upnext is an MCP server that one audio queue across Spotify, the browser, local files and whatever is already playing. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 85/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"upnext": {
"args": [
"-y",
"upnext-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
One audio queue across Spotify, the browser, local files and whatever is already playing.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked upnext-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in entertainment
The official MCP Server for the Mux API
Give Claude the ability to watch and understand videos — Claude Code plugin with frame extraction and multimodal audio analysis
MCP server for WoW addons: Lua API, UI source, CVars, art, linting, plus model export to glTF/OBJ.
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
MCP Security Weekly
Get CVE alerts and security updates for io.github.tothienbao6a0/upnext and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
One queue over every audio source — including the ones you don't control.
A library your product imports so that whatever is driving — a model, a person clicking, a script — can control audio without knowing whether the sound is coming from Spotify, a browser tab, a podcast feed, or a file on disk.
const runtime = new Runtime({ adapters: [spotify, browser, local, nowPlaying] });
runtime.enqueue(NOW_PLAYING_URI); // the podcast already
// playing in their browser
runtime.enqueue('spotify:track:1OWBh1eVxUdA1Z6UA8r4nh'); // then a Spotify track
runtime.enqueue('https://example.com/episode.mp3'); // then a file on the web
runtime.enqueue('something calmer after those'); // then whatever you decide, later
await runtime.play();
Four sources, one list, in order. The first one is playing inside an app you do not own — and the queue waits for it to finish before taking over.
Add audio to your product without marrying one service. Write against one queue; swap or add backends later. An entry describes what to play, not where from, so it can bind to whichever source is available at the moment it plays.
Join what someone is already listening to instead of talking over it. The machine's current playback — a YouTube tab, a podcast in Safari, VLC — can be a queue entry like any other. Your track starts when theirs ends.
Know what you can do before you try it. runtime.can('seek') answers for the
backend that is actually loaded. No silent no-ops, no discovering at 2am that
one source quietly ignored a command.
Keep playing when a source fails. If a backend cannot load an entry, the same description is handed to the next one that can. A queue does not stop because one service is down.
Survive a restart. serialize() / restore() — and a queue saved on a
machine with Spotify reopens on one without it, then plays from somewhere else.
| package | plays |
|---|---|
upnext-core | nothing — the queue, state machine, capability model and events. Zero dependencies, no I/O. |
upnext-adapter-spotify | the Spotify desktop app on macOS with no credentials, or the Web API with a token you hold |
upnext-adapter-browser | any media element you control — browser, Electron renderer, webview, across a process boundary |
upnext-adapter-local | local files and streams via ffplay/afplay |
upnext-adapter-apple-music | your Apple Music library through the Music app — no credentials, and it can search |
upnext-adapter-nowplaying | whatever the machine is already playing, whichever app is playing it (macOS + Linux) |
upnext-adapter-process | an adapter written in any language, over a pipe |
upnext-desktop | all of the above wired for you, in one call — plus the upnext CLI |
upnext-mcp | the same, as an MCP server any agent can use |
upnext-http | the same, over HTTP with a live event stream |
The point of the capability model is that these differ, and say so:
| starts tracks | end of track | position | seek | pause | volume | search | someone else can change it | |
|---|---|---|---|---|---|---|---|---|
| browser | ✅ | event | exact | ✅ | ✅ | ✅ | ❌ | no |
| local (ffplay) | ✅ | event | estimated | ✅ | ✅ | ❌ | ✅¹ | no |
| local (afplay) | ✅ | event | estimated | ❌ | ✅ | ❌ |