MCP DJ™——DJ列表创建器
基于本地Rekordbox库构建的AI驱动的DJ集表生成器,具有谐波混合和能量弧规划功能。
\[!注意\] 人工智能不能取代人类在舞池中的情感、感受和共鸣,但它可以帮助你提升它,明智地使用它;)
______________________________________________________________________
特性
- 谐波混频 --Camelot车轮兼容性评分
- 能源弧规划 --5个配置文件:
journey,build,peak,chill,wave - AI聊天界面 --Claude驱动的自然语言集列表请求
- MyTag感知集合构建 —
build_set_from_prompt在应用谐波/能量评分之前,使用您的Rekordbox我的标签筛选候选人 - 集中式图书馆索引 --JSONL索引合并Rekordbox元数据、Essentia音频特征和MIK数据;在启动时构建,在分析过程中逐步更新
- 混合密钥集成 --在可用时使用您的MIK能量额定值(可选)
- Essentia音频分析 --基于机器学习的BPM、键、情绪、流派和音乐标记(可选)
- 推荐导出 --直接在Rekordbox库中创建播放列表
- Claude代码斜线命令 —
/build-set,/dj-library,/export-set用于快速编辑工作流程 - 两个接口 --适用于克劳德桌面的FastAPI web UI+FastMCP服务器
______________________________________________________________________
运作原理
1.用通俗易懂的语言提问
描述你想要的曲目集——持续时间、氛围、流派、能量。人工智能会将你的请求转化为你自己的Rekordbox库中的评分曲目选择。
Generate a setlist from a natural language prompt
______________________________________________________________________
2.探索它能做什么
不确定从哪里开始?问 *“我能用DJ列表创建器做什么”* 它将引导您完成所有功能——库搜索、集列表生成、谐波流分析和Rekordbox导出。
______________________________________________________________________
3.深入推理
提出后续问题,如 *“你怎么确定这是较暗的声音?”* 人工智能准确地解释了它使用了哪些信号——类型标签、能量分布、卡米洛特键范围——以及它的局限性。
Explanation of how darker sound is determined
______________________________________________________________________
4.直接导出到Rekordbox
一旦你对设置列表满意,让它按名称创建一个Rekordbox播放列表。播放列表会立即出现在您的库中,随时可用。
Export setlist as a Rekordbox playlist via chat
______________________________________________________________________
5.在Rekordbox中打开它并播放
导出的播放列表显示在Rekordbox中,所有曲目按顺序排列,BPM和按键可见,准备加载到甲板上。
Exported playlist open in Rekordbox
______________________________________________________________________
建筑
Your Rekordbox library (read-only)
│
▼
RekordboxDatabase ← pyrekordbox / SQLCipher
│
▼
LibraryIndex ← JSONL index: Rekordbox + Essentia + MIK merged per track
│ Built at startup, updated incrementally during analysis
▼
EnergyResolver ← Essentia cache → MIK CSV (optional) → BPM heuristic
│
▼
SetlistEngine ← Camelot wheel scoring + energy arc planning
│ Candidate pool filtered from index via My Tags
┌────┴────┐
▼ ▼
FastAPI FastMCP
Web UI Claude Desktop / Claude Code| 模块 | 角色 |
|---|---|
database.py | 只读Rekordbox 6通过pyrekordbox访问 |
library_index.py | 集中式JSONL索引——合并Rekordbox+Essentia+MIK;动态属性扫描 |
camelot.py | 卡米洛特车轮——谐波兼容性评分 |
energy.py | 能量分辨率:Essentia缓存→ MIK CSV→ 相册标签→ BPM启发式 |
energy_planner.py | 5种能量电弧曲线(行程、构建、峰值、冷却、波动) |
setlist_engine.py | 贪婪的赛道选择,谐波+能量+BPM评分 |
essentia_analyzer.py | ML音频分析:BPM、按键、情绪、流派、标签(可选) |
analyze_library.py | 使用并行工作器进行批量库分析;增量索引更新 |
analyze_track.py | 单轨分析CLI入口点 |
ai_integration.py | Claude API,具有工具调用、对话历史记录、回退模式 |
app.py | FastAPI web用户界面 |
mcp_server.py | 克劳德桌面版FastMCP服务器 |
______________________________________________________________________
MCP工具
| 工具 | 说明 |
|---|---|
build_set_from_prompt | 自然语言→ 使用库索引中的“我的标签”过滤,和谐排序的集合列表 |
generate_setlist | 显式参数(类型、BPM、能量分布)的集合列表 |
plan_set | 基于氛围的集合规划(场地、人群、时间) |
rebuild_library_index | 重建JSONL索引+动态属性摘要 |
get_library_attributes | 完整的动态属性摘要:标签层次结构、每个标签的BPM/能量/情绪、类型统计、共现 |
get_track_full_info | 一首曲目的完整合并记录(Rekordbox+Essentia+MIK) |
search_library | 按查询、我的标签或日期范围搜索曲目 |
recommend_next_track | 当前播放曲目的谐波+能量建议 |
get_track_compatibility | 两条特定轨道之间的兼容性分析 |
analyze_track | 在单个文件上运行Essentia音频分析 |
analyze_library_essentia | 使用Essentia批量分析整个库 |
export_setlist_to_rekordbox | 从生成的集合列表创建Rekordbox播放列表 |
______________________________________________________________________
需求
前面不需要其他东西。 主安装程序自动处理Python 3.12、uv、所有包、Rekordbox设置和Claude Desktop注册。
______________________________________________________________________
快速开始
macOS/Linux——从零开始的一个命令
# With Essentia ML audio analysis (recommended):
./install-master.sh --essentia
# Core only (faster, no audio analysis):
./install-master.shWindows--打开PowerShell并运行:
# Allow scripts to run (one-time, current user only):
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
# With Essentia ML audio analysis (recommended):
.\install-master.ps1 -Essentia
# Core only:
.\install-master.ps1这两个脚本都安装Python 3.12、uv、所有项目依赖项,配置Rekordbox访问权限,创建您的 .env,在Claude Desktop中注册MCP服务器,并可选择运行完整的库分析——一次完成。不需要预先安装Python或包管理器。
# After install, start the web UI:
./run-server.sh
# Opens at http://localhost:8888已经有Python和uv了吗? 跑./install.sh(macOS/Linux)或查看docs/setup.md手动安装路径。
______________________________________________________________________
配置
所有配置都是通过环境变量进行的。复制 .env.example 到 .env 并编辑:
| 变量 | 默认值 | 描述 |
|---|---|---|
ANTHROPIC_API_KEY | _(无)_ | API密钥。如果未设置,则返回基于规则的模式。 |
SETLIST_PORT | 8888 | web UI的端口。 |
MIK_CSV_PATH | _(无)_ | 通往混合钥匙的道路 Library.csv 出口。如果未设置,则功能禁用。 |
REKORDBOX_DB_PATH | 自动检测 | 如果Rekordbox位于非标准位置,则覆盖Pioneer目录路径。 |
Essentia音频分析(可选,推荐)
Essentia提供基于机器学习的每首曲目分析:BPM准确性、按键检测、可跳舞性、EBU R128响度、情绪概率(快乐、悲伤、攻击性、放松、聚会)、Discogs400流派评分和MagnaTagaATune音乐标签。
结果缓存在 .data/essentia_cache/ --每条轨迹只分析一次。库索引会随着每个轨迹的完成而递增更新,因此您可以在分析仍在运行时构建集。
# Install essentia + download ML models (~300 MB, one-time)
./install.sh --essentia
# Analyze your full library (skip already-cached tracks)
./analyze-library.sh
# Re-analyze everything
./analyze-library.sh --force
# Use parallel workers for faster analysis
./analyze-library.sh --workers 4
# Download/update models separately
./download_models.sh图书馆索引
图书馆索引(.data/library_index.jsonl)将所有跟踪数据合并到一个JSONL文件中,用于My Tag过滤和属性查找。它在服务器启动时自动构建(如果超过1小时,则刷新),并在任何批处理分析运行后重建。
要强制进行完全重建,请执行以下操作:
# Via MCP tool (in Claude Desktop or Claude Code)
rebuild_library_index(force=True)混合键(可选)
混合输入键的能量数据为设置列表发动机提供了准确的每条轨道的能量额定值。没有Essentia或MIK,能量是从BPM和流派标签中推断出来的。
要启用:
- In混合键→ 将库导出为CSV
- 集
MIK_CSV_PATH=/path/to/Library.csv在你的.env
______________________________________________________________________
克劳德桌面集成(MCP)
MCP服务器通过项目的virtualenv运行(.venv).对每个平台使用相同的样式:
- 打开
claude_desktop_config.json在这个回购中。 - 替换
/path/to/mcp_dj随着 绝对路径 到您机器上的这个仓库。 - 合并
mcpServers将块插入操作系统的Claude Desktop配置中:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json
- 重新启动克劳德桌面。
macOS/Linux --条目使用bash和项目venv:
"mcp-dj": {
"command": "/bin/bash",
"args": ["-c", "cd '/path/to/mcp_dj' && exec .venv/bin/python3 -m mcp_dj.mcp_server"]
}视窗 --使用 cmd 以及Windows venv路径:
"mcp-dj": {
"command": "cmd",
"args": ["/c", "cd /d \"C:\\path\\to\\mcp_dj\" && .venv\\Scripts\\python.exe -m mcp_dj.mcp_server"]
}跑 ./install-master.sh (macOS/Linux)或 .\install-master.ps1 (Windows)自动添加此条目。或者跑 ./install.sh 如果你已经设置了Python和uv。
或者手动运行MCP服务器:
./run-mcp.sh______________________________________________________________________
Claude代码Slash命令
如果您使用Claude Code(CLI),则可以在中使用三个斜线命令 .claude/commands/:
| 命令 | 它的作用 |
|---|---|
/build-set [prompt] | 从自然语言提示构建DJ集——通话 build_set_from_prompt,使用能量火花线格式化轨迹列表表,并提供导出/调整操作 |
/dj-library [query] | 浏览你的库——按标签、流派、艺术家或曲目搜索;显示库统计信息和完整的MyTag层次结构 |
/export-set [name] | 将最近生成的集导出到Rekordbox作为命名播放列表 |
例子:
/build-set 90min sunset progressive house, start melodic then build to peak
/dj-library Festival
/export-set Sunset Set Feb 2026______________________________________________________________________
项目结构
dj-setlist-creator-mcp/
├── mcp_dj/
│ ├── app.py # FastAPI web application
│ ├── mcp_server.py # FastMCP server for Claude Desktop
│ ├── models.py # Pydantic data models
│ ├── database.py # Rekordbox database layer (read-only)
│ ├── library_index.py # Centralized JSONL library index + dynamic attributes
│ ├── camelot.py # Camelot wheel harmonic mixing engine
│ ├── energy.py # Energy resolution (Essentia / MIK CSV / BPM heuristic)
│ ├── energy_planner.py # Energy arc profiles
│ ├── setlist_engine.py # Core setlist generation algorithm
│ ├── essentia_analyzer.py # ML audio analysis (BPM, key, mood, genre, tags)
│ ├── analyze_library.py # Batch library analysis with parallel workers
│ ├── analyze_track.py # Single-track analysis CLI entry point
│ ├── ai_integration.py # Claude API integration with tool calling
│ └── static/
│ └── index.html # Web UI
├── .claude/
│ └── commands/
│ ├── build-set.md # /build-set slash command
│ ├── dj-library.md # /dj-library slash command
│ └── export-set.md # /export-set slash command
├── tests/
├── screenshots/
├── .data/ # Git-ignored: Essentia cache, ML models, library index
│ ├── essentia_cache/ # Per-track analysis JSON cache
│ ├── models/ # ML model files (~300 MB, downloaded once)
│ ├── library_index.jsonl # Merged track index (Rekordbox + Essentia + MIK)
│ └── library_attributes.json # Dynamic attribute summary (tags, genres, BPM/energy)
├── install-master.sh # ← START HERE (macOS/Linux): zero-to-running, no Python needed
├── install-master.ps1 # ← START HERE (Windows): zero-to-running, no Python needed
├── install.sh # Standard install (requires Python + uv already installed)
├── analyze-library.sh # Batch-analyze Rekordbox library with Essentia
├── download_models.sh # Download Essentia ML models
├── run-server.sh # Start the web UI
├── run-mcp.sh # Start the MCP server
├── docs/ # Full documentation (setup, library analysis, building sets, reference)
├── .env.example # Configuration template
└── pyproject.toml______________________________________________________________________
发展
# Run tests
uv run pytest
# Run on a custom port
SETLIST_PORT=9000 ./run-server.sh______________________________________________________________________
许可证
麻省理工学院
