返回市场
卡拉拉-MCP服务器

卡拉拉-MCP服务器

作者:agrathwohl5 星标更新:2025-10-20

项目介绍

Carla MCP Server

一个全面的模型上下文协议(MCP)服务器,用于完全控制Carla音频插件宿主。该服务器通过大型语言模型实现了对专业音频制作流程的自然语言控制。

🎯 项目概述

Carla MCP Server 提供了7个功能类别中的45种工具,以实现完整的音频制作控制。使用Python 3.12+构建,它提供了一个生产就绪的接口,连接AI助手与专业音频软件。

主要特性:

  • 🤖 AI原生:设计用于通过LLMs进行自然语言控制
  • 🎛️ 完全控制:45种工具覆盖音频制作的所有方面
  • ⚡ 实时:低延迟监控和分析能力
  • 🔧 专业:具备全面错误处理和类型安全的生产就绪状态
  • 📈 可扩展:模块化架构支持复杂的工作流

🌟 您可以做什么

请求AI助手帮助完成专业音频任务:

  • “加载我的混音项目,并设置带有压缩的鼓母线”
  • “在主合成器上创建滤波扫频效果,并同步到节拍”
  • “分析我的混音并建议改进以获得更好的频率平衡”
  • “为不同副歌/高潮设置的歌词设置并行压缩”
  • “为现场表演准备此会话,确保低延迟”

🎛️ 完整功能集

🗂️ 会话管理(8种工具)

  • 加载/保存项目并自动连接
  • 创建A/B快照以进行比较
  • 在会话之间热切换并交叉淡入淡出
  • 导出/导入多种格式
  • 会话清理和优化

🔌 插件控制(8种工具)

  • 加载VST2/3、LV2、LADSPA、DSSI、AU、SF2/SFZ插件
  • 扫描目录以查找可用插件
  • 克隆并替换插件及其参数映射
  • 使用插件链进行批处理
  • 实时插件状态控制

🔗 音频路由(7种工具)

  • 复杂的音频/MIDI路由矩阵
  • 创建和管理分组的母线
  • 配置压缩的侧链
  • 实时路由矩阵检查

🎚️ 参数自动化(8种工具)

  • 具有多种曲线类型的高级自动化
  • 自定义范围的MIDI CC映射
  • 多参数宏控件
  • 直接参数获取/设置操作
  • 实时参数控制和监控

📊 实时分析(5种工具)

  • 具有可定制FFT的频谱分析
  • 音频电平计量(峰值、RMS、LUFS)
  • 延迟测量和优化
  • 反馈环路检测和预防
  • 参数随时间捕获

🔊 JACK集成(6种工具)

  • 端口管理和连接
  • 系统音频路由
  • 端口监控和状态
  • 插件的自动连接
  • 连接稳定性验证

🖥️ 硬件控制(3种工具)

  • 音频接口配置
  • 设备发现和管理
  • 控制表面映射
  • 支持监视器校准

🎓 MixAssist集成

  • 直接访问MixAssist研究数据集
  • 专业音频工程对话数据库
  • 来自专家的真实世界混音建议和技术
  • 上下文混音指导和故障排除资源

🚀 安装

先决条件

  1. Carla音频插件宿主

    # Ubuntu/Debian
    sudo apt install carla carla-dev
    
    # 或从源代码构建以获取最新功能
    git clone https://github.com/falkTX/Carla.git
    cd Carla
    make
    sudo make install
    
  2. Python环境

    # 需要Python 3.12+
    python3 --version  # 应该是3.12或更高版本
    
  3. 音频系统

    # 推荐使用JACK音频连接套件
    sudo apt install jackd2 jack-tools
    
    # 对于Linux上的Windows VST支持
    sudo apt install wine wine32 wine64
    

设置

  1. 克隆并安装

    git clone https://github.com/your-org/carla-mcp-server.git
    cd carla-mcp-server
    
    # 安装依赖项
    pip install -r requirements.txt
    
    # 或安装开发工具
    pip install -e ".[dev]"
    
  2. 配置环境

    # 设置Carla路径(根据您的安装调整)
    export CARLA_PATH=/usr/share/carla
    export PYTHONPATH=$CARLA_PATH/source/frontend:$PYTHONPATH
    export LD_LIBRARY_PATH=/usr/lib/carla:$LD_LIBRARY_PATH
    
  3. 测试安装

    # 运行测试套件
    pytest tests/
    
    # 测试Carla集成
    python -c "import carla_backend; print('Carla集成工作正常!')"
    

🎮 使用

快速开始

# 启动MCP服务器
python server.py

# 或带调试
python server.py --debug --log-level INFO

MCP客户端集成

添加到您的MCP客户端配置(例如,Claude Desktop):

{
  "mcpServers": {
    "carla-mcp": {
      "type": "stdio",
      "command": "python",
      "args": ["/path/to/carla-mcp-server/server.py"],
      "env": {
        "CARLA_PATH": "/usr/share/carla",
        "PYTHONPATH": "/usr/share/carla/source/frontend"
      }
    }
  }
}

快速设置:复制提供的.mcp.json.example文件,并根据您的系统调整路径。

自然语言示例

一旦连接到LLM,您可以使用自然语言执行复杂的音频任务:

基本混音会话

用户:"加载我的摇滚歌曲项目,并添加一个EQ来去除人声嗡嗡声并提高人声清晰度。"

AI:完美!我已经加载了您的项目,并优化了麦克风EQ以达到专业的人声质量:

  🎯 人声优化已应用:

  ✅ 消除嗡嗡声:
  - 50Hz: -12dB(去除次低频嗡嗡声)
  - 100Hz: -8dB(减少低频噪声)
  - 156Hz: -6dB(清理浑浊的低中频)

  ✅ 提高清晰度:
  - 2500Hz: +4dB(人声存在感)
  -  3500Hz: +6dB(语音清晰度)
  - 5000Hz: +3dB(清晰度和定义)

  ✅ 减少嘶音:
  - 10000Hz: -4dB(驯服刺耳的‘s’和‘t’声音)

  您的麦克风信号现在通过优化的EQ路由,提供了更干净、更专业的人声声音,减少了嗡嗡声,提高了清晰度,并控制了嘶音。这些设置遵循标准的流行/摇滚人声处理技术。

创意声音设计

用户:"在我的合成器垫上创建一个逐渐变化的滤波扫频,以建立紧张感"

AI:我将创建一个动态滤波自动化以建立紧张感:
1. 查找您的合成器垫插件
2. 设置指数滤波频率自动化
3. 添加共振自动化以增加特征
4. 将扫频同步到您的项目节拍

创建了一个16小节的滤波扫频,从微妙开始,逐渐达到强烈的顶峰,非常适合在您的编排中创造紧张感。

解决问题

用户:"我的混音听起来有些浑浊,还有一些轻微的反馈"

AI:让我分析并解决这些问题:
1. 运行频谱分析以识别浑浊的频率
2. 扫描您的路由中的反馈环路
3. 应用纠正性EQ以清除浑浊
4. 修复我发现的反馈路径

分析完成!在200-300Hz附近发现了堆积(应用了纠正性EQ),并且修复了您混响发送和输入之间的反馈环路。您的混音现在应该听起来更干净了。

分析一首歌曲的结构

用户:"分析我的VU表在整个歌曲期间的电平,并使用历史测量数据确定每个副歌、合唱和独奏部分的时间码起点。"

AI:让我开始分析您的VU表插件,共5分32秒(确切的混音长度,加上两秒钟以适应播放延迟。)

...

完成了我对您的VU表电平的分析!这是基于我处理的历史测量数据得出的歌曲音乐结构分解:

1. 00:02 - 引子
2. 00:28 - 第一节
3. 01:20 - 第一合唱
4. 01:50 - 第二节
5. 2:45 - 第二合唱
6. 3:32 - 独奏
7. 4:02 - 分解
8. 4:20 - 最后合唱
9. 5:12 - 结尾

🛠️ 开发

项目结构

carla-mcp-server/
├── server.py              # 主MCP服务器
├── carla_controller.py     # Carla后端包装器
├── tool_registry.py       # 工具注册系统
├── carla_types.py         # 类型定义和模式
├── base_tools.py          # 基础工具框架
├── mixassist_resources.py # MixAssist数据集集成
├── mixassist_schema.py    # MixAssist数据模式
├── tools/                 # MCP工具实现
│   ├── session_tools.py   # 会话管理
│   ├── plugin_tools.py    # 插件控制
│   ├── routing_tools.py   # 音频路由
│   ├── parameter_tools.py # 参数自动化
│   ├── analysis_tools.py  # 实时分析
│   ├── jack_tools.py      # JACK集成
│   └── hardware_tools.py  # 硬件控制
├── monitors/              # 实时监控
│   ├── audio_monitor.py   # 音频电平监控
│   ├── cpu_monitor.py     # 性能监控
│   └── event_monitor.py   # 事件流
├── tests/                 # 综合测试套件
├── .mcp.json.example      # 示例MCP配置
└── LICENSE                # GPL-2.0或更高版本许可证

运行测试

# 运行所有测试
pytest

# 运行覆盖率测试
pytest --cov=carla_mcp_server --cov-report=html

# 运行特定测试类别
pytest tests/test_server.py::TestSessionManagement

# 运行集成测试(需要Carla)
pytest tests/test_complete_suite.py

代码质量

# 格式化代码
black carla_mcp_server/

# 排序导入
isort carla_mcp_server/

# 类型检查
mypy carla_mcp_server/

# 代码检查
flake8 carla_mcp_server/

# 运行所有质量检查
pre-commit run --all-files

添加新工具

  1. 创建工具方法在适当的tools/模块中:

    async def my_new_tool(self, param1: str, param2: int = 10) -> dict:
        """工具描述用于文档。"""
        try:
            # 实现
            return {"success": True, "result": data}
        except Exception as e:
            return {"success": False, "error": str(e)}
    
  2. 注册工具tool_registry.py中:

    ToolDefinition(
        name="my_new_tool",
        description="MCP客户端的描述",
        handler="tool_class_name",
        input_schema={/* JSON模式 */}
    )
    
  3. 添加测试tests/中:

    async def test_my_new_tool():
        # 测试实现
    

🧩 完整工具参考

会话管理

  • load_session - 加载Carla项目文件
  • save_session - 保存当前会话状态
  • create_snapshot - 创建A/B比较快照
  • switch_session - 在会话之间热切换
  • list_sessions - 显示可用会话
  • delete_session - 删除会话
  • export_session - 导出到音频格式
  • import_session - 从外部格式导入

插件控制

  • load_plugin - 加载任何插件格式
  • scan_plugins - 发现可用插件
  • control_plugin - 激活/旁路/独奏/移除
  • batch_process - 将插件链应用于音频
  • list_plugins - 显示加载的插件
  • get_plugin_info - 详细的插件信息
  • clone_plugin - 复制插件及其设置
  • replace_plugin - 替换插件及其参数映射

音频路由

  • connect_audio - 创建音频连接
  • create_bus - 构建用于分组的音频母线
  • setup_sidechain - 配置侧链路由
  • get_routing_matrix - 查看完整的路由
  • disconnect_audio - 移除连接
  • create_send - 设置发送/返回效果
  • set_connection_gain - 调整连接电平

参数自动化

  • automate_parameter - 创建自动化曲线
  • map_midi_cc - MIDI控制器映射
  • set_parameter - 直接设置插件参数值
  • get_parameter - 获取插件参数值和信息
  • create_macro - 多参数宏
  • record_automation - 捕获参数更改
  • randomize_parameters - 创意随机化
  • morph_parameters - 平滑参数过渡

实时分析

  • analyze_spectrum - FFT频谱分析
  • measure_levels - 峰值/RMS/LUFS计量
  • capture_plugin_parameters - 参数随时间监控
  • detect_feedback - 反馈环路检测
  • analyze_latency - 系统延迟测量

JACK集成

  • list_jack_ports - 显示可用JACK端口
  • connect_jack_ports - 连接JACK端口
  • disconnect_jack_ports - 断开JACK端口
  • get_jack_connections - 查看端口连接
  • connect_system_to_plugin - 将系统音频路由到插件
  • connect_plugin_to_system - 将插件路由到系统输出

硬件控制

  • configure_audio_interface - 设置音频硬件
  • list_audio_devices - 发现音频设备
  • map_control_surface - 配置MIDI控制器

📖 文档

🔧 配置

服务器配置(config/config.yaml

server:
  host: localhost
  port: 8765
  log_level: INFO

carla:
  path: /usr/share/carla
  wine_prefix: ~/.wine
  auto_start_engine: true

audio:
  driver: JACK
  sample_rate: 48000
  buffer_size: 512
  auto_connect: true

plugins:
  scan_paths:
    - /usr/lib/lv2
    - /usr/lib/vst
    - ~/.wine/drive_c/Program Files/Common Files/VST3
  cache_enabled: true

monitoring:
  audio_enabled: true
  cpu_enabled: true
  update_interval_ms: 100

环境变量

# 必要路径
export CARLA_PATH=/usr/share/carla
export PYTHONPATH=$CARLA_PATH/source/frontend:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/lib/carla:$LD_LIBRARY_PATH

# 可选配置
export CARLA_MCP_LOG_LEVEL=INFO
export CARLA_MCP_HOST=localhost
export CARLA_MCP_PORT=8765

🤝 贡献

我们欢迎贡献!请参阅CONTRIBUTING.md了解指南。

快速贡献步骤:

  1. 分叉仓库
  2. 创建功能分支
  3. 为新功能添加测试
  4. 确保所有测试通过
  5. 提交拉取请求

📄 许可证

该项目根据GPL-2.0或更高版本许可证发布 - 详情见LICENSE文件。

🙏 致谢

📞 支持


准备好用AI辅助彻底改变您的音频制作工作流程了吗?今天就开始吧! 🎵✨