rekordbox-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATABASE_PATH | No | Optional custom database path. If not provided, auto-detection is used. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_tracksB | Search tracks in the rekordbox database. Args: query: General search query (searches across multiple fields) artist: Filter by artist name title: Filter by track title genre: Filter by genre key: Filter by musical key (e.g., "5A", "12B") bpm_min: Minimum BPM bpm_max: Maximum BPM rating_min: Minimum rating (0-5) limit: Maximum number of results to return Returns: List of matching tracks with metadata |
| get_track_detailsA | Get detailed information about a specific track. Args: track_id: The unique track identifier Returns: Detailed track information including metadata, cue points, and play history |
| get_tracks_by_keyA | Get all tracks in a specific musical key. Args: key: Musical key (e.g., "5A", "12B") Returns: List of tracks in the specified key |
| get_tracks_by_bpm_rangeA | Get tracks within a specific BPM range. Args: bpm_min: Minimum BPM bpm_max: Maximum BPM Returns: List of tracks within the BPM range |
| get_genre_filepathsA | Get filepaths for all tracks matching a genre. This tool is optimized for token efficiency - returns only filepaths. Useful for creating export scripts for selective library exports. Args: genre: Genre term to search for (case-insensitive substring match) Returns: List of absolute filepaths for matching tracks |
| get_most_played_tracksA | Get the most played tracks in the library. Args: limit: Maximum number of tracks to return Returns: List of most played tracks |
| get_top_rated_tracksA | Get the highest rated tracks in the library. Args: limit: Maximum number of tracks to return Returns: List of top rated tracks |
| get_unplayed_tracksA | Get tracks that have never been played. Args: limit: Maximum number of tracks to return Returns: List of unplayed tracks |
| get_track_file_pathB | Get the file system path for a specific track. Args: track_id: The unique track identifier Returns: Dictionary containing file path information |
| search_tracks_by_filenameA | Search for tracks by filename. Args: filename: Filename to search for (partial match) Returns: List of tracks matching the filename |
| analyze_libraryB | Analyze library with grouping and aggregation. Args: group_by: Field to group by (genre, key, year, artist, rating) aggregate_by: Aggregation method (count, playCount, totalTime) top_n: Number of top results to return Returns: Analysis results |
| validate_track_idsB | Validate a list of track IDs and show which are valid/invalid. Args: track_ids: List of track IDs to validate Returns: Validation results with valid and invalid IDs |
| get_playlistsA | Get all playlists from the rekordbox database. Returns: List of playlists with metadata |
| get_playlist_tracksA | Get all tracks in a specific playlist. Args: playlist_id: The unique playlist identifier Returns: List of tracks in the playlist |
| get_library_statsC | Get comprehensive library statistics. Returns: Dictionary containing various library statistics |
| connect_databaseA | Connect to the rekordbox database. Args: database_path: Optional path to database directory. If not provided, auto-detection is used. Returns: Connection status message |
| get_history_sessionsA | Get DJ history sessions from rekordbox. Args: include_folders: Whether to include folder entries (years/months) limit: Maximum number of sessions to return Returns: List of history sessions with metadata |
| get_session_tracksA | Get all tracks from a specific DJ history session. Args: session_id: The session's unique identifier Returns: List of tracks in the session with performance context |
| get_recent_sessionsB | Get recent DJ history sessions within the specified number of days. Args: days: Number of days to look back (default: 30) Returns: List of recent history sessions |
| get_history_statsB | Get comprehensive statistics about DJ history sessions. Returns: Statistics about all history sessions including totals and trends |
| search_history_sessionsA | Search DJ history sessions with various filters. Args: query: Search query for session names year: Filter by year (e.g., "2025") month: Filter by month (e.g., "08" for August) min_tracks: Minimum number of tracks in session limit: Maximum number of results Returns: List of matching history sessions |
| create_playlistA | Create a new playlist or folder in rekordbox. ⚠️ CAUTION: This modifies your rekordbox database! Args: name: Name for the new playlist or folder parent_id: Optional parent folder ID (omit for root level) is_folder: If True, create as a folder that can contain other playlists Returns: Information about the created playlist or folder |
| add_tracks_to_playlistA | Add multiple tracks to an existing playlist in one operation. ⚠️ CAUTION: This modifies your rekordbox database! Args: playlist_id: ID of the playlist to modify track_ids: List of track IDs to add Returns: Detailed results of the batch operation |
| add_track_to_playlistB | Add a track to an existing playlist. ⚠️ CAUTION: This modifies your rekordbox database! Args: playlist_id: ID of the playlist to modify track_id: ID of the track to add Returns: Result of the operation |
| remove_track_from_playlistA | Remove a track from a playlist. ⚠️ CAUTION: This modifies your rekordbox database! Args: playlist_id: ID of the playlist to modify track_id: ID of the track to remove Returns: Result of the operation |
| delete_playlistA | Delete a playlist from rekordbox. ⚠️ DANGER: This permanently deletes a playlist and cannot be undone! Args: playlist_id: ID of the playlist to delete Returns: Result of the operation |
| import_trackA | Import a single audio file into the rekordbox library. ⚠️ CAUTION: This modifies your rekordbox database — rekordbox must be closed. The track is added as unanalyzed; open rekordbox and run "Analyze Tracks" to generate waveforms, beatgrids, and hot cues. Args: path: Absolute path to the audio file (mp3/m4a/flac/wav/aiff) title: Override the title (defaults to ID3 tag if auto_tag=True) artist: Override the artist (creates artist row if new) album: Override the album genre: Override the genre label: Override the record label bpm: Override the BPM (float, e.g. 128.0) rating: Override the rating (0–5) comments: Track comments year: Release year auto_tag: Read ID3 tags via mutagen and prefill metadata (default True). Explicit arguments always win over tag values. Returns: Result with status (success/skipped/error), track_id, and resolved metadata. |
| import_tracksA | Batch-import audio files and/or directories into the rekordbox library. ⚠️ CAUTION: This modifies your rekordbox database — rekordbox must be closed. Tracks are added as unanalyzed. Open rekordbox afterwards and run "Analyze Tracks" on the new imports to generate waveforms/beatgrids/hot cues. Tip: follow up with add_tracks_to_playlist using the returned track_ids to stage them for easy selection in rekordbox. Args: paths: List of file paths and/or directory paths. recursive: If a directory is given, descend into subdirectories (default True). auto_tag: Read ID3 tags via mutagen for each file (default True). extensions: Restrict directory scans to these extensions (e.g. ["mp3", "flac"]). Defaults to all supported types. Returns: Summary with counts and per-file details for imported / skipped / failed. |
| find_broken_tracksA | Scan the library for broken tracks and orphaned playlist references. Detects:
Returns: Report with broken tracks grouped by category and a summary with counts |
| cleanup_orphaned_playlist_entriesA | Remove orphaned playlist entries that reference deleted tracks. These orphaned entries cause blank '[1] The file doesn't exist' errors when exporting to USB. This tool removes the stale PlaylistSong rows while preserving all active tracks and playlists. ⚠️ CAUTION: This modifies your rekordbox database! A backup is created automatically. Returns: Count and details of removed orphaned entries |
| remove_broken_tracksA | Soft-delete tracks by ID and remove them from all playlists. Use find_broken_tracks first to identify which tracks to remove. Tracks are soft-deleted (marked as deleted in the database, not permanently erased). ⚠️ DANGER: This removes tracks from your rekordbox library! Args: track_ids: List of track IDs to remove Returns: Details of removed tracks and any IDs that were not found |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| database_status | Get the current database connection status. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Galb-collab/rekordbox-mcp-main'
If you have feedback or need assistance with the MCP directory API, please join our Discord server