Engine DJ Library Assistant (unofficial)
NPM · ENGINE-DJ-MCP · SCANNED SEP 25
Ask AI about your Engine DJ library: BPM/key search, audits, cues, opt-in playlist and tag edits.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to Venut-Technologies/engine-dj-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability35
- 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2975 tokens (~270/item across 11 items; 9 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage74
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 22% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the Engine DJ Library Assistant (unofficial) MCP server?
Engine DJ Library Assistant (unofficial) runs locally as an npm package, launched with npx -y engine-dj-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · engine-dj-mcp
claude mcp add venut-technologies-engine-dj-mcp -- npx -y engine-dj-mcp
{
"mcpServers": {
"venut-technologies-engine-dj-mcp": {
"command": "npx",
"args": [
"-y",
"engine-dj-mcp"
]
}
}
} {
"servers": {
"venut-technologies-engine-dj-mcp": {
"command": "npx",
"args": [
"-y",
"engine-dj-mcp"
]
}
}
} codex mcp add venut-technologies-engine-dj-mcp -- npx -y engine-dj-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"venut-technologies-engine-dj-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"engine-dj-mcp"
],
"enabled": true
}
}
} openclaw mcp add venut-technologies-engine-dj-mcp --command npx --arg -y --arg engine-dj-mcp
mcp_servers:
venut-technologies-engine-dj-mcp:
command: "npx"
args: ["-y", "engine-dj-mcp"] {
"McpServers": {
"venut-technologies-engine-dj-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"engine-dj-mcp"
]
}
}
} assistant mcp add venut-technologies-engine-dj-mcp -t stdio -c npx -a -y engine-dj-mcp
{
"mcpServers": {
"venut-technologies-engine-dj-mcp": {
"command": "npx",
"args": [
"-y",
"engine-dj-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Sept 26 71
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Sept 2026 · Analysed npm/engine-dj-mcp@0.17.2
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | Venut-Technologies/engine-dj-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/Venut-Technologies/engine-dj-mcp/.github/workflows/release.yml@refs/tags/v0.17.2 |
| Rekor log index | 2945225764 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:ffb62d5d07b8e6e871ab2f872d061c21efcf0e7c346b854e7403cecb2f25647098addccb6b26ecb402d188450900d9569d756aff64e9a46589a8970c0 |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
audit_library Audit the collection ~387
Run collection health checks. Available: missing_files, unavailable, unanalyzed, no_cues, no_beatgrid, missing_key, suspicious_bpm, duplicates, empty_metadata, orphan_entries, path_form_mismatch. missing_files resolves each track against the selected library's own folder. path_form_mismatch finds files that are there, but under a name in a different Unicode normalization form from the stored path -- macOS opens them anyway, Linux does not (measured on its exFAT driver), and Engine OS on a player is Linux, so these may fail to load on hardware while missing_files on a Mac reports nothing. no_cues means "no hot cue is set" -- the quickCues blob is decoded for this, since Engine writes one to every analysed track whether or not a pad is used -- while no_beatgrid means the beatData blob is absent or empty. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| checks | array | – | – |
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
No output schema declared.
No examples provided.
get_playlist_tracks Get the tracks in a playlist ~451
The tracks of one playlist, in playlist order -- from the PlaylistEntity.nextEntityId chain, not from row ids, so a track dragged up the list comes back where the DJ put it. Name the playlist with playlist_id, or with playlist_name (exactly one of the two). A name that matches several playlists is refused with every candidate's id and full path rather than picked between -- names are unique only within a folder, so pass the full `path` from get_playlists to disambiguate. Each row carries `position`, its 1-based place in the playlist. An entry whose track is not in this library comes back as { position, entry_id, track_id, missing: true } and keeps its slot, so entry_count still matches the playlist's own length; missing_count says how many of those there are. That is ordinary, not corruption -- entries outlive their tracks and arrive from other drives (see audit_library's orphan_entries). Same fields, limit and cursor conventions as search_tracks. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | – |
| fields | array | – | – |
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
| limit | integer | – | – |
| playlist_id | integer | – | – |
| playlist_name | string | – | – |
| redact_paths | boolean | – | – |
No output schema declared.
No examples provided.
get_playlists List playlists ~380
The library's playlist tree, in the order Engine DJ displays it -- taken from the Playlist.nextListId chain, which is where that order actually lives (the PlaylistPath view's `position` column runs the other way). Flat and in pre-order, so reading top to bottom is exactly the sidebar: `depth` and `path` carry the nesting, `parent_id` names the folder. is_folder means the list has child lists (Engine has no folder flag; a folder is a playlist other playlists sit under), so an emptied folder reads as an empty playlist. track_count is entries in that list alone, never rolled up from children, and missing_count is how many of them name a track that is not in this library. `warnings` appears when a link chain is broken or cyclic; nothing is ever dropped from the list because of one. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
| limit | integer | – | – |
No output schema declared.
No examples provided.
get_track_performance Get cues, loops and beatgrid ~448
Decode PerformanceData for one track: hot cues, the main cue, saved loops, the beatgrid and a coarse waveform profile. Each field carries its own decode status and its own layout marker. layout: "verified" (every field) means the binary layout was confirmed against a real Engine DJ library -- cue positions land inside the track, the beatgrid's implied tempo matches the analysed BPM, the waveform's declared point spacing multiplies back out to the track's sample count, and a saved loop spans a whole number of beats at that same analysed BPM -- so status: "ok" is a claim about the values, not just about the parse. layout: "unverified" would mean only that the bytes parsed; no field returns it today. Positions are sample offsets; sample_rate at the top level converts them to seconds, and cue/loop items carry the seconds already. Only hot-cue and loop slots that hold something are listed -- slots is how many the track has in total, so items: [] with slots: 8 means an analysed track with no cues set. Items are capped at 64; total gives the full count and truncated says whether the cap was hit. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | – |
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
No output schema declared.
No examples provided.
get_tracks Get tracks by id ~235
Fetch full metadata for specific track ids, in the order requested. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | – |
| ids | array | yes | – |
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
| redact_paths | boolean | – | – |
No output schema declared.
No examples provided.
list_libraries List Engine DJ libraries ~126
List every discovered library, including ones whose schema is unsupported. Re-scans on every call, so a drive plugged in after this server started is visible without a restart (the engine://libraries resource is a start-time snapshot). A library seen before but not readable right now (e.g. Engine DJ is writing to it) stays listed with status: "unreadable" and error set, instead of disappearing. Pass a listed uuid or path as the `library` argument of any other tool to act on that library; without it they use the supported library holding the most tracks.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
refresh_index Refresh the search index ~211
Rebuild the search index if the library has changed. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
No output schema declared.
No examples provided.
run_sql Run a read-only SQL query ~282
Escape hatch for questions the other tools do not cover. Read-only is enforced by the kernel, not by this check alone. Use side.track_derived.camelot and side.track_derived.tempo in WHERE clauses rather than the camelot()/tempo() SQL functions, which run per row and defeat indexes. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
| limit | integer | – | – |
| params | array | – | – |
| sql | string | yes | – |
No output schema declared.
No examples provided.
search_tracks Search tracks ~447
Search the Engine DJ library by text, tempo, key, rating, play history and analysis flags. Set include_total for a count alongside the page: it is capped at 1000, and a capped result comes back as total: 1000 with total_capped: true -- treat that as 'at least 1000', never as an exact count. flags.has_cues means a hot cue is actually set (the blob is decoded when the index is built), not merely that Engine analysed the track; flags.has_beatgrid means a beatData blob is present. playlist: {id} or {name} narrows the search to one playlist -- results still come back by relevance or id, not in playlist order; use get_playlist_tracks for that. With more than one library connected, pass `library` (a uuid or path from list_libraries, either the ~/... form or the absolute one) to choose which one; the default is the supported library with the most tracks.
| Name | Type | Req | Description |
|---|---|---|---|
| added | object | – | – |
| bpm | object | – | – |
| cursor | string | – | – |
| fields | array | – | – |
| flags | object | – | – |
| include_total | boolean | – | – |
| key | object | – | – |
| library | string | – | Which library to use: either the uuid or the path reported by list_libraries (the reported ~/... form is accepted, as is the absolute path). Omit it to use the supported library holding the most trac… |
| limit | integer | – | – |
| played | object | – | – |
| playlist | object | – | – |
| q | string | – | – |
| rating | object | – | – |
| redact_paths | boolean | – | – |
No output schema declared.
No examples provided.
What is the Engine DJ Library Assistant (unofficial) MCP server?
Engine DJ Library Assistant (unofficial) is an MCP server listed in the public MCP registry as io.github.Venut-Technologies/engine-dj-mcp. Ask AI about your Engine DJ library: BPM/key search, audits, cues, opt-in playlist and tag edits. This page covers its npm package (engine-dj-mcp).
Is the Engine DJ Library Assistant (unofficial) MCP server safe to use?
Engine DJ Library Assistant (unofficial) scores 71 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Engine DJ Library Assistant (unofficial) MCP server expose?
Engine DJ Library Assistant (unofficial) exposes 9 tools: search_tracks, get_tracks, get_playlists, get_playlist_tracks, get_track_performance, and 4 more. Their descriptions and schemas cost roughly 2,967 tokens of context every time the server is loaded.
Is the Engine DJ Library Assistant (unofficial) MCP server still maintained?
Engine DJ Library Assistant (unofficial) is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Engine DJ Library Assistant (unofficial) MCP server under?
Engine DJ Library Assistant (unofficial) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.