Spotify play counts, monthly listeners, charts, artist stats, albums, playlists and ISRC lookup.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer followed by your API key from https://spotify.checkleaked.cc/pricing (a free trial key works).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
An album with its track list and (by default) every track's lifetime play count, plus the album total, release date, label, UPC and popularity.
Spotify album id, spotify:album:<id> URI or open.spotify.com/album/<id> URL.
Add each track's lifetime play count and the album total.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http spotify-data https://spotify-proxy.checkleaked.cc/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer followed by your API key from https://spotify.checkleaked.cc/pricing (a free trial key works).An album with its track list and (by default) every track's lifetime play count, plus the album total, release date, label, UPC and popularity.
| Argument | Type | Description |
|---|---|---|
| album* | string | Spotify album id, spotify:album:<id> URI or open.spotify.com/album/<id> URL. |
| include_play_counts | boolean | Add each track's lifetime play count and the album total. |
{
"type": "object",
"required": [
"album"
],
"properties": {
"album": {
"type": "string",
"minLength": 1,
"description": "Spotify album id, spotify:album:<id> URI or open.spotify.com/album/<id> URL."
},
"include_play_counts": {
"type": "boolean",
"default": true,
"description": "Add each track's lifetime play count and the album total."
}
}
}An artist's sound profile from their top tracks: genres, moods and activities with 0-1 weights, and tempo (average, min, max BPM). Up to 20 artists per call.
| Argument | Type | Description |
|---|---|---|
| artists* | array | Spotify artist ids, spotify:artist:<id> URIs or open.spotify.com/artist/<id> URLs (1-20). |
{
"type": "object",
"required": [
"artists"
],
"properties": {
"artists": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"description": "Spotify artist ids, spotify:artist:<id> URIs or open.spotify.com/artist/<id> URLs (1-20)."
}
}
}One artist's profile: monthly listeners, followers, world rank, top cities, top tracks with play counts, latest release, discography counts, related artists, biography and social links.
| Argument | Type | Description |
|---|---|---|
| artist* | string | Spotify artist id, spotify:artist:<id> URI or open.spotify.com/artist/<id> URL. |
| top_tracks | integer | How many top tracks to return (1-10). |
{
"type": "object",
"required": [
"artist"
],
"properties": {
"artist": {
"type": "string",
"minLength": 1,
"description": "Spotify artist id, spotify:artist:<id> URI or open.spotify.com/artist/<id> URL."
},
"top_tracks": {
"type": "integer",
"default": 10,
"maximum": 10,
"minimum": 1,
"description": "How many top tracks to return (1-10)."
}
}
}Monthly listeners, followers, world rank, popularity, genres and top 5 cities (with listener counts) for up to 50 artists in one call.
| Argument | Type | Description |
|---|---|---|
| artists* | array | Spotify artist ids, spotify:artist:<id> URIs or open.spotify.com/artist/<id> URLs (1-50). |
{
"type": "object",
"required": [
"artists"
],
"properties": {
"artists": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "Spotify artist ids, spotify:artist:<id> URIs or open.spotify.com/artist/<id> URLs (1-50)."
}
}
}Spotify Charts by country: top_tracks (Top 200), viral_tracks (Viral 50, daily only), top_artists or top_albums. Each entry has rank, previous and peak rank, days (or weeks) on the chart, movement and, for top_tracks, the streams in that period. Defaults to the latest published daily chart.
| Argument | Type | Description |
|---|---|---|
| date | string | Chart date YYYY-MM-DD; omit for the latest published chart. |
| chart | string | Which chart. |
| limit | integer | Entries to return (1-200). |
| period | string | Daily or weekly chart (viral_tracks is daily only). |
| country | string | 'global' or a 2-letter country code, e.g. 'us', 'br', 'mx'. |
| include_play_counts | boolean | top_tracks / viral_tracks: add each track's lifetime play count (slower). |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Chart date YYYY-MM-DD; omit for the latest published chart."
},
"chart": {
"enum": [
"top_tracks",
"viral_tracks",
"top_artists",
"top_albums"
],
"type": "string",
"default": "top_tracks",
"description": "Which chart."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "Entries to return (1-200)."
},
"period": {
"enum": [
"daily",
"weekly"
],
"type": "string",
"default": "daily",
"description": "Daily or weekly chart (viral_tracks is daily only)."
},
"country": {
"type": "string",
"default": "global",
"description": "'global' or a 2-letter country code, e.g. 'us', 'br', 'mx'."
},
"include_play_counts": {
"type": "boolean",
"default": false,
"description": "top_tracks / viral_tracks: add each track's lifetime play count (slower)."
}
}
}A playlist's name, owner, followers and description, plus `limit` tracks (max 100) from `offset` with lifetime play counts. Use next_offset from the answer to page through long playlists (later pages skip the metadata and cost one request).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Tracks to return (1-100). |
| offset | integer | Index of the first track (0 = start). |
| playlist* | string | Spotify playlist id, spotify:playlist:<id> URI or open.spotify.com/playlist/<id> URL. |
| include_play_counts | boolean | Add each track's lifetime play count. |
{
"type": "object",
"required": [
"playlist"
],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Tracks to return (1-100)."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Index of the first track (0 = start)."
},
"playlist": {
"type": "string",
"minLength": 1,
"description": "Spotify playlist id, spotify:playlist:<id> URI or open.spotify.com/playlist/<id> URL."
},
"include_play_counts": {
"type": "boolean",
"default": true,
"description": "Add each track's lifetime play count."
}
}
}Artists Spotify lists as related to ("Fans also like") the given artist.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many related artists to return (1-20). |
| artist* | string | Spotify artist id, spotify:artist:<id> URI or open.spotify.com/artist/<id> URL. |
{
"type": "object",
"required": [
"artist"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 20,
"minimum": 1,
"description": "How many related artists to return (1-20)."
},
"artist": {
"type": "string",
"minLength": 1,
"description": "Spotify artist id, spotify:artist:<id> URI or open.spotify.com/artist/<id> URL."
}
}
}Genres, moods and activities (with Spotify's 0-1 weights), tempo in BPM, credits (writers, producers), lyrics flag and vocal languages for up to 50 tracks.
| Argument | Type | Description |
|---|---|---|
| tracks* | array | Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50). |
{
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50)."
}
}
}Lifetime Spotify play counts (streams) for up to 50 tracks in one call, with track name, artists and release date. The fastest way to compare streams. A play count of 0 means fewer than 1,000 plays.
| Argument | Type | Description |
|---|---|---|
| tracks* | array | Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50). |
{
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50)."
}
}
}Track details for up to 50 tracks in one call: name, artists, album, release date, duration, explicit flag, popularity, ISRC and (by default) lifetime play count. include_insights adds genres, moods, activities, BPM, credits, lyrics flag and languages. A play count of 0 means fewer than 1,000 plays.
| Argument | Type | Description |
|---|---|---|
| tracks* | array | Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50). |
| include_insights | boolean | Add genres, moods, BPM, credits and languages (slower). |
| include_play_counts | boolean | Add each track's lifetime play count. |
{
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "Spotify track ids, spotify:track:<id> URIs or open.spotify.com/track/<id> URLs (1-50)."
},
"include_insights": {
"type": "boolean",
"default": false,
"description": "Add genres, moods, BPM, credits and languages (slower)."
},
"include_play_counts": {
"type": "boolean",
"default": true,
"description": "Add each track's lifetime play count."
}
}
}Find the Spotify track(s) for an ISRC (International Standard Recording Code), e.g. USUG11904206. Returns ids, names, artists, album and release date.
| Argument | Type | Description |
|---|---|---|
| isrc* | string | 12-character ISRC; spaces and dashes are ignored. |
{
"type": "object",
"required": [
"isrc"
],
"properties": {
"isrc": {
"type": "string",
"maxLength": 20,
"minLength": 12,
"description": "12-character ISRC; spaces and dashes are ignored."
}
}
}Search the Spotify catalog by name to find ids for the other tools. `type` picks what to search: tracks, artists, albums or playlists. Returns up to `limit` hits (max 20) with id, name, key fields and open.spotify.com URL. For track searches, include_play_counts adds each hit's lifetime play count.
| Argument | Type | Description |
|---|---|---|
| type | string | What to search for. |
| limit | integer | Number of results (1-20). |
| query* | string | Search text, e.g. 'Bad Bunny' or 'blinding lights the weeknd'. |
| include_play_counts | boolean | Track searches only: add lifetime play counts (slightly slower). |
{
"type": "object",
"required": [
"query"
],
"properties": {
"type": {
"enum": [
"tracks",
"artists",
"albums",
"playlists"
],
"type": "string",
"default": "tracks",
"description": "What to search for."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Number of results (1-20)."
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Search text, e.g. 'Bad Bunny' or 'blinding lights the weeknd'."
},
"include_play_counts": {
"type": "boolean",
"default": false,
"description": "Track searches only: add lifetime play counts (slightly slower)."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.