OpenMCP

spotify

...

@open-mcp/spotify

Installing

First set the environment variables as shell variables:

OAUTH2_TOKEN='...'

Then use the OpenMCP config CLI to add the server to your MCP client:

Claude desktop

npx @open-mcp/config add spotify \
  ~/Library/Application\ Support/Claude/claude_desktop_config.json \
  --OAUTH2_TOKEN=$OAUTH2_TOKEN

Cursor

Run this from the root of your project directory or, to add to all cursor projects, run it from your home directory ~.

npx @open-mcp/config add spotify \
  .cursor/mcp.json \
  --OAUTH2_TOKEN=$OAUTH2_TOKEN

Other

npx @open-mcp/config add spotify \
  /path/to/client/config.json \
  --OAUTH2_TOKEN=$OAUTH2_TOKEN

Manually

If you don't want to use the helper above, add the following to your MCP client config manually:

{
  "mcpServers": {
    "spotify": {
      "command": "npx",
      "args": ["-y", "@open-mcp/spotify"],
      "env": {"OAUTH2_TOKEN":"..."}
    }
  }
}

Customizing the base URL

Set the environment variable OPEN_MCP_BASE_URL to override each tool's base URL. This is useful if your OpenAPI spec defines a relative server URL.

Other environment variables

  • OAUTH2_TOKEN

Inspector

Needs access to port 3000 for running a proxy server, will fail if http://localhost:3000 is already busy.

npx -y @modelcontextprotocol/inspector npx -y @open-mcp/spotify
  • Open http://localhost:5173
  • Transport type: STDIO
  • Command: npx
  • Arguments: -y @open-mcp/spotify
  • Click Environment Variables to add
  • Click Connect

It should say MCP Server running on stdio in red.

  • Click List Tools

Tools

expandSchema

Expand the input schema for a tool before calling the tool

Input schema

  • toolName (string)
  • jsonPointers (array)

get_an_album

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_multiple_albums

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • market (string)

get_an_albums_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)
  • limit (integer)
  • offset (integer)

get_an_artist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)

get_multiple_artists

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_an_artists_albums

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • include_groups (string)
  • market (string)
  • limit (integer)
  • offset (integer)

get_an_artists_top_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)

get_a_show

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_multiple_shows

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • ids (string)

get_a_shows_episodes

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)
  • limit (integer)
  • offset (integer)

get_an_episode

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_multiple_episodes

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • market (string)

get_an_audiobook

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_multiple_audiobooks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • market (string)

get_audiobook_chapters

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)
  • limit (integer)
  • offset (integer)

get_users_saved_audiobooks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • offset (integer)

save_audiobooks_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

remove_audiobooks_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

check_users_saved_audiobooks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_a_chapter

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_several_chapters

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • market (string)

get_track

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)
  • market (string)

get_several_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • ids (string)

Environment variables

  • OAUTH2_TOKEN

Input schema

  • q (string)
  • type (array)
  • market (string)
  • limit (integer)
  • offset (integer)
  • include_external (string)

get_current_users_profile

Environment variables

  • OAUTH2_TOKEN

Input schema

No input parameters

get_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • market (string)
  • fields (string)
  • additional_types (string)

change_playlist_details

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • name (string)
  • public (boolean)
  • collaborative (boolean)
  • description (string)

get_playlists_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • market (string)
  • fields (string)
  • limit (integer)
  • offset (integer)
  • additional_types (string)

add_tracks_to_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • position (integer)
  • uris (string)
  • b_uris (array)
  • b_position (integer)

reorder_or_replace_playlists_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • uris (string)
  • b_uris (array)
  • range_start (integer)
  • insert_before (integer)
  • range_length (integer)
  • snapshot_id (string)

remove_tracks_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • tracks (array)
  • snapshot_id (string)

get_a_list_of_current_users_playlists

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • offset (integer)

get_users_saved_albums

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • offset (integer)
  • market (string)

save_albums_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

remove_albums_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

check_users_saved_albums

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_users_saved_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • limit (integer)
  • offset (integer)

save_tracks_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

remove_tracks_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

check_users_saved_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_users_saved_episodes

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • limit (integer)
  • offset (integer)

save_episodes_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

remove_episodes_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

check_users_saved_episodes

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_users_saved_shows

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • offset (integer)

save_shows_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • b_ids (array)

remove_shows_user

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)
  • market (string)
  • b_ids (array)

check_users_saved_shows

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_users_profile

Environment variables

  • OAUTH2_TOKEN

Input schema

  • user_id (string)

get_list_users_playlists

Environment variables

  • OAUTH2_TOKEN

Input schema

  • user_id (string)
  • limit (integer)
  • offset (integer)

create_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • user_id (string)
  • name (string)
  • public (boolean)
  • collaborative (boolean)
  • description (string)

follow_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • public (boolean)

unfollow_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)

Environment variables

  • OAUTH2_TOKEN

Input schema

  • locale (string)
  • limit (integer)
  • offset (integer)

get_categories

Environment variables

  • OAUTH2_TOKEN

Input schema

  • locale (string)
  • limit (integer)
  • offset (integer)

get_a_category

Environment variables

  • OAUTH2_TOKEN

Input schema

  • category_id (string)
  • locale (string)

get_a_categories_playlists

Environment variables

  • OAUTH2_TOKEN

Input schema

  • category_id (string)
  • limit (integer)
  • offset (integer)

get_playlist_cover

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)

upload_custom_playlist_cover

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)

get_new_releases

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • offset (integer)

get_followed

Environment variables

  • OAUTH2_TOKEN

Input schema

  • type (string)
  • after (string)
  • limit (integer)

follow_artists_users

Environment variables

  • OAUTH2_TOKEN

Input schema

  • type (string)
  • ids (string)
  • b_ids (array)

unfollow_artists_users

Environment variables

  • OAUTH2_TOKEN

Input schema

  • type (string)
  • ids (string)
  • b_ids (array)

check_current_user_follows

Environment variables

  • OAUTH2_TOKEN

Input schema

  • type (string)
  • ids (string)

check_if_user_follows_playlist

Environment variables

  • OAUTH2_TOKEN

Input schema

  • playlist_id (string)
  • ids (string)

get_several_audio_features

Environment variables

  • OAUTH2_TOKEN

Input schema

  • ids (string)

get_audio_features

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)

get_audio_analysis

Environment variables

  • OAUTH2_TOKEN

Input schema

  • id (string)

get_recommendations

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • market (string)
  • seed_artists (string)
  • seed_genres (string)
  • seed_tracks (string)
  • min_acousticness (number)
  • max_acousticness (number)
  • target_acousticness (number)
  • min_danceability (number)
  • max_danceability (number)
  • target_danceability (number)
  • min_duration_ms (integer)
  • max_duration_ms (integer)
  • target_duration_ms (integer)
  • min_energy (number)
  • max_energy (number)
  • target_energy (number)
  • min_instrumentalness (number)
  • max_instrumentalness (number)
  • target_instrumentalness (number)
  • min_key (integer)
  • max_key (integer)
  • target_key (integer)
  • min_liveness (number)
  • max_liveness (number)
  • target_liveness (number)
  • min_loudness (number)
  • max_loudness (number)
  • target_loudness (number)
  • min_mode (integer)
  • max_mode (integer)
  • target_mode (integer)
  • min_popularity (integer)
  • max_popularity (integer)
  • target_popularity (integer)
  • min_speechiness (number)
  • max_speechiness (number)
  • target_speechiness (number)
  • min_tempo (number)
  • max_tempo (number)
  • target_tempo (number)
  • min_time_signature (integer)
  • max_time_signature (integer)
  • target_time_signature (integer)
  • min_valence (number)
  • max_valence (number)
  • target_valence (number)

get_recommendation_genres

Environment variables

  • OAUTH2_TOKEN

Input schema

No input parameters

get_information_about_the_users_current_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • additional_types (string)

transfer_a_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • device_ids (array)
  • play (boolean)

get_a_users_available_devices

Environment variables

  • OAUTH2_TOKEN

Input schema

No input parameters

get_the_users_currently_playing_track

Environment variables

  • OAUTH2_TOKEN

Input schema

  • market (string)
  • additional_types (string)

start_a_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • device_id (string)
  • context_uri (string)
  • uris (array)
  • offset (object)
  • position_ms (integer)

pause_a_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • device_id (string)

skip_users_playback_to_next_track

Environment variables

  • OAUTH2_TOKEN

Input schema

  • device_id (string)

skip_users_playback_to_previous_track

Environment variables

  • OAUTH2_TOKEN

Input schema

  • device_id (string)

seek_to_position_in_currently_playing_track

Environment variables

  • OAUTH2_TOKEN

Input schema

  • position_ms (integer)
  • device_id (string)

set_repeat_mode_on_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • state (string)
  • device_id (string)

set_volume_for_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • volume_percent (integer)
  • device_id (string)

toggle_shuffle_for_users_playback

Environment variables

  • OAUTH2_TOKEN

Input schema

  • state (boolean)
  • device_id (string)

get_recently_played

Environment variables

  • OAUTH2_TOKEN

Input schema

  • limit (integer)
  • after (integer)
  • before (integer)

get_queue

Environment variables

  • OAUTH2_TOKEN

Input schema

No input parameters

add_to_queue

Environment variables

  • OAUTH2_TOKEN

Input schema

  • uri (string)
  • device_id (string)

get_available_markets

Environment variables

  • OAUTH2_TOKEN

Input schema

No input parameters

get_users_top_artists

Environment variables

  • OAUTH2_TOKEN

Input schema

  • time_range (string)
  • limit (integer)
  • offset (integer)

get_users_top_tracks

Environment variables

  • OAUTH2_TOKEN

Input schema

  • time_range (string)
  • limit (integer)
  • offset (integer)

On this page

@open-mcp/spotifyInstallingClaude desktopCursorOtherManuallyCustomizing the base URLOther environment variablesInspectorToolsexpandSchemaget_an_albumget_multiple_albumsget_an_albums_tracksget_an_artistget_multiple_artistsget_an_artists_albumsget_an_artists_top_tracksget_an_artists_related_artistsget_a_showget_multiple_showsget_a_shows_episodesget_an_episodeget_multiple_episodesget_an_audiobookget_multiple_audiobooksget_audiobook_chaptersget_users_saved_audiobookssave_audiobooks_userremove_audiobooks_usercheck_users_saved_audiobooksget_a_chapterget_several_chaptersget_trackget_several_trackssearchget_current_users_profileget_playlistchange_playlist_detailsget_playlists_tracksadd_tracks_to_playlistreorder_or_replace_playlists_tracksremove_tracks_playlistget_a_list_of_current_users_playlistsget_users_saved_albumssave_albums_userremove_albums_usercheck_users_saved_albumsget_users_saved_trackssave_tracks_userremove_tracks_usercheck_users_saved_tracksget_users_saved_episodessave_episodes_userremove_episodes_usercheck_users_saved_episodesget_users_saved_showssave_shows_userremove_shows_usercheck_users_saved_showsget_users_profileget_list_users_playlistscreate_playlistfollow_playlistunfollow_playlistget_featured_playlistsget_categoriesget_a_categoryget_a_categories_playlistsget_playlist_coverupload_custom_playlist_coverget_new_releasesget_followedfollow_artists_usersunfollow_artists_userscheck_current_user_followscheck_if_user_follows_playlistget_several_audio_featuresget_audio_featuresget_audio_analysisget_recommendationsget_recommendation_genresget_information_about_the_users_current_playbacktransfer_a_users_playbackget_a_users_available_devicesget_the_users_currently_playing_trackstart_a_users_playbackpause_a_users_playbackskip_users_playback_to_next_trackskip_users_playback_to_previous_trackseek_to_position_in_currently_playing_trackset_repeat_mode_on_users_playbackset_volume_for_users_playbacktoggle_shuffle_for_users_playbackget_recently_playedget_queueadd_to_queueget_available_marketsget_users_top_artistsget_users_top_tracks