⚠️ 贝塔: 该项目目前处于测试阶段。功能可能会发生变化,您可能会遇到错误。欢迎反馈和贡献!
xLights MCP服务器
给它一个 .mp3,它将分析节拍、歌曲结构和能量,然后生成一个有效的 .xsq 序列文件,其中包含放置在所有灯光模型上的效果,并与音乐同步。
______________________________________________________________________
它的作用
🎵 音频分析
- 节拍和节奏检测 --识别每个节拍、下节拍和条形边界
- 歌曲结构 --检测前奏、韵文、合唱、桥牌和外音部分
- 频谱 --随时间变化的低音、中音和高音能量曲线
- 能源分析 --响度动态、峰值检测、动态范围
- 源分离 --通过以下方式隔离人声、鼓声、低音和其他声部 德马克斯 (可选)
💡 序列生成
- 生成有效
.xsq文件 直接在xLights中打开——生成过程中不需要xLights GUI - 读取您的实际节目配置 --了解您的模型、控制器、通道计数和模型类型
- 智能效果选择 --根据模型类型(拱门得到追逐,树木得到螺旋等)和音乐特征(节拍)选择效果→ 冲击波、合唱→ 高能量,诗句→ 温和)
- 主题感知调色板 --圣诞节(红色/绿色/金色)和万圣节(橙色/紫色)配色方案
- 三种发电模式:
- 自动 --AI选择一切,你在xLights中查看 - 引导 --AI显示歌曲结构,您可以选择每个部分的效果 - 模板 --定义可重复使用的效果食谱,人工智能将其置于节拍上
- 从不覆盖 --现有序列是安全的;生成的文件得到
(generated N)后缀
📦 序列导入和重映射
- 导入社区序列 --采取任何
.xsq或.zip从xLights社区打包并将其重新映射到您的节目布局 - 智能模型匹配 --按名称、类型和像素数自动将导入的模型映射到您的模型
- Zip包支持 --提取音频、视频、着色器和图像资源;重写硬编码的文件路径
- 歌唱模特意识 --歌唱面孔模特只能与其他歌唱模特相匹配
- 完整地图报告 --查看匹配的内容、匹配方式和跳过的内容
- 手动超控 --在生成重新映射的序列之前更正任何映射
📡 FPP集成
- 检查状态 你的猎鹰Pi玩家
- 上传序列 (.fseq+音频)转换为FPP
- 管理播放列表 --列表、开始、停止
- 与FPP的REST API配合使用
______________________________________________________________________
先决条件
- Python 3.11+
- 紫外线 (推荐)或pip
- FFmpeg --用于音频格式处理(
brew install ffmpeg在macOS上,apt install ffmpeg在Linux上) - xLights --安装时至少配置了一个显示文件夹
______________________________________________________________________
安装
步骤1:克隆存储库
git clone https://github.com/JohnBreault/xlights-mcp-server.git
cd xlights-mcp-server步骤2:创建虚拟环境并安装
uv venv
uv pip install -e .增强功能的可选附加功能:
# Stem separation — isolates vocals/drums/bass for smarter sequencing (~2GB model download)
uv pip install -e ".[separation]"
# Lyrics/singing faces — transcribes vocals for lip-sync animation
uv pip install -e ".[lyrics]"
# Better beat detection
uv pip install -e ".[beats]"
# Everything
uv pip install -e ".[all]"步骤3:显示文件夹配置
首次运行时,服务器 自动检测 xLights通过扫描常见位置显示文件夹:
| OS | 已检查位置 |
|---|---|
| macOS | ~/Library/Mobile Documents/com~apple~CloudDocs/xLights/, ~/Documents/xLights/ |
| 窗户 | ~/Documents/xLights/ |
| Linux | ~/Documents/xLights/, ~/xLights/, /opt/xLights/ |
它查找包含以下内容的目录 xlights_rgbeffects.xml (文件xLights在每个显示文件夹中创建)。
如果自动检测未找到您的文件夹,创建或编辑 ~/.xlights-mcp/config.json:
{
"show_folders": {
"christmas": "/path/to/your/xLights/Christmas",
"halloween": "/path/to/your/xLights/Halloween"
},
"active_show": "christmas",
"fpp": {
"host": "fpp.local",
"port": 80
}
}步骤4:连接到您的AI工具
服务器使用 stdio传输 --您的AI工具将其作为子流程启动。
GitHub Copilot CLI
添加 ~/.copilot/mcp-config.json:
{
"mcpServers": {
"xlights": {
"command": "uv",
"args": ["run", "--directory", "/path/to/xlights-mcp-server", "xlights-mcp-server"]
}
}
}保存后重新启动Copilot CLI。
Claude Desktop
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"xlights": {
"command": "uv",
"args": ["run", "--directory", "/path/to/xlights-mcp-server", "xlights-mcp-server"]
}
}
}保存后重新启动Claude Desktop。
VS Code + Copilot Chat
添加到您的VS代码 settings.json:
{
"mcp": {
"servers": {
"xlights": {
"command": "uv",
"args": ["run", "--directory", "/path/to/xlights-mcp-server", "xlights-mcp-server"]
}
}
}
}Cursor
添加到光标MCP设置(设置→ MCP服务器→ Add):
- 姓名: xlights
- 命令:
uv - Args:
run --directory /path/to/xlights-mcp-server xlights-mcp-server
Other MCP clients
任何支持 模型上下文协议 可以使用此服务器。指向:
command: uv
args: run --directory /path/to/xlights-mcp-server xlights-mcp-server
transport: stdio替换 /path/to/xlights-mcp-server 使用克隆仓库的实际路径。
______________________________________________________________________
用法
连接后,通过人工智能工具中的自然语言与服务器进行交互。以下是一些示例工作流:
探索您的节目
> List my xLights shows
> Switch to the Halloween show
> List all my light models
> Show me the controllers
> What sequences do I have?
> Inspect the "Deck The Halls" sequence分析一首歌
> Analyze the song ~/Music/Jingle Bell Rock.mp3
> Show me the song structure for ~/Music/Monster Mash.mp3
> Get the beat map for this song
> What's the energy profile look like?生成序列
> Create a sequence for ~/Music/Jingle Bell Rock.mp3
> Create a sequence for ~/Music/Jingle Bell Rock.mp3 using red and green colors
> Preview what a sequence would look like for this song before creating it生成时,系统会要求您选择一种模式:
- 自动 --全自动,AI选择效果和颜色
- 引导的 --先看歌曲结构,然后选择每个部分的效果
- 模板 --将保存的效果配方应用于检测到的部分
导入社区序列
> Import the sequence ~/Downloads/Holly Jolly Christmas SD.zip to my show
> Import ~/Downloads/Christmas Time.xsq and show me the model mapping
> Import this sequence but map "Arch Left" to my "Arches-1" model导入程序支持两种独立模式 .xsq 文件和 .zip 软件包(包括音频、视频资源和源节目的模型数据)。它使用以下命令自动将导入序列中的模型与布局进行匹配:
- 名称完全匹配 → 相同的型号名称
- 相似词 → 共享单词,如“雪花”、“拱门”、“树”
- 型号 → same
display_as类型(例如,两个拱门) - 像素数 → 彼此相距70%以内
- 手动超控 → 您可以选择特定的映射
管理FPP(控制器在线时)
> Check the FPP status
> List playlists on FPP
> Start the Christmas playlist
> Stop playback______________________________________________________________________
可用工具
展会管理
| 工具 | 说明 |
|---|---|
list_shows | 列出所有已配置的xLights显示文件夹 |
switch_show | 切换活动节目文件夹 |
list_models | 列出所有灯具型号,包括类型、控制器和类别信息 |
list_controllers | 列出具有IP、协议和通道计数的控制器 |
list_sequences | 列出全部 .xsq 活动节目中的序列文件 |
inspect_sequence | 显示序列中使用的歌曲信息、持续时间、效果和模型 |
list_effects | 列出所有可用的xLights效果及其说明 |
音频分析
| 工具 | 说明 |
|---|---|
analyze_song | 全音频分析:节拍、结构、频谱、能量 |
get_song_structure | 检测韵文/合唱/桥段/前奏/外音部分 |
get_beat_map | 获取节拍时间戳、节拍、节奏和起始点 |
get_energy_profile | 获取响度曲线和低音/中频/高频段能量 |
序列生成
| 工具 | 说明 |
|---|---|
create_sequence | 生成一个 .xsq 文件来自 .mp3 对所有型号都有影响 |
preview_plan | 预览生成计划而不写入文件 |
序列导入和重映射
| 工具 | 说明 |
|---|---|
import_sequence | 导入a .xsq 或 .zip 将模型按顺序打包并重新映射到您的布局 |
FPP集成
| 工具 | 说明 |
|---|---|
fpp_status | 检查FPP连接和播放状态 |
fpp_upload_sequence | 上传 .fseq 并将音频传输到FPP |
fpp_list_playlists | 列出FPP上的所有播放列表 |
fpp_start_playlist | 启动播放列表(可选择重复) |
fpp_stop | 停止当前播放 |
______________________________________________________________________
运作原理
效果选择逻辑
服务器映射 模型类型 达到适当效果:
| 模型类型 | 最佳效果 |
|---|---|
| 拱门 | 单股,追逐,洗色,变形 |
| 树 | 螺旋、风车、流星、圆圈 |
| 单线 | 追逐、变形、单线、闪光 |
| 折线 | 追逐、单股、闪烁、变形 |
| 窗框 | 侯框,洗色,开,窗帘 |
| 自定义形状 | 冲击波、圆形、等离子、闪烁、扭曲 |
还有地图 音乐特征 实现选择:
| 音乐特色 | 效果 |
|---|---|
| 强拍 | 冲击波、变形、频闪 |
| 节奏乐段 | 单股、追逐、酒吧、侯爵 |
| 高能量(合唱) | 追逐,流星,单股 |
| 低能量(诗) | 闪烁、闪亮、洗色、雪花 |
| 持续音符 | 等离子、风车、螺旋、银河 |
| 过渡 | 扭曲、窗帘、变形 |
| Intro/Outro | 窗帘,洗色,闪闪发光 |
文件格式
生成 .xsq 文件是标准的xLights XML,包含:
- `` --歌曲元数据、媒体文件路径、持续时间、定时(25ms帧)
- `` --用于效果的主题调色板
- `` --重复数据消除效果参数定义
- `` --序列中包含的所有模型
- `` --每个模型、每层和时间的效果放置
______________________________________________________________________
项目结构
xlights-mcp-server/
├── pyproject.toml
├── README.md
├── src/xlights_mcp/
│ ├── server.py # MCP server entry point & tool definitions
│ ├── config.py # Configuration management
│ ├── audio/
│ │ ├── analyzer.py # Full analysis pipeline orchestrator
│ │ ├── beats.py # Beat/tempo/onset detection (librosa + madmom)
│ │ ├── structure.py # Song section detection (verse/chorus/bridge)
│ │ ├── spectrum.py # Frequency band & energy analysis
│ │ └── separator.py # Demucs stem separation (optional)
│ ├── xlights/
│ │ ├── show.py # Show folder parser (networks + models XML)
│ │ ├── xsq_reader.py # Parse existing .xsq sequences
│ │ ├── xsq_writer.py # Generate .xsq XML files
│ │ ├── effects.py # Effect library & model/music mappings
│ │ ├── palettes.py # Color palette definitions & themes
│ │ └── models.py # Data models (Controller, LightModel, etc.)
│ ├── sequencer/
│ │ └── engine.py # Sequence generation engine (auto/guided/template)
│ └── fpp/
│ ├── client.py # FPP REST API client
│ ├── upload.py # Sequence upload to FPP
│ └── schedule.py # Schedule management
└── tests/______________________________________________________________________
故障排除
MCP服务器未加载
- 验证您的MCP配置文件是有效的JSON(无注释,无尾随逗号)
- 检查
--directory路径指向repo根(其中pyproject.toml是) - 配置更改后重新启动AI工具
- 手动测试:
cd /path/to/xlights-mcp-server && uv run xlights-mcp-server--应该没有错误地启动
“未找到xLights显示文件夹”
- 确保xLights已安装,并且您至少打开过一次(它会创建
xlights_rgbeffects.xml在每个显示文件夹中) - 如果您的节目文件夹位于非标准位置,请将其添加到
~/.xlights-mcp/config.json
“未找到模型”错误
- 验证显示文件夹是否包含
xlights_networks.xml和xlights_rgbeffects.xml - 使用
list_shows检查哪个节目处于活动状态以及路径是否存在
音频分析速度慢
- 第一次运行下载librosa数据(~10MB);后续运行速度更快
- Demucs词干分离在CPU上每首歌需要30-60s;结果已缓存
- 如果没有可选的deps,分析每首歌大约需要5秒
xLights中生成的序列看起来不正确
- 这
.xsq是一个起点--调整xLights中的效果、时间和调色板 - 使用
inspect_sequence查看打开前生成的内容
FPP连接失败
- 验证FPP是否已通电且位于同一网络上
- 检查中的主机名/IP
~/.xlights-mcp/config.json - FPP工具优雅地报告连接错误;核心生成完全离线工作
______________________________________________________________________
许可证
麻省理工学院
