Skip to main content
Glama
Rekordbox Smart MCP

Rekordbox Smart MCP

Rekordbox Smart MCP

MCP Server License: MIT Node.js 18+ Tests

MCP server for DJs using Pioneer Rekordbox — 33 tools for library management, smart playlists, DJ analytics, and safe mutations with full undo capability.

This server implements the UDMS (Unified DJ Metadata Schema) principles described in the DJ Metadata Quality paper: BPM cache layers, Camelot key normalization, and cross-platform field mapping.

See also: Bonk! — Electron+React DJ metadata editor (desktop companion app using aubio/keyfinder-cli for audio analysis).

Key advantages:

  • ✅ No Python required – works with XML exports; optional DB integration

  • ✅ Complete undo system – all mutations create timestamped backups

  • ✅ Smart setlist tools – harmonic analysis, transition suggestions, energy curves

  • ✅ Privacy-focused – no external APIs, no telemetry

  • ✅ 33 tools – comprehensive error handling, audit logging

Prerequisites

  • Node.js 18+

  • Rekordbox 6 or 7 (for DJ analytics and DB import)

  • Rekordbox XML export (File → Export → Export as XML)

  • Optional: Python 3 + pyrekordbox for direct database import

Related MCP server: Spotify Overload - More Tools (18) | More Functions | More Rocking Out

Safety First

⚠️ All mutation operations create automatic XML backups before making changes. Backups are timestamped and can be used to restore your library via mutation_rollback.

We recommend testing with a copy of your XML export before using on your main library.

Quickstart

1. Install

npm install
npm run build

2. Configure

Add to your MCP client configuration:

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "rekordbox-smart-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"]
    }
  }
}

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "rekordbox-smart-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"]
    }
  }
}

3. Load Your Library

{
  "name": "library_load",
  "arguments": {
    "xmlPath": "/path/to/your/rekordbox_export.xml"
  }
}

Or set a default path in rekordbox-smart-mcp.toml and call without arguments.

4. Try It

{ "name": "library_stats", "arguments": {} }
{ "name": "library_search", "arguments": { "query": "house", "limit": 5 } }

Features

Library Management

  • Full-text search with filters (genre, BPM, key, artist, album, year, rating)

  • Statistics, duplicate detection, missing file finder

  • Fuzzy search, harmonic key search

  • JSON export

Track Operations

  • Get detailed metadata

  • Single or batch updates (with automatic backups)

  • Playlist membership queries

Playlist Management

  • Create, rename, delete playlists

  • Add/remove tracks (add or replace modes)

Smart Setlist Tools

  • playlist_buildSmart – build playlists using energy curves, BPM ranges, key progression smoothing, artist diversity

  • setlist_analyze – comprehensive analysis (harmonic compatibility, BPM gaps, genre/artist diversity, recommendations)

  • setlist_suggestTransitions – AI-driven transition suggestions with mix tips and compatibility scoring

Rekordbox Integration

  • Import/export via XML

  • Direct database sync (requires pyrekordbox)

DJ Analytics

  • Recent sessions, session tracks

  • History stats, play count rankings

  • Listening patterns (BPM, genres, keys)

Safety & Undo

  • mutation_history – query audit log with filters

  • mutation_rollback – restore from any backup (creates pre-rollback backup)

  • All mutations logged to audit/bonk-mutations.jsonl

Configuration

Create rekordbox-smart-mcp.toml in your working directory, ~/.config/, or ~:

[library]
xml_path = "~/rekordbox/export.xml"

[rekordbox]
db_path = "~/Library/Pioneer/rekordbox/master.db"
auto_detect = true

[cache]
db_path = "~/.bonk/media-cache.db"

If rekordbox.db_path is not set, the server auto-detects the platform-specific location (macOS, Windows, Linux).

Safety and Undo

All mutations create automatic XML backups in the working directory. Backup pattern: bonk-backup-YYYY-MM-DDTHH-MM-SS-ffffff.xml.

Undo workflow:

  1. List recent mutations:

{ "name": "mutation_history", "arguments": { "limit": 10 } }
  1. Preview rollback (dry run):

{
  "name": "mutation_rollback",
  "arguments": { "mutationId": "2026-04-07T09-03-07-724Z", "dryRun": true }
}
  1. Execute rollback:

{
  "name": "mutation_rollback",
  "arguments": { "mutationId": "2026-04-07T09-03-07-724Z", "dryRun": false }
}

Rollback creates a pre-rollback backup and logs itself as a new mutation, providing an undo chain.

Tool Reference

Library (9 tools)

library_search, library_stats, library_listPlaylists, library_load, library_findMissing, library_findDuplicates, library_fuzzySearch, search_keyCompatible, library_exportJSON

Track (4 tools)

track_get, track_update, track_playlists, track_updateBatch

Playlist (5 tools)

playlist_create, playlist_addTracks, playlist_removeTracks, playlist_delete, playlist_rename

Smart Setlist (3 tools)

playlist_buildSmart, setlist_analyze, setlist_suggestTransitions

Rekordbox (3 tools)

rekordbox_sync, rekordbox_importXml, rekordbox_exportXml

DJ Analytics (5 tools)

dj_getRecentSessions, dj_getSessionTracks, dj_getHistoryStats, dj_getPlayCountAnalytics, dj_getListeningPatterns

Audio (2 tools)

audio_bpmGetCached, audio_bpmCacheSet

Safety (2 tools)

mutation_history, mutation_rollback

Total: 33 canonical tools

Requirements

  • Node.js 18+

  • better-sqlite3 (native module – rebuilt automatically on install)

  • Optional: Python 3 + pyrekordbox for Rekordbox DB import

Limitations

  • Library is in-memory; must load XML or import DB on each server start

  • Cache persists via ~/.bonk/library-state.json

  • DJ analytics require Rekordbox database access

  • Rollback only works if backup file still exists

  • Setlist tools operate on in-memory state (export to persist)

Disclaimer

rekordbox-smart-mcp is not affiliated with, endorsed by, or connected to Pioneer DJ, AlphaTheta Corporation, or Rekordbox in any way. This is an independent, unofficial tool that works with Rekordbox XML exports and database files. Use at your own risk. Always keep backups of your original library data.

License

MIT

Available Tools

33 tools
audio_bpmCacheSetC

Store BPM analysis in cache for an audio file.

Inputs: bpm (required), source (required), filePath (required), confidence, +1 more.

audio_bpmGetCachedC

Get cached BPM analysis for an audio file.

Inputs: filePath (required).

dj_getHistoryStatsB

Get DJ performance statistics. Requires rekordbox.db_path configured.

Inputs: no named parameters.

dj_getListeningPatternsA

Get listening pattern analysis: average BPM, dominant genres, dominant keys.

Inputs: no named parameters.

dj_getPlayCountAnalyticsB

Get play count analytics for tracks from Rekordbox history.

Inputs: no named parameters.

dj_getRecentSessionsA

Get recent DJ sessions from Rekordbox history. Requires rekordbox.db_path configured.

Inputs: days.

dj_getSessionTracksB

Get tracks played in a specific DJ session.

Inputs: sessionId (required).

library_exportJSONC

Export loaded library tracks and playlists to JSON.

Inputs: outputPath.

library_findDuplicatesA

Find potential duplicate tracks by file location and by artist+title.

Inputs: no named parameters.

library_findMissingB

Find tracks whose file paths are missing on disk.

Inputs: no named parameters.

library_fuzzySearchC

Fuzzy-search tracks by title/artist/album/genre.

Inputs: query (required), limit.

library_listPlaylistsA

List all playlists in the library with their track counts.

Inputs: no named parameters.

library_loadA

Load a Rekordbox XML file into the library. If xmlPath is omitted, uses the default path set via library_setDefaultPath. Creates a backup before loading.

Inputs: xmlPath.

library_statsB

Get statistics about the loaded library: track count, genre distribution, BPM range, key distribution.

Inputs: no named parameters.

mutation_historyA

List recent mutations from the audit log. Optional filters: limit (default 50), tool, since (ISO timestamp).

Inputs: tool, limit, since.

mutation_rollbackA

Rollback a mutation by its timestamp ID. Creates a pre-rollback backup. Set dryRun=true to preview without applying.

Inputs: mutationId (required), dryRun.

playlist_addTracksC

Add tracks to a playlist. Creates automatic backup.

Inputs: trackIds (required), playlistName (required), mode.

playlist_buildSmartB

Create a playlist using smart composition rules (energy curve, key progression, BPM range, artist diversity). Creates backup.

Inputs: rules (required), playlistName (required).

playlist_createB

Create a new playlist. Creates automatic backup.

Inputs: name (required), parentName.

playlist_deleteA

Delete a playlist. DESTRUCTIVE - Creates automatic backup. Set force=true to confirm.

Inputs: playlistName (required), force.

playlist_removeTracksA

Remove tracks from a playlist. Creates automatic backup.

Inputs: trackIds (required), playlistName (required).

playlist_renameA

Rename a playlist. Creates automatic backup.

Inputs: newName (required), oldName (required).

rekordbox_exportXmlC

Export library to Rekordbox XML file. Creates automatic backup.

Inputs: outputPath (required).

rekordbox_importXmlB

Import library from Rekordbox XML file. Creates backup before loading.

Inputs: xmlPath (required).

rekordbox_syncC

Import from or export to Rekordbox. Action: "import" (from XML or DB) or "export" (to XML). Creates backup for import operations.

Inputs: action (required), source, destination.

search_keyCompatibleA

Find tracks compatible with a source key using Camelot harmonic mixing rules.

Inputs: key (required), limit, offset.

setlist_analyzeC

Analyze a playlist or list of tracks for energy, harmonic compatibility, gaps, and diversity.

Inputs: track_ids, playlist_name.

setlist_suggestTransitionsB

For each track in a playlist, suggest 2-3 possible next tracks with transition tips and compatibility scores.

Inputs: track_ids, playlist_name, limit_per_track.

track_getB

Get detailed information about a specific track by its ID.

Inputs: trackId (required), include.

track_playlistsB

Get all playlists that contain a specific track.

Inputs: trackId (required).

track_updateA

Update metadata for a single track. Creates automatic backup.

Inputs: trackId (required), updates (required).

track_updateBatchA

Update metadata for multiple tracks in one request. Creates automatic backup.

Inputs: updates (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 33 tools

    Disambiguation2/5

    Several tools overlap significantly: rekordbox_importXml, library_load, and rekordbox_sync's 'import' action all load Rekordbox XML files, while library_search, library_fuzzySearch, and search_keyCompatible all provide search functionality with unclear boundaries. This will likely cause an agent to select the wrong tool.

    Naming Consistency2/5

    Naming follows a mixed pattern: some tools use verb_noun (playlist_create, library_search), others use noun_verb (track_get, library_load), and camelCase appears inconsistently (buildSmart, keyCompatible, bpmCacheSet). The arbitrary prefixes (dj_, rekordbox_, library_, track_, setlist_) further break predictability.

    Tool Count2/5

    At 33 tools, the server is over-granular, exceeding the typical recommended range. Many tools could be consolidated (e.g., rekordbox_importXml and library_load are nearly identical), suggesting the count is bloated rather than well-scoped.

    Completeness3/5

    The server covers most core workflows: library loading and search, playlist CRUD, track updates, history analytics, and setlist suggestions. However, notable gaps exist—no track deletion, and the import/export paths are redundant and confusing, which may cause dead ends for agents.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for rekordbox DJ database access. Provides read-only querying of tracks, playlists, and DJ session history from encrypted rekordbox SQLite databases using pyrekordbox.
      25
      130
      Python
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      An MCP server for bulk Spotify operations enabling batch playlist creation, library exports, and large-scale library management with confidence scoring and human-in-the-loop for uncertain matches.
      33
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A comprehensive MCP server for rekordbox database management with real-time database access, enabling track search, playlist operations, library analytics, and DJ history retrieval.
      31
      MIT