Ask AI about your Serato library: harmonic search, crate audits, previewed crate building.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Ask Claude about your Serato DJ library: find tracks that mix harmonically by BPM and Camelot key, browse your crates, audit the library for duplicates and missing files, and have new crates built for you, shown to you before anything is written. It works through the Model Context Protocol (MCP), the standard way AI apps such as Claude Desktop, Claude Code, Cursor and VS Code connect to tools on your computer: this is a small local server that answers from your library and sends nothing anywhere itself.
Status: experimental. Pre-1.0 and actively developed: a minor version may change behaviour or break compatibility, a patch never does.
[!IMPORTANT] Not affiliated with, endorsed by, or supported by Serato. Serato and Serato DJ are trademarks of their respective owner. This project reads a reverse-engineered database layout and can stop working after any Serato update.
Once the server is connected, you talk to your assistant as usual:
With crate writing switched on:
The assistant does the searching; the server answers from your library and, when asked, writes only what you approved.
Works on macOS. Tested with Serato DJ Lite 4.0.9 on macOS; the test suite runs in CI on macOS and Linux with Node.js 22.16 and 24. Windows is untested β see Compatibility. The Claude Desktop extension and the Claude Code setup below were tried by hand on macOS; the Cursor and VS Code setups follow those editors' documentation and have not been tried.
Every setup starts the server read-only. Crate writing is a separate switch, described below.
As an extension (no Node.js needed). Download serato-dj-mcp-<version>.mcpb from the
latest release (attached
from version 0.1.1 on) and open it; Claude Desktop shows what it contains and installs it. Its
settings let you point it at a library folder and switch on crate writing or raw SQL; all three
can stay as they are.
Or by hand, with Node.js 22.16 or newer installed: open Settings β
Developer β Edit Config and add the server to claude_desktop_config.json, then restart Claude
Desktop.
Add --scope user before serato to have it in every project. The repository is also a Claude
Code plugin that starts the same command.
Add to Cursor,
or add the same mcpServers entry as for Claude Desktop to ~/.cursor/mcp.json. The link opens
cursor://anysphere.cursor-deeplink/mcp/install?name=serato&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNlcmF0by1kai1tY3AiXX0=,
which asks Cursor to add {"command":"npx","args":["-y","serato-dj-mcp"]} under the name serato.
Install in VS Code, or from a terminal:
Add options after serato-dj-mcp in args, for example
"args": ["-y", "serato-dj-mcp", "--allow-writes"]:
--library <path> β the Serato library folder (the one holding master.sqlite). Not needed on
macOS, where the library in ~/Library/Application Support/Serato and on mounted drives is
found automatically.--allow-writes β crate writing, see below.--allow-raw-sql β adds run_sql, read-only SQL for developers.All options are listed under Options.
node:sqlite is an experimental Node API and prints a warning to stderr; that is expected and
harmless, because the MCP protocol travels over stdout.
Then use "command": "node" with "args": ["/absolute/path/to/serato-dj-mcp/dist/index.js"], or
claude mcp add serato -- node /absolute/path/to/serato-dj-mcp/dist/index.js.
What the server reads, writes and sends is in PRIVACY.md: it makes no network requests and has no telemetry.
| Serato DJ 4.x | Supported. Developed and tested against Serato DJ Lite 4.0.9 (library schema 202). Other 4.x schema versions are read with a schema_unknown warning. Serato DJ Pro 4.x is expected to use the same library format but has not been tested. |
| Serato DJ 3.x | Detected and reported, not read (it keeps a binary database V2 instead of SQLite). |
| macOS | Supported. This is where the project is developed, and CI runs on it. |
| Windows | Untested. The server has no Windows-specific handling: pass --library explicitly, because automatic discovery only knows the macOS layout, and expect macOS-style cache and state directories under your user folder. The "is Serato running" check uses ps, which Windows does not have, so apply_changes may refuse to write rather than guess. |
| Linux | Serato does not run on Linux; the test suite runs there in CI on synthetic fixtures. |
| Node.js | 22.16 or newer, because backup() from node:sqlite lands there. Not assumed: CI runs the whole suite on 22.16 and on 24, on macOS and on Ubuntu. |
| Claude Desktop extension | Runs in Claude Desktop's own Node.js, not yours. Checked by hand on 2026-09-24 with Claude Desktop 2.7032.0 on macOS, whose built-in Node.js is 24.21: installed, then list_libraries and list_crates answered with the library's data. |
Everything this server assumes about the Serato library is written down in docs/serato-4x-notes.md, with the measurement behind each claim.
By default the server never writes to Serato's files. Every read goes through a snapshot
copy of the library database in --cache-dir, so a question from the assistant cannot change your
library, whether Serato is open or not.
Two flags widen that, and each registers extra tools only when it is given β a tool that does not exist cannot be called by mistake:
--allow-raw-sql adds run_sql: read-only SELECT against the snapshot, returning raw rows.--allow-writes adds stage_crate, preview_changes, apply_changes and discard_changes.
Writing is split in two: crates are staged first, which never touches the library, and are
applied only when you confirm and Serato is closed. Both databases are backed up before every
write. The details are in Writing to the library.list_libraries β the libraries this server can see, with version, schema
version and locations. Paths here are not redacted, so you can copy one into
--library.search_tracks β search by free text, BPM, key, genre, rating, date added, crate
membership and flags. Tonality is Camelot; a track whose key Serato itself could not
parse is still matched, and key_source says where the key came from. Paginated with an
opaque cursor; the default page is 25 tracks and nine fields.get_tracks β fetch tracks by the ids search_tracks returned. Unknown ids come back in
missing rather than being dropped.list_crates β the crates in the Serato Library space, with their display path and how many
distinct tracks each holds. Smart crates, space roots and Serato's other internal spaces
(such as the Prepare panel) are not listed.get_crate_tracks β the tracks of one crate, in the crate's own order. Only crates in the
Serato Library space can be given.audit_library β diagnose the library. Every check runs by default and reports a count plus
up to ten example track ids: tracks with no BPM, with no key at all, with a key Serato itself
cannot display, marked stale, in no crate, streaming-only, duplicated, and with broken paths.
duplicates reports groups instead of loose ids, because which track duplicates which is the
part you can act on. broken_paths reads Serato's own missing flag by default; pass
check_filesystem: true to also look on disk, which is opt-in because a stat against a
disconnected drive blocks for seconds. A drive that is not mounted is reported as such rather
than having all its tracks declared missing.run_sql β one read-only SELECT against a snapshot copy. Registered only
with --allow-raw-sql, because it returns raw rows with no path redaction.With --allow-writes:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/serato-dj-library)<a href="https://allmcps.com/mcp/serato-dj-library"><img src="https://allmcps.com/api/badge/serato-dj-library?style=directory" alt="Serato DJ library on AllMCPs" /></a>