Spotify MCP server Let your AI agent look after your playlists.

Your AI agent archives Discover Weekly, builds playlists from a list, removes duplicates and sets privacy. Sign in to Spotify once in your own Cloud Browser. No developer app and no Premium owner needed.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Spotify
Spotify logo Spotify Cloud Browser

12 tools Read and write

Six jobs to hand off

What can your AI agent do in Spotify? The playlist chores nobody wants to click through.

  • Archive Discover Weekly

  • Build a playlist from a list

  • Remove duplicate songs

  • Make old playlists private

  • Snapshot Liked Songs monthly

  • Export a playlist to a spreadsheet

Official API and connector

Does Spotify have an MCP server or an API? Both exist, with limits.

Spotify has a Web API and, since 23 Apr 2026, an official connector for Claude (checked 6 Nov 2026). The connector has six tools and none adds songs to, removes songs from or deletes a playlist. Cotlet runs 12 Spotify tools hosted, over MCP for agents and REST for scripts, with no app to register.

  • The Web API needs an app you register. In development mode the app owner must have Premium and the app allows 5 users. Unlimited users need a registered business with at least 250k monthly active users.
  • Since Feb 2026 the Web API returns the songs of a playlist only if you own it or collaborate on it, so Discover Weekly cannot be read there. A search request returns at most 10 results.
  • The Claude connector lists search, create_playlist, get_currently_playing, add_to_library, fetch_tracks and a remove-from-library tool. It also plays music in Claude and switches devices.
Spotify's Web API, its Claude connector and Cotlet compared, checked 6 Nov 2026
What you need Spotify Web APISpotify Claude connectorCotlet
Search songs, artists and albums Yes, 10 results a request Yes Yes
Read the songs of a playlist you follow No, only your own Not in its tools Yes, Discover Weekly too
Add or remove songs in a playlist Yes, your own playlists Not in its tools Yes
Make a playlist public or private Yes, your own playlists Not in its tools Yes
Works without registering an app No Yes Yes
Runs with your computer off If you host it Yes Yes, hosted

Checked 6 Nov 2026. Sources: Spotify for Developers: Quota modes · Spotify for Developers: February 2026 Web API Dev Mode changes · Spotify Newsroom: Spotify brings music and podcast recommendations to Claude (23 Apr 2026) · Claude connectors: Spotify · Spotify Premium plans · Spotify in ChatGPT (Spotify Newsroom, 6 Oct 2025)

Set up once

How does the Spotify MCP server work? No developer app, no Premium owner.

  1. 1Sign in to Spotify

    One time, in a browser we keep for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Say what you need

    Your agent edits your playlists.

Cotlet never stores your Spotify password, and edits other people could see wait for your OK. Who can see your session

Any MCP client

How to connect Spotify to your AI agent

  1. 1

    Turn on Spotify for agents. Create a Cotlet account, sign in to Spotify in its Cloud Browser and press Enable for agents.

  2. 2

    Add the Cotlet address. Put https://cotlet.dev/mcp/v1 in the MCP or connector settings of your agent.

  3. 3

    Allow the connection. Chat apps open a Cotlet sign-in. Code editors, n8n and scripts take an API key from the console.

Spotify shares https://cotlet.dev/mcp/v1 with every other app you enable. Turned Spotify on after you connected? Refresh the connector to load its tools.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-spotify \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-spotify": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-spotify]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: spotify_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: spotify_write
5 read, 7 write

All 12 Spotify MCP tools

Playlists7

Edits work on playlists you made. New playlists start private. Changes to a public playlist are seen by its followers, so those calls ask first.

  • list_playlists List the playlists in Your Library: the ones you made and the ones you follow. read

    list_playlists returns each playlist with its name, owner, link, song count and whether it is public or private. It opens each playlist page to read the count and visibility, so a library with many playlists takes longer. The order is the one Your Library shows. It reads only, so it asks no confirmation.

    MCP callspotify_read → list_playlists

    REST endpointGET https://cotlet.dev/api/v1/spotify/playlists

    Parameters

    Parameters: list_playlists
    NameTypeDescription
    owned_only boolean boolean Only playlists you made. Default false, which also lists playlists you follow, such as Discover Weekly.
    cursor string string Next page cursor from the previous call.

    Example response

    {
      "playlists": [
        {
          "name": "Road trip",
          "owner": "Maya Rivera",
          "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M",
          "songs": 64,
          "visibility": "private"
        },
        {
          "name": "Focus",
          "owner": "Maya Rivera",
          "url": "https://open.spotify.com/playlist/5Hq0wF9xYtLmN2vKd8RjAe",
          "songs": 112,
          "visibility": "public"
        },
        {
          "name": "Discover Weekly",
          "owner": "Spotify",
          "url": "https://open.spotify.com/playlist/37i9dQZEVXcJZyENOWUFo7",
          "songs": 30,
          "visibility": "public"
        }
      ],
      "next_cursor": null
    }
  • get_playlist_items Return the songs of one playlist, including playlists you follow. read

    get_playlist_items returns each song with its position, title, artists, album, length, the date it was added and its link. It reads the playlist page you see in Spotify, so it also works on a playlist you only follow, such as Discover Weekly. Long playlists come back in pages: pass next_cursor to continue. It reads only, so it asks no confirmation.

    MCP callspotify_read → get_playlist_items

    REST endpointGET https://cotlet.dev/api/v1/spotify/playlist-items

    Parameters

    Parameters: get_playlist_items
    NameTypeDescription
    playlist_url string required string Playlist link from list_playlists or search, like https://open.spotify.com/playlist/{id}.
    cursor string string Next page cursor from the previous call.

    Example input

    {
      "playlist_url": "https://example.com"
    }

    Example response

    {
      "playlist": "Road trip",
      "items": [
        {
          "position": 1,
          "title": "Midnight City",
          "artists": [
            "M83"
          ],
          "album": "Hurry Up, We're Dreaming",
          "length": "4:03",
          "added_at": "2026-09-14",
          "url": "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp"
        },
        {
          "position": 2,
          "title": "Dog Days Are Over",
          "artists": [
            "Florence + The Machine"
          ],
          "album": "Lungs",
          "length": "4:12",
          "added_at": "2026-09-14",
          "url": "https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"
        },
        {
          "position": 3,
          "title": "Midnight City",
          "artists": [
            "M83"
          ],
          "album": "Hurry Up, We're Dreaming",
          "length": "4:03",
          "added_at": "2026-10-02",
          "url": "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp"
        }
      ],
      "next_cursor": null
    }
  • create_playlist Create an empty private playlist in Your Library. write

    create_playlist makes a new playlist the way Your Library > Create > Playlist does, and returns its link for add_to_playlist. The playlist is created private, so it reaches no one until you call set_playlist_visibility, and one delete_playlist call undoes it. For that reason it asks no confirmation by default.

    MCP callspotify_write → create_playlist

    REST endpointPOST https://cotlet.dev/api/v1/spotify/playlists

    Parameters

    Parameters: create_playlist
    NameTypeDescription
    name string required string Playlist name.
    description string string Optional description.

    Example input

    {
      "name": "Jane Doe"
    }

    Example response

    {
      "name": "Friday setlist",
      "url": "https://open.spotify.com/playlist/6KtB3yQmZd1WxPaN0cVhRs",
      "visibility": "private",
      "songs": 0
    }
  • add_to_playlist Add songs to a playlist you made, using Add to Playlist. writeasks first

    add_to_playlist adds each song through the Add to Playlist menu and reports which songs it added and which it skipped because they were already in the playlist or could not be found. Compare with get_playlist_items first if you want to control duplicates. People who follow a public playlist see the change. By default you confirm each call; you can switch that off for this tool.

    MCP callspotify_write → add_to_playlist

    REST endpointPOST https://cotlet.dev/api/v1/spotify/playlists/add-to-playlist

    Parameters

    Parameters: add_to_playlist
    NameTypeDescription
    playlist_url string required string Playlist link from list_playlists or search, like https://open.spotify.com/playlist/{id}.
    song_urls string[] required string[] Song links from search, get_playlist_items or list_liked_songs, like https://open.spotify.com/track/{id}.

    Example input

    {
      "playlist_url": "https://open.spotify.com/playlist/6KtB3yQmZd1WxPaN0cVhRs",
      "song_urls": [
        "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp",
        "https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"
      ]
    }

    Example response

    {
      "playlist": "Friday setlist",
      "added": 3,
      "skipped": [],
      "songs_now": 3
    }
  • remove_from_playlist Remove songs from a playlist you made, using Remove from this Playlist. writeasks first

    remove_from_playlist removes each listed song with Remove from this Playlist and returns how many it removed. When a song appears in the playlist more than once, the agent should say which copies to remove. People who follow a public playlist see the change. By default you confirm each call; you can switch that off for this tool.

    MCP callspotify_write → remove_from_playlist

    REST endpointDELETE https://cotlet.dev/api/v1/spotify/playlists

    Parameters

    Parameters: remove_from_playlist
    NameTypeDescription
    playlist_url string required string Playlist link from list_playlists or search, like https://open.spotify.com/playlist/{id}.
    song_urls string[] required string[] Song links from search, get_playlist_items or list_liked_songs, like https://open.spotify.com/track/{id}.

    Example input

    {
      "playlist_url": "https://example.com",
      "song_urls": [
        "https://example.com"
      ]
    }

    Example response

    {
      "playlist": "Road trip",
      "removed": 1,
      "songs_now": 63
    }
  • set_playlist_visibility Switch a playlist you made between public and private. writeasks first

    set_playlist_visibility uses Make public or Make private in the playlist menu. A private playlist cannot be opened by anyone else, even with its link, and it leaves your profile. A public playlist is shown on your profile. By default you confirm each call; you can switch that off for this tool.

    MCP callspotify_write → set_playlist_visibility

    REST endpointPUT https://cotlet.dev/api/v1/spotify/playlist-visibility

    Parameters

    Parameters: set_playlist_visibility
    NameTypeDescription
    playlist_url string required string Playlist link from list_playlists or search, like https://open.spotify.com/playlist/{id}.
    visibility string required string One of public, private.

    Example input

    {
      "playlist_url": "https://example.com",
      "visibility": "visibility"
    }

    Example response

    {
      "name": "Focus",
      "visibility": "private"
    }
  • delete_playlist Delete a playlist from Your Library. writeasks first

    delete_playlist uses the Delete option of the playlist menu. A deleted playlist disappears from your profile and from the people who followed it. Spotify keeps a way to recover a deleted playlist, described in its help center, but the agent should not rely on it. By default you confirm each call; you can switch that off for this tool.

    MCP callspotify_write → delete_playlist

    REST endpointDELETE https://cotlet.dev/api/v1/spotify/playlists/delete-playlist

    Parameters

    Parameters: delete_playlist
    NameTypeDescription
    playlist_url string required string Playlist link from list_playlists or search, like https://open.spotify.com/playlist/{id}.

    Example input

    {
      "playlist_url": "https://example.com"
    }

    Example response

    {
      "deleted": true,
      "name": "Old workout mix"
    }

Liked Songs and Recents4

Your own library only. Recents shows the last 50 songs on desktop.

  • list_liked_songs Return the songs saved to your Liked Songs, with the date you saved each. read

    list_liked_songs returns each saved song with its title, artists, album, the date it was saved and its link, in the order Spotify shows them. Liked Songs sits under Playlists in Your Library. Pass next_cursor to continue through a long library. It reads only, so it asks no confirmation.

    MCP callspotify_read → list_liked_songs

    REST endpointGET https://cotlet.dev/api/v1/spotify/liked-songs

    Parameters

    Parameters: list_liked_songs
    NameTypeDescription
    cursor string string Next page cursor from the previous call.

    Example response

    {
      "items": [
        {
          "title": "Dog Days Are Over",
          "artists": [
            "Florence + The Machine"
          ],
          "album": "Lungs",
          "added_at": "2026-11-02",
          "url": "https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"
        },
        {
          "title": "Midnight City",
          "artists": [
            "M83"
          ],
          "album": "Hurry Up, We're Dreaming",
          "added_at": "2026-10-28",
          "url": "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp"
        }
      ],
      "next_cursor": null
    }
  • like_songs Save songs to your Liked Songs. write

    like_songs saves each song to Liked Songs with the Add or Save button and returns how many it saved. It changes only your own library and one unlike_songs call undoes it, so it asks no confirmation by default.

    MCP callspotify_write → like_songs

    REST endpointPOST https://cotlet.dev/api/v1/spotify/songs/like

    Parameters

    Parameters: like_songs
    NameTypeDescription
    song_urls string[] required string[] Song links from search, get_playlist_items or list_liked_songs, like https://open.spotify.com/track/{id}.

    Example input

    {
      "song_urls": [
        "https://example.com"
      ]
    }

    Example response

    {
      "saved": 2,
      "already_saved": 0
    }
  • unlike_songs Remove songs from your Liked Songs. write

    unlike_songs removes each song from Liked Songs and returns how many it removed. It changes only your own library and one like_songs call undoes it, so it asks no confirmation by default.

    MCP callspotify_write → unlike_songs

    REST endpointPOST https://cotlet.dev/api/v1/spotify/songs/unlike

    Parameters

    Parameters: unlike_songs
    NameTypeDescription
    song_urls string[] required string[] Song links from search, get_playlist_items or list_liked_songs, like https://open.spotify.com/track/{id}.

    Example input

    {
      "song_urls": [
        "https://example.com"
      ]
    }

    Example response

    {
      "removed": 2,
      "not_in_library": 0
    }
  • list_recent_plays Return the songs on your Recents list. read

    list_recent_plays returns the songs Spotify shows under Recents, with title, artists, album and link. On desktop Spotify shows the last 50 songs you listened to there. Songs you played earlier are not on the list, so run it often if you want a longer history. It reads only, so it asks no confirmation.

    MCP callspotify_read → list_recent_plays

    REST endpointGET https://cotlet.dev/api/v1/spotify/recent-plays

    Parameters

    No parameters.

    Example response

    {
      "items": [
        {
          "title": "Dog Days Are Over",
          "artists": [
            "Florence + The Machine"
          ],
          "album": "Lungs",
          "url": "https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"
        },
        {
          "title": "Midnight City",
          "artists": [
            "M83"
          ],
          "album": "Hurry Up, We're Dreaming",
          "url": "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp"
        }
      ]
    }
Encrypted, revocable

Who can see my Spotify session, and how do I revoke it?

  • What we store

    Your signed-in Spotify profile, AES-256-GCM, kept in Finland. No password.

  • What your agent gets

    The 12 Spotify tools. Not the session cookie.

  • What the session sees

    Your playlists, Liked Songs and Recents, and your profile.

  • What no tool touches

    Your plan, payment details, password and playback.

  • If Spotify asks to verify

    You type the code yourself. We never do.

  • How to cut access

    Disable for agents, reset the browser or delete the API key. The next call stops.

cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or outside pentest so far.

Tested every 12 h

What happens when Spotify changes? We repair the tool; your prompts stay the same.

between tests of the Spotify tools
12 h
for a call to a Spotify tool paused for a fix
$0

Spotify renamed its playlist endpoints and cut search results to 10 for new developer apps in Feb 2026 (Spotify for Developers). Your Cloud Browser works in the web player, so those changes do not reach your prompts, and a broken tool is ours to fix. status.cotlet.dev checks the site, console and API every 3 minutes.

4 of 12 tools ask first

Approvals, undo and mistakes Edits other people can see wait for your OK.

  1. 01 Reads the playlist Songs, positions and the date each was added.
  2. 02 Lists what it will change Every song to add or remove, by title and artist.
  3. 03 Waits for your OK The request shows up in your Cotlet console first.
  4. 04 Reports the result Songs added, removed or skipped, and the new count.
Which Spotify actions can be undone
ActionUndo
Create a playlistDelete it with delete_playlist
Add songs to a playlistRemove the same songs with remove_from_playlist
Remove songs from a playlistAdd them back with add_to_playlist
Make a playlist public or privateYes, same tool
Save or remove Liked SongsYes, the opposite tool
Delete a playlistNo tool brings it back, so it asks first

4 of 12 tools ask first: song edits, deleting and privacy. Reads, new private playlists and Liked Songs run at once. Switch the wait off per tool for a scheduled run.

For duplicates, the agent shows which copy it would remove before it asks.

MCP call
{
  "name": "add_to_playlist",
  "arguments": {
    "playlist_url": "https://open.spotify.com/playlist/6KtB3yQmZd1WxPaN0cVhRs",
    "song_urls": [
      "https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp",
      "https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"
    ]
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/spotify/playlists/add-to-playlist \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"playlist_url":"https://open.spotify.com/playlist/6KtB3yQmZd1WxPaN0cVhRs","song_urls":["https://open.spotify.com/track/1eyzqe2QqGZUmfcPZtt1xp","https://open.spotify.com/track/1VZt8sG4cRpWq3hJmYn0Lk"]}'
Tool output
{
  "playlist": "Friday setlist",
  "added": 2,
  "skipped": [],
  "songs_now": 2
}

Scripts and cron jobs reach the same tools over REST at /api/v1/spotify, with the same key and price. A call that asks first answers 202 with a call ID, and a failed call costs nothing. The tools table shows the REST path of every tool.

Pay per call

How much does the Spotify MCP server cost?

About $13 a monthfor a listener who keeps playlists tidy, 2,240 credits. Your Spotify plan is billed by Spotify as before.

A month of Spotify jobs for one listener, in credits
JobCallsCredits
Copy Discover Weekly to an archive, weekly3 × 4120
Export one playlist to a spreadsheet, weekly3 × 4120
Build a playlist from a list of 18 songs20 × 2400
Remove duplicates from a playlist3 × 260
Snapshot Liked Songs, monthly4 × 140
Cloud Browser, 30 days1,500
Total2,240
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on Spotify Free or Premium

The month is our own example, since Spotify publishes no typical library numbers: one song search per title when building a playlist, a few reads for each weekly job. Premium costs $12.99 a month for one person in the US (Spotify, 6 Nov 2026). Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Spotify MCP server on GitHub, n8n or hosted: which to use Each fits a different job.

Other Spotify MCP servers and tools, checked 6 Nov 2026
OptionWhat it doesWhere it stops
varunneal/spotify-mcpThe most starred community server (614 stars), Python, MIT, last commit 11 Mar 2026.You register a Spotify app, and since Feb 2026 its owner needs Premium.
marcelmarais/spotify-mcp-serverA lightweight server (497 stars), MIT, last commit 28 Oct 2026.Same developer app, runs on your computer.
gupta-kush/spotify-mcpOver 100 tools for playback, playlists and discovery (10 stars), MIT.Same developer app and the Feb 2026 limits.
Spotify node in n8nSearch, playlists, liked tracks, queue and playback in a workflow.No playlist delete or privacy operation in its list, and a Spotify app to register.
ZapierA Spotify app with playlist and search steps for templates.Fixed steps, no agent that decides which songs to move.

Use Spotify's Claude connector when you want recommendations and playback inside Claude. Pick Cotlet when your agent should edit playlists and Liked Songs, in ChatGPT or Claude, without a developer app. Run a GitHub server if you want to host and update the code yourself.

EU company, since 2019

Who runs Cotlet A company you can look up.

Behind Cotlet is Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), in business since 2019 and founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Spotify tools go to contact@cotlet.dev.

Spotify MCP server: questions

How do I connect Spotify to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Spotify once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Spotify account through Cotlet, in their phone apps too.

What can ChatGPT do in Spotify?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Spotify: archive Discover Weekly; build a playlist from a list of songs; remove duplicate songs from a playlist. You ask in plain words, and anything that reaches other people waits for your OK first.

How do I get access?

Sign up free at https://cotlet.dev, find Spotify under Integrations in the console and sign in to Spotify in its Cloud Browser. The trial starts with your first app, and no card is asked.

Do I need Spotify Premium to use the official API?

Yes, for apps in development mode: the app owner must have an active Premium subscription, or the app stops working (Spotify for Developers, February 2026 Dev Mode changes, checked 5 Nov 2026). Spotify's official Claude connector works for Free and Premium listeners, but describing a mood to get a playlist is Premium only (Spotify Newsroom, 23 Apr 2026).

Can Spotify's official connector edit my playlists?

Not by its published tool list. Claude's connector page lists search, create_playlist, get_currently_playing, add_to_library, fetch_tracks and a remove-from-library tool, and none adds songs to an existing playlist, removes songs from one or deletes one (checked 5 Nov 2026).

Can the tools play music or control playback?

No. The tools search, read and edit playlists and your library. Spotify's own connector for Claude can play music in Claude and switch devices through Spotify Connect (Spotify Newsroom, 23 Apr 2026).

Why not register my own Spotify developer app?

You can. A development-mode app allows 5 users, its owner needs an active Premium plan, and since Feb 2026 it reads the songs of only your own playlists. Cotlet works in your signed-in account instead, so none of that applies.

Is the MCP server different from the REST API?

No, only the entry point. Both carry the same 12 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Spotify?

No. Cotlet is independent and not affiliated with Spotify AB.

Give your agent access to Spotify.

Free 7-day trial with 2,000 credits, no card needed.