Skip to main content
Glama

saveOrRemoveAlbumForUser

Add or delete albums from your Spotify "Your Music" library. Manage your saved albums by specifying album IDs and choosing save or remove actions.

Instructions

Save or remove albums from the user's "Your Music" library

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
albumIdsYesArray of Spotify album IDs (max 20)
actionYesAction to perform: save or remove albums

Implementation Reference

  • The async handler function that destructures args, validates albumIds, calls Spotify API to save or remove albums based on action, and returns success or error messages.
    handler: async (args, _extra: SpotifyHandlerExtra) => { const { albumIds, action } = args; if (albumIds.length === 0) { return { content: [ { type: 'text', text: 'Error: No album IDs provided', }, ], }; } try { await handleSpotifyRequest(async (spotifyApi) => { return action === 'save' ? await spotifyApi.currentUser.albums.saveAlbums(albumIds) : await spotifyApi.currentUser.albums.removeSavedAlbums(albumIds); }); const actionPastTense = action === 'save' ? 'saved' : 'removed'; const preposition = action === 'save' ? 'to' : 'from'; return { content: [ { type: 'text', text: `Successfully ${actionPastTense} ${albumIds.length} album${albumIds.length === 1 ? '' : 's'} ${preposition} your library`, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error ${action === 'save' ? 'saving' : 'removing'} albums: ${ error instanceof Error ? error.message : String(error) }`, }, ], }; } }, };
  • Zod schema validating the input parameters: albumIds as array of strings (max 20) and action as 'save' or 'remove'.
    schema: { albumIds: z .array(z.string()) .max(20) .describe('Array of Spotify album IDs (max 20)'), action: z .enum(['save', 'remove']) .describe('Action to perform: save or remove albums'), },
  • src/albums.ts:299-304 (registration)
    Local registration of the tool in the albumTools array which is exported for use in main index.
    export const albumTools = [ getAlbums, getAlbumTracks, saveOrRemoveAlbumForUser, checkUsersSavedAlbums, ];
  • src/index.ts:12-14 (registration)
    Global registration where all tools including albumTools are registered to the MCP server via server.tool() calls.
    [...readTools, ...playTools, ...albumTools].forEach((tool) => { server.tool(tool.name, tool.description, tool.schema, tool.handler); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/makesh-kumar/spotify-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server