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
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | ||
| limit | No |
Implementation Reference
- src/tidal_mcp/server.py:508-555 (handler)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)}")
- src/tidal_mcp/models.py:98-105 (schema)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")
- src/tidal_mcp/models.py:16-25 (schema)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")
- src/tidal_mcp/server.py:77-77 (registration)Tool mentioned in server instructions/docstring for user guidance.- get_playlist_tracks: Get tracks from a playlist