Skip to main content
Glama
igorgarbuz
by igorgarbuz

playMusic

Start playing Spotify tracks, albums, artists, or playlists using Spotify URIs or IDs. Control playback on specific devices through the Spotify MCP Node Server.

Instructions

Start playing a Spotify track, album, artist, or playlist

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uriNoThe Spotify URI to play (overrides type and id)
typeNoThe type of item to play
idNoThe Spotify ID of the item to play
deviceIdNoThe Spotify device ID to play on

Implementation Reference

  • The asynchronous handler function for the playMusic tool. It destructures arguments, validates inputs, constructs Spotify URI if needed, calls handleSpotifyRequest to start/resume playback on Spotify via API, handles track specially, and returns a text response.
    handler: async (args, extra: SpotifyHandlerExtra) => { const { uri, type, id, deviceId } = args; if (!uri && (!type || !id)) { return { content: [ { type: 'text', text: 'Error: Must provide either a URI or both a type and ID', isError: true, }, ], }; } let spotifyUri = uri; if (!spotifyUri && type && id) { spotifyUri = `spotify:${type}:${id}`; } await handleSpotifyRequest(async (spotifyApi) => { const device = deviceId || ''; if (!spotifyUri) { await spotifyApi.player.startResumePlayback(device); return; } if (type === 'track') { await spotifyApi.player.startResumePlayback(device, undefined, [ spotifyUri, ]); } else { await spotifyApi.player.startResumePlayback(device, spotifyUri); } }); return { content: [ { type: 'text', text: `Started playing ${type || 'music'} ${id ? `(ID: ${id})` : ''}`, }, ], }; },
  • Zod schema defining the input parameters for playMusic: optional uri (Spotify URI), type (enum: track/album/artist/playlist), id (Spotify ID), and deviceId.
    schema: { uri: z .string() .optional() .describe('The Spotify URI to play (overrides type and id)'), type: z .enum(['track', 'album', 'artist', 'playlist']) .optional() .describe('The type of item to play'), id: z.string().optional().describe('The Spotify ID of the item to play'), deviceId: z .string() .optional() .describe('The Spotify device ID to play on'), },
  • src/index.ts:12-14 (registration)
    Registers the playMusic tool (included in the imported playTools array) with the MCP server by calling server.tool() for each tool in the spread arrays.
    [...playTools, ...readTools, ...writeTools].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/igorgarbuz/spotify-mcp'

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