Skip to main content
Glama

saveOrRemoveAlbumForUser

Add or delete albums from your Spotify library 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

  • Full tool object definition including the handler function that implements the logic to save or remove albums from the user's Spotify library.
    const saveOrRemoveAlbumForUser: tool<{ albumIds: z.ZodArray<z.ZodString>; action: z.ZodEnum<['save', 'remove']>; }> = { name: 'saveOrRemoveAlbumForUser', description: 'Save or remove albums from the user\'s "Your Music" library', 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'), }, 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) }`, }, ], }; } }, };
  • src/albums.ts:299-304 (registration)
    The saveOrRemoveAlbumForUser tool is included in the albumTools array for export.
    export const albumTools = [ getAlbums, getAlbumTracks, saveOrRemoveAlbumForUser, checkUsersSavedAlbums, ];
  • src/index.ts:12-14 (registration)
    Registration of all tools, including saveOrRemoveAlbumForUser from albumTools, to the MCP server using server.tool().
    [...readTools, ...playTools, ...albumTools].forEach((tool) => { server.tool(tool.name, tool.description, tool.schema, tool.handler); });
  • Zod schema defining input parameters: albumIds (array of strings, max 20) and action (enum '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'), },

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/marcelmarais/spotify-mcp-server'

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