Skip to main content
Glama

spotify_create_playlist

Create a new Spotify playlist with custom name, description, and privacy settings to organize your music collection.

Instructions

Cria uma nova playlist no Spotify

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
descriptionNoDescrição da playlist (opcional)
nameYesNome da playlist
publicNoSe a playlist deve ser pública (padrão: false)

Implementation Reference

  • The core handler function `createPlaylist` in the SpotifyTools class that implements the tool logic: ensures valid token, fetches user ID, creates the playlist via Spotify API using fetch, and returns success/error details.
    /** * Cria uma nova playlist usando fetch direto */ async createPlaylist(name: string, description?: string, isPublic: boolean = false) { try { await this.spotifyAuth.ensureValidToken(); const spotifyApi = this.spotifyAuth.getSpotifyApi(); const accessToken = await this.spotifyAuth.ensureValidToken(); // Primeiro, obter o ID do usuário atual const userResponse = await fetch('https://api.spotify.com/v1/me', { headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' } }); if (!userResponse.ok) { throw new Error(`Erro ao obter dados do usuário: ${userResponse.status}`); } const userData = await userResponse.json(); const userId = userData.id; // Criar a playlist const playlistResponse = await fetch(`https://api.spotify.com/v1/users/${userId}/playlists`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ name: name, description: description || '', public: isPublic }) }); if (!playlistResponse.ok) { const errorData = await playlistResponse.json(); throw new Error(`Erro ao criar playlist: ${playlistResponse.status} - ${errorData.error?.message || 'Erro desconhecido'}`); } const playlist = await playlistResponse.json(); return { content: [ { type: 'text', text: `✅ Playlist "${name}" criada com sucesso!\n\n**Detalhes:**\n- Nome: ${playlist.name}\n- ID: ${playlist.id}\n- Descrição: ${playlist.description || 'Sem descrição'}\n- Pública: ${playlist.public ? 'Sim' : 'Não'}\n- Link: ${playlist.external_urls.spotify}`, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `❌ Erro ao criar playlist: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } }
  • Tool schema definition in the ListTools response, including name, description, and inputSchema with properties name (required string), description (optional string), public (boolean).
    { name: 'spotify_create_playlist', description: 'Cria uma nova playlist no Spotify', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Nome da playlist', }, description: { type: 'string', description: 'Descrição da playlist (opcional)', }, public: { type: 'boolean', description: 'Se a playlist deve ser pública (padrão: false)', }, }, required: ['name'], }, },
  • src/index.ts:298-299 (registration)
    Registration in the CallToolRequest handler switch statement that dispatches to the SpotifyTools.createPlaylist method with parsed arguments.
    case 'spotify_create_playlist': return await spotifyTools.createPlaylist(args.name, args.description, args.public);

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/fborello/MCPSpotify'

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