Skip to main content
Glama
rcnsh

music-warehouse-mcp

by rcnsh

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
XDG_CONFIG_HOMENoWhere `login` saves tokens, under `music-warehouse-mcp/`. Defaults to `~/.config`.
MUSIC_WAREHOUSE_TZNoIANA zone for local dates and times. Defaults to the system's.
MUSIC_WAREHOUSE_URLYesThe Worker's origin. Must be `https`, except on loopback (`http://127.0.0.1:8787` for `wrangler dev`).
MUSIC_WAREHOUSE_TOKENNoA read token, overriding the Keychain and a signed-in token. Use a read token, never `ADMIN_TOKEN`: nothing here needs more.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
searchA

Find artists and songs in the stored listening history by name (case-insensitive substring), with all-time play counts. Use this first to turn a name into the id that artist_history and track_history take. An artist with id null is known only from the imported export: pass its name to artist_history instead.

get_playsA

Individual stored plays, newest first, with local time, track, artists and album. Give after and before to read a window (newest first within it). If next_before is returned, pass it as before for the next, older page. For counts over a range prefer daily_play_counts or top_artists, which are far cheaper.

top_artistsA

Play counts per artist between two local dates (inclusive), most played first. Credits every artist on a track. Defaults to the last 30 days. Ranges up to 3,660 days.

top_tracksA

Play counts per song between two local dates (inclusive), most played first, with editions of a song (single, album, remaster) folded together. Use this for "my top songs in July" or "most played song last year". Defaults to the last 30 days. Ranges up to 3,660 days.

daily_play_countsA

How many plays on each local day between two dates, quiet days as 0, optionally summed into weeks (from Monday) or months. Use month or week for spans longer than a few months.

artist_historyA

An artist's all-time plays, estimated minutes, first and last play, plays per month, and their most-played songs. Counts only plays where they are the primary artist. Give the id from search, or the name (which also catches plays from the imported export), or both.

track_historyA

A song's all-time plays, estimated minutes, first and last play, and plays per month, with every edition of it (single, album, remaster) folded together. Takes a track id: use search to find one by name.

on_this_dayB

The most-played songs on this calendar date in each earlier year, with that day’s total plays.

get_statA

All-time aggregates, refreshed every few hours. on-repeat: songs and albums played far more than usual in the last 14 days. rhythm: listening streaks and plays by hour. top-over-time: top artists and songs per quarter and per year. eras: how taste changed between the two eras the warehouse is configured with (e.g. before and after a move). albums: most-played albums, all time and per year.

list_wrapped_rangesA

The date ranges get_wrapped can summarise: each year with plays, and this year so far.

get_wrappedA

A Spotify-Wrapped-style summary of a finished date range: minutes, top artists, songs and albums, biggest day, streak, listening by hour and weekday, each month’s top artist and song, discoveries and a listening age. Use a range from list_wrapped_ranges; others may be refused.

now_playingA

What Spotify is playing right now, live, or null when nothing is. Needs the warehouse's Spotify grant.

recently_played_liveA

Spotify's own last plays (at most 50), including ones the warehouse has not stored yet (it polls every 30 minutes). For anything older use get_plays. Needs the Spotify grant.

spotify_topA

Spotify's own top tracks and artists, live. short_term is about 4 weeks, medium_term about 6 months, long_term about a year. For exact counts over any range, use top_artists or get_stat instead. Needs the Spotify grant.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target clearly distinct query types: name search, raw plays, top lists, daily counts, entity histories, Wrapped summaries, precomputed aggregates, and live Spotify state. Some overlap remains between top_artists/top_tracks, get_stat aggregates, get_wrapped, and stored vs live recent plays, but descriptions provide explicit guidance on when to use which.

Naming Consistency4/5

All names use readable snake_case with no camelCase or chaotic variation. The set is not a strict verb_noun pattern throughout, since many tools are noun phrases like artist_history, now_playing, and spotify_top, but the convention is still predictable and consistent.

Tool Count5/5

Fourteen tools fits comfortably within the ideal 3-15 range for an analytics-style server. Each tool covers a distinct listening-history or Spotify-live query, and there is no excessive filler or fragmentation.

Completeness4/5

The surface strongly covers read-only listening analytics: search, raw plays, top artists/tracks, daily counts, artist/track histories, on-this-day, Wrapped, precomputed stats, and live Spotify tools. Minor gaps remain, such as no direct per-artist or per-track query over an arbitrary date range beyond top lists, and no metadata/import management, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues