get_favorite_tracks
Retrieve your liked songs from TIDAL to access saved tracks, manage favorites, or create playlists. Specify a limit to control how many tracks are returned.
Instructions
Get user's favorite (liked) tracks from TIDAL.
Args: limit: Maximum tracks to retrieve (default: 50)
Returns: List of favorite tracks
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Implementation Reference
- src/tidal_mcp/server.py:399-434 (handler)Main handler function for the 'get_favorite_tracks' tool. Fetches user's liked tracks via tidalapi.Session.user.favorites.tracks(), maps to Track models, and returns TrackList. Includes @mcp.tool() decorator for MCP registration and authentication check.@mcp.tool() async def get_favorite_tracks(limit: int = 50) -> TrackList: """ Get user's favorite (liked) tracks from TIDAL. Args: limit: Maximum tracks to retrieve (default: 50) Returns: List of favorite tracks """ if not await ensure_authenticated(): raise ToolError("Not authenticated. Please run the 'login' tool first.") try: favorites = await anyio.to_thread.run_sync( lambda: session.user.favorites.tracks(limit=limit) ) tracks = [] for track in favorites: 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 TrackList(status="success", count=len(tracks), tracks=tracks) except Exception as e: raise ToolError(f"Failed to get favorites: {str(e)}")
- src/tidal_mcp/models.py:62-69 (schema)Pydantic output schema TrackList returned by get_favorite_tracks, defining structured list of tracks with status, count, and tracks array.class TrackList(BaseModel): """List of tracks with metadata.""" status: str = Field(description="Operation status (success/error)") query: Optional[str] = Field(None, description="Search query used (for search results)") 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 schema Track used in TrackList for individual track details in get_favorite_tracks 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:68-68 (registration)Tool description in SERVER_INSTRUCTIONS string, documenting the get_favorite_tracks tool for MCP server instructions.- get_favorite_tracks: Get your liked tracks