Skip to main content
Glama
keenanbass1

TIDAL MCP Server

by keenanbass1

get_playlist_tracks

Retrieve track listings from TIDAL playlists by providing the playlist ID. This tool returns songs, artists, and album details for music organization and playback.

Instructions

Get tracks from a specific playlist.

Args: playlist_id: ID of the playlist limit: Maximum tracks to return (default: 100)

Returns: List of tracks in the playlist

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
playlist_idYes
limitNo

Implementation Reference

  • Main handler function implementing the get_playlist_tracks tool logic using tidalapi to fetch playlist tracks.
    @mcp.tool()
    async def get_playlist_tracks(playlist_id: str, limit: int = 100) -> PlaylistTracks:
        """
        Get tracks from a specific playlist.
    
        Args:
            playlist_id: ID of the playlist
            limit: Maximum tracks to return (default: 100)
    
        Returns:
            List of tracks in the playlist
        """
        if not await ensure_authenticated():
            raise ToolError("Not authenticated. Please run the 'login' tool first.")
    
        try:
            playlist = await anyio.to_thread.run_sync(session.playlist, playlist_id)
            if not playlist:
                raise ToolError(f"Playlist with ID '{playlist_id}' not found")
    
            all_tracks = await anyio.to_thread.run_sync(playlist.tracks)
            limited_tracks = all_tracks[:limit] if limit else all_tracks
    
            tracks = []
            for track in limited_tracks:
                tracks.append(
                    Track(
                        id=str(track.id),
                        title=track.name,
                        artist=track.artist.name if track.artist else "Unknown Artist",
                        album=track.album.name if track.album else "Unknown Album",
                        duration_seconds=track.duration,
                        url=f"https://tidal.com/browse/track/{track.id}",
                    )
                )
    
            return PlaylistTracks(
                status="success",
                playlist_name=playlist.name,
                playlist_id=playlist_id,
                count=len(tracks),
                tracks=tracks,
            )
        except ToolError:
            raise
        except Exception as e:
            raise ToolError(f"Failed to get playlist tracks: {str(e)}")
  • Pydantic schema for the output of get_playlist_tracks, defining the structure of the response including playlist metadata and list of tracks.
    class PlaylistTracks(BaseModel):
        """Tracks from a specific playlist."""
    
        status: str = Field(description="Operation status (success/error)")
        playlist_name: str = Field(description="Name of the playlist")
        playlist_id: str = Field(description="ID of the playlist")
        count: int = Field(description="Number of tracks returned")
        tracks: List[Track] = Field(description="List of track objects")
  • Pydantic model for individual Track objects used within PlaylistTracks response.
    class Track(BaseModel):
        """Structured representation of a TIDAL track."""
    
        id: str = Field(description="Unique TIDAL track ID")
        title: str = Field(description="Track title")
        artist: str = Field(description="Primary artist name")
        album: str = Field(description="Album name")
        duration_seconds: int = Field(description="Track duration in seconds")
        url: str = Field(description="TIDAL web URL for the track")
  • Tool mentioned in server instructions/docstring for user guidance.
    - get_playlist_tracks: Get tracks from a playlist

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/keenanbass1/tidal-mcp'

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