Agentic Volumio: Controlling Playback, Analytics & Music Discovery via LLM & MCP

Hello Volumio Community,

Like many of us here, Volumio is my go-to platform for building and experimenting with new ideas.

In a previous thread, I started collecting my music listening stats using an Elasticsearch server fed by Volumio’s pushNotificationUrls configuration:

Today, I built a Proof of Concept (PoC) that allows you to chat with a local LLM to control playback, query listening stats from Elasticsearch, and create new listening queue as per stats:

In the attached txt/image, you can see an example conversation showing how the agent handles analytics, search, and player commands
chat-Music Path Analysis.txt (6.2 KB)

Tech Stack:

  • Orchestrator & LLM: Open WebUI + Ollama
  • Model Context Protocol (MCP) Servers:
    • elastic-mcp (for real-time analytics, habit tracking, and metrics like Obsession Index or Discovery Rate)
    • volumio-mcp (for REST API v1 playback, volume, and queue control)
    • musicbrainz-mcp (for fast metadata and genre extraction)
    • brave-search-mcp (for web-based music discovery and recommendations)

Hardware setup: Running locally on a macbook m5 pro with 24GB ram.

I’d love to hear your thoughts, feedback, or ideas on what other agentic features would be cool to see integrated with Volumio!

I love seeing people build apps around Volumio! I’m not 100% sure I fully understand what your tech stack does, but it sounds really cool!

Here’s a question: if Elasticsearch is responsible for tracking your listening history (e.g. the songs you’ve played over the past year), wouldn’t that mean you’d keep listening to the same songs you’ve been listening to over that period?

Wouldn’t it be nice to have a “similar songs” feature instead? Maybe you could use the Last.fm database to find similar songs and discover new music.

Hi @matzemedia!

Thanks for your reply.

I totally agree with you: the Volumio community is full of awesome feature ideas! :slight_smile:

It actually already uses the Last.fm API to fetch similar artists, similar tracks, and plenty of other metadata.

You can also ask the LLM for top artists or trending tracks by country.

Here are a few examples:

Also:

In the second screenshot, I’m generating a queue using top tracks per country retrieved via the Last.fm API.

Extra feature:

I would also love to integrate lyrics next, but it’s proving really hard to find a reliable source without hitting high API subscription costs!

Luca