getUserPlaylists
Retrieve your Spotify playlists to manage music collections, with optional limit control for focused results.
Instructions
Get a list of the current user's playlists on Spotify
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of playlists to return (1-50) |
Implementation Reference
- src/read.ts:209-246 (handler)The async handler function that implements the core logic of the 'getUserPlaylists' tool. It destructures the optional 'limit' parameter, fetches the user's playlists via Spotify API using handleSpotifyRequest, handles empty case, formats the playlist list with indices, names, track counts, and IDs, and returns a structured text response.handler: async (args, extra: SpotifyHandlerExtra) => { const { limit = 50 } = args; const playlists = await handleSpotifyRequest(async (spotifyApi) => { return await spotifyApi.currentUser.playlists.playlists( limit as MaxInt<50>, ); }); if (playlists.items.length === 0) { return { content: [ { type: 'text', text: "You don't have any playlists on Spotify", }, ], }; } const formattedPlaylists = playlists.items .map((playlist, i) => { const tracksTotal = playlist.tracks?.total ? playlist.tracks.total : 0; return `${i + 1}. "${playlist.name}" (${tracksTotal} tracks) - ID: ${ playlist.id }`; }) .join('\n'); return { content: [ { type: 'text', text: `# Your Spotify Playlists\n\n${formattedPlaylists}`, }, ], }; },
- src/read.ts:201-208 (schema)The Zod input schema for the 'getUserPlaylists' tool, defining an optional 'limit' parameter constrained between 1 and 50.schema: { limit: z .number() .min(1) .max(50) .optional() .describe('Maximum number of playlists to return (1-50)'), },
- src/read.ts:521-529 (registration)The 'getUserPlaylists' tool is included in the 'readTools' export array, which collects all read-related Spotify tools for registration.export const readTools = [ searchSpotify, getNowPlaying, getUserPlaylists, getPlaylistTracks, getRecentlyPlayed, getFollowedArtists, getUserTopItems, ];
- src/index.ts:12-14 (registration)Final MCP server registration where tools from 'readTools' (including 'getUserPlaylists') are dynamically registered by iterating over the combined tools array and calling server.tool() with the tool's name, description, schema, and handler.[...playTools, ...readTools, ...writeTools].forEach((tool) => { server.tool(tool.name, tool.description, tool.schema, tool.handler); });