
FreqBlog Music Metadata
If you need an alternative to Spotify's audio features API, this pulls track metadata including BPM, key, mood classifications, and genre tags. It's hosted at mcp.freqblog.com and works over streamable HTTP, so you can query it without managing authentication flows or dealing with Spotify's rate limits. Reach for this when you're building music discovery tools, DJ software, playlist generators, or anything that needs to understand the musical characteristics of tracks. The focus is on actual audio analysis rather than user listening data, making it useful for music-first applications where you care more about tempo and tonality than popularity metrics.
- tools
- 12
- transport
- HTTP
- last updated
- Jul 14, 2026
Install
From registry metadata$ npx add-mcp https://mcp.freqblog.com/mcp --name music-metadataRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http music-metadata https://mcp.freqblog.com/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 12 toolsVerified live against the running server on Nov 6, 2026.
get_audio_featuresGet audio features for ONE track — BPM, musical key (name + Camelot + Open Key), energy, danceability, valence, acousticness, loudness, mood, mood_vector, genre, time signature, duration and more. Fields follow the layout of Spotify's retired /audio-features endpoint. Provide...5 params
Get audio features for ONE track — BPM, musical key (name + Camelot + Open Key), energy, danceability, valence, acousticness, loudness, mood, mood_vector, genre, time signature, duration and more. Fields follow the layout of Spotify's retired /audio-features endpoint. Provide...
artistvalueisrcvaluembidvaluespotify_idvaluetrackvalueget_audio_features_batchGet audio features for MANY tracks in one call (up to 50 processed) — ideal for analysing a whole playlist at once. Identify each item by name (`track`/`artist`), by `isrc` (matched exactly first — best for CJK / K-pop / niche tracks whose fuzzy name-match misses), or both (IS...1 params
Get audio features for MANY tracks in one call (up to 50 processed) — ideal for analysing a whole playlist at once. Identify each item by name (`track`/`artist`), by `isrc` (matched exactly first — best for CJK / K-pop / niche tracks whose fuzzy name-match misses), or both (IS...
tracks*arraysearch_catalogFull-text search the catalog by any mix of track / artist / album tokens. Use this to resolve a fuzzy, partial, or misspelled name into concrete tracks BEFORE calling get_audio_features. Each hit carries `chart_peak`: the best chart position we hold, 1-100 with 100 = a number-...2 params
Full-text search the catalog by any mix of track / artist / album tokens. Use this to resolve a fuzzy, partial, or misspelled name into concrete tracks BEFORE calling get_audio_features. Each hit carries `chart_peak`: the best chart position we hold, 1-100 with 100 = a number-...
limitintegerq*stringfind_tracks_by_bpmFind catalog tracks near a target tempo. Returns tracks whose BPM is within +/-`tolerance` of `bpm`, ordered by closeness then by an internal catalogue ordering key (not an audience metric) — useful for DJ set planning, workout playlists, or tempo-matching. Each returned track...3 params
Find catalog tracks near a target tempo. Returns tracks whose BPM is within +/-`tolerance` of `bpm`, ordered by closeness then by an internal catalogue ordering key (not an audience metric) — useful for DJ set planning, workout playlists, or tempo-matching. Each returned track...
bpm*numberlimitintegertolerancenumberfind_tracks_by_keyFind catalog tracks in a given musical key — for harmonic mixing and key-locked playlists. `key` accepts Camelot ("8A"), Open Key ("1m"), or a key name ("A-Minor", "F#-Major"). Returns tracks ordered by an internal catalogue ordering key (not an audience metric), each with ful...2 params
Find catalog tracks in a given musical key — for harmonic mixing and key-locked playlists. `key` accepts Camelot ("8A"), Open Key ("1m"), or a key name ("A-Minor", "F#-Major"). Returns tracks ordered by an internal catalogue ordering key (not an audience metric), each with ful...
key*stringlimitintegerfind_compatible_keysGiven a Camelot key (e.g. "8A", "12B"), return the harmonically compatible keys for DJ mixing — the same key, the relative major/minor, and the adjacent +/-1 keys on the Camelot wheel. With `extended=true` also returns the +7/-7 energy-boost / energy-drop keys. Pure music theo...2 params
Given a Camelot key (e.g. "8A", "12B"), return the harmonically compatible keys for DJ mixing — the same key, the relative major/minor, and the adjacent +/-1 keys on the Camelot wheel. With `extended=true` also returns the +7/-7 energy-boost / energy-drop keys. Pure music theo...
camelot*stringextendedbooleanscore_transitionScore how well one catalog track mixes into another (0-100) — the pairwise DJ transition score no raw key/BPM API gives you. Combines Camelot-wheel key compatibility, octave-aware BPM proximity (half/double-time counts as a match), and energy smoothness. Returns the overall `s...2 params
Score how well one catalog track mixes into another (0-100) — the pairwise DJ transition score no raw key/BPM API gives you. Combines Camelot-wheel key compatibility, octave-aware BPM proximity (half/double-time counts as a match), and energy smoothness. Returns the overall `s...
from_track_id*stringto_track_id*stringsuggest_next_trackGiven a seed track, return the top-N catalog tracks to play NEXT, ranked by transition score. Each suggestion carries the same `score`, per-component scores and human `reason` as score_transition (e.g. "11B->11B same key, 118->117 BPM (-0.29), energy +0.12"), plus its `genre`...7 params
Given a seed track, return the top-N catalog tracks to play NEXT, ranked by transition score. Each suggestion carries the same `score`, per-component scores and human `reason` as score_transition (e.g. "11B->11B same key, 118->117 BPM (-0.29), energy +0.12"), plus its `genre`...
bpm_driftnumbercross_genrestringexclude_same_artistbooleanmax_key_distanceintegermin_scoreintegernintegerseed_track_id*stringbuild_setlistOrder a crate of 2-100 catalog tracks into a beat-matched DJ set that follows an energy arc, keeping each consecutive transition harmonically and tempo-smooth. `arc` is one of peak_time (default — builds to a peak then eases), warmup, cooldown, or flat. Returns the `arc`, `cou...3 params
Order a crate of 2-100 catalog tracks into a beat-matched DJ set that follows an energy arc, keeping each consecutive transition harmonically and tempo-smooth. `arc` is one of peak_time (default — builds to a peak then eases), warmup, cooldown, or flat. Returns the `arc`, `cou...
arcstringstart_track_idvaluetrack_ids*arrayget_recommendationsRecommended tracks for one or more seed tracks, in the shape of Spotify's retired GET /v1/recommendations. Blends up to 5 catalog seed tracks into a single point in audio-feature space and returns the nearest catalogue tracks, RE-RANKED by genre affinity (so a feature-close cr...9 params
Recommended tracks for one or more seed tracks, in the shape of Spotify's retired GET /v1/recommendations. Blends up to 5 catalog seed tracks into a single point in audio-feature space and returns the nearest catalogue tracks, RE-RANKED by genre affinity (so a feature-close cr...
artistvaluecross_genrestringexclude_seed_artistsbooleanlimitintegermaxvalueminvalueseed_tracksvaluetargetvaluetrackvalueget_related_artistsArtists related to a seed artist, in the shape of Spotify's retired GET /v1/artists/{id}/related-artists. No artist graph exists, so we derive one: build the seed artist's track-vector centroid, take its nearest catalogue tracks, aggregate by artist (each scored on its top-3 t...2 params
Artists related to a seed artist, in the shape of Spotify's retired GET /v1/artists/{id}/related-artists. No artist graph exists, so we derive one: build the seed artist's track-vector centroid, take its nearest catalogue tracks, aggregate by artist (each scored on its top-3 t...
artist*stringlimitintegertag_trackGet a compact, clearly labelled tag list for a track — energy / danceability / valence / acousticness / instrumentalness (instrumental vs vocal, judged on the 30-second preview), plus a mood tag and a broad genre tag. It is a tag-shaped projection of the same open-data analysi...6 params
Get a compact, clearly labelled tag list for a track — energy / danceability / valence / acousticness / instrumentalness (instrumental vs vocal, judged on the 30-second preview), plus a mood tag and a broad genre tag. It is a tag-shaped projection of the same open-data analysi...
artistvalueisrcvaluembidvaluespotify_idvaluetrackvaluetrack_idvalueSponsors
Details
- Category
- Media & Entertainment
- Transport
- HTTP
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026