Skip to main content
Glama
yuhuacheng

TIDAL MCP: My Custom Picks

create_tidal_playlist

Create a new playlist in your TIDAL account by adding specified tracks, with naming guidance based on your existing playlist style.

Instructions

Creates a new TIDAL playlist with the specified tracks.

USE THIS TOOL WHENEVER A USER ASKS FOR:
- "Create a playlist with these songs"
- "Make a TIDAL playlist"
- "Save these tracks to a playlist"
- "Create a collection of songs"
- Any request to create a new playlist in their TIDAL account

This function creates a new playlist in the user's TIDAL account and adds the specified tracks to it.
The user must be authenticated with TIDAL first.

NAMING CONVENTION GUIDANCE:
When suggesting or creating a playlist, first check the user's existing playlists using get_user_playlists()
to understand their naming preferences. Some patterns to look for:
- Do they use emoji in playlist names?
- Do they use all caps, title case, or lowercase?
- Do they include dates or seasons in names?
- Do they name by mood, genre, activity, or artist?
- Do they use specific prefixes or formatting (e.g., "Mix: Summer Vibes" or "[Workout] High Energy")

Try to match their style when suggesting new playlist names. If they have no playlists yet or you 
can't determine a pattern, use a clear, descriptive name based on the tracks' common themes.

When processing the results of this tool:
1. Confirm the playlist was created successfully
2. Provide the playlist title, number of tracks added, and URL
3. Always include the direct TIDAL URL (https://tidal.com/playlist/{playlist_id})
4. Suggest that the user can now access this playlist in their TIDAL account

Args:
    title: The name of the playlist to create
    track_ids: List of TIDAL track IDs to add to the playlist
    description: Optional description for the playlist (default: "")
    
Returns:
    A dictionary containing the status of the playlist creation and details about the created playlist

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYes
track_idsYes
descriptionNo

Implementation Reference

  • The handler function decorated with @mcp.tool(), implementing the core logic for creating a TIDAL playlist. It handles authentication check, input validation, API call to Flask backend, and formats the response with playlist URL.
    @mcp.tool()
    def create_tidal_playlist(title: str, track_ids: list, description: str = "") -> dict:
        """
        Creates a new TIDAL playlist with the specified tracks.
        
        USE THIS TOOL WHENEVER A USER ASKS FOR:
        - "Create a playlist with these songs"
        - "Make a TIDAL playlist"
        - "Save these tracks to a playlist"
        - "Create a collection of songs"
        - Any request to create a new playlist in their TIDAL account
        
        This function creates a new playlist in the user's TIDAL account and adds the specified tracks to it.
        The user must be authenticated with TIDAL first.
    
        NAMING CONVENTION GUIDANCE:
        When suggesting or creating a playlist, first check the user's existing playlists using get_user_playlists()
        to understand their naming preferences. Some patterns to look for:
        - Do they use emoji in playlist names?
        - Do they use all caps, title case, or lowercase?
        - Do they include dates or seasons in names?
        - Do they name by mood, genre, activity, or artist?
        - Do they use specific prefixes or formatting (e.g., "Mix: Summer Vibes" or "[Workout] High Energy")
        
        Try to match their style when suggesting new playlist names. If they have no playlists yet or you 
        can't determine a pattern, use a clear, descriptive name based on the tracks' common themes.
        
        When processing the results of this tool:
        1. Confirm the playlist was created successfully
        2. Provide the playlist title, number of tracks added, and URL
        3. Always include the direct TIDAL URL (https://tidal.com/playlist/{playlist_id})
        4. Suggest that the user can now access this playlist in their TIDAL account
        
        Args:
            title: The name of the playlist to create
            track_ids: List of TIDAL track IDs to add to the playlist
            description: Optional description for the playlist (default: "")
            
        Returns:
            A dictionary containing the status of the playlist creation and details about the created playlist
        """
        try:
            # First, check if the user is authenticated
            auth_check = requests.get(f"{FLASK_APP_URL}/api/auth/status")
            auth_data = auth_check.json()
            
            if not auth_data.get("authenticated", False):
                return {
                    "status": "error",
                    "message": "You need to login to TIDAL first before creating a playlist. Please use the tidal_login() function."
                }
            
            # Validate inputs
            if not title:
                return {
                    "status": "error",
                    "message": "Playlist title cannot be empty."
                }
                
            if not track_ids or not isinstance(track_ids, list) or len(track_ids) == 0:
                return {
                    "status": "error",
                    "message": "You must provide at least one track ID to add to the playlist."
                }
            
            # Create the playlist through the Flask API
            payload = {
                "title": title,
                "description": description,
                "track_ids": track_ids
            }
            
            response = requests.post(f"{FLASK_APP_URL}/api/playlists", json=payload)
            
            # Check response
            if response.status_code != 200:
                error_data = response.json()
                return {
                    "status": "error",
                    "message": f"Failed to create playlist: {error_data.get('error', 'Unknown error')}"
                }
                
            # Parse the response
            result = response.json()
            playlist_data = result.get("playlist", {})
            
            # Get the playlist ID
            playlist_id = playlist_data.get("id")
            
            # Format the TIDAL URL
            playlist_url = f"https://tidal.com/playlist/{playlist_id}" if playlist_id else None        
            playlist_data["playlist_url"] = playlist_url
            
            return {
                "status": "success",
                "message": f"Successfully created playlist '{title}' with {len(track_ids)} tracks",
                "playlist": playlist_data            
            }
            
        except Exception as e:
            return {
                "status": "error",
                "message": f"Failed to create playlist: {str(e)}"
            }

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

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