Pure Data MCP服务器

通过模型上下文协议(MCP)实现Claude AI与Pure Data的集成,允许通过自然语言动态创建、修改和控制Pure Data补丁。

  • by nikmaniatis
  • Python
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 nikmaniatis/Pd-MCP-Server

使用说明

纯数据MCP服务器

该项目通过模型上下文协议(MCP)提供Claude AI和纯数据之间的集成。通过这种集成,Claude可以通过自然语言动态创建、修改和控制纯数据补丁。

概述

该系统由三个核心组件组成:

  1. MCP服务器 (mcp_server.py):为Claude实现模型上下文协议接口
  2. OSC守护进程 (osc_daemon.py):处理OSC与纯数据的通信
  3. 纯数据补丁 (example_patch.pd):接收OSC消息的动态修补解决方案

特性

  • 动态对象创建:通过Claude按需创建任何纯数据对象
  • 连接管理:将对象连接在一起以构建复杂的信号流
  • 工作空间管理:清除所有对象并重置状态 clear_workspace
  • DSP控制:远程启动和停止音频处理
  • 参数控制:实时修改对象的参数
  • 全局对象跟踪:可靠的基于索引的连接系统
  • 错误处理:强大的错误检测和报告
  • 调试工具:综合测井系统

最新动态

安装

先决条件

  • Python 3.7+
  • 纯数据(香草)0.51+
  • 所需的Python包:
    • python-osc
    • fastmcp
    • jsonschema
  • uv 包管理器

安装 uv

在macOS和Linux上:

curl -LsSf https://astral.sh/uv/install.sh | sh

在Windows(PowerShell)上:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

了解更多: 星光散射/紫外线


🛠️ 用法

克隆存储库

git clone https://github.com/nikmaniatis/Pd-MCP-Server.git

与Claude Desktop集成

  1. 打开:

Claude > Settings > Developer > Edit Config > claude_desktop_config.json

  1. 添加以下块:
{
    "mcpServers": {
      "Pure Data MCP Server": {
        "command": "uv",
        "args": [
          "--directory",
          "PATH_TO_PD_MCP_SERVER",
          "run",
          "main.py"
        ],
        "env": {
          "PD_OSC_HOST": "127.0.0.1",
          "PD_OSC_PORT": "5000",
          "PD_FEEDBACK_PORT": "5001"
        }
      }
    }
  }

注: 如果 uv 找不到命令,运行 which uv (Unix)或 Get-Command uv (PowerShell)并使用中的完整路径 "command" 现场。


快速示例

一旦MCP服务器连接并且Pd补丁正在监听,您可以要求Claude使用自然语言构建补丁:

创建一个440 Hz的osc~,将其连接到dac~,然后启动DSP

Claude将调用MCP工具来生成以下内容:

create_object("osc~", ["440"], {"x": 100, "y": 50})   → index 0
create_object("*~",   ["0.25"], {"x": 100, "y": 110})  → index 1
create_object("dac~", [],       {"x": 100, "y": 170})  → index 2

connect_objects({"id": "osc~_100_50",  "port": 0}, {"id": "*~_100_110",  "port": 0})
connect_objects({"id": "*~_100_110",   "port": 0}, {"id": "dac~_100_170", "port": 0})
connect_objects({"id": "*~_100_110",   "port": 0}, {"id": "dac~_100_170", "port": 1})

start_dsp()

这将在工作空间子补丁中创建以下补丁:

  osc~ 440
     |
  *~ 0.25 (volume)
    / \
  dac~ L+R

然后,您可以通过对话要求Claude修改补丁、添加效果、更改频率或构建更复杂的信号链。

建筑

消息流

  1. Claude根据用户请求执行MCP工具
  2. MCP服务器处理工具调用
  3. OSC消息被格式化并发送到纯数据
  4. Pure Data通过动态补丁执行命令
  5. 反馈(如果有的话)通过OSC回调返回

故障排除

常见问题

  1. 对象创建失败:确保纯数据正在运行并且补丁已打开
  2. 连接问题:验证对象ID是否与返回的内容完全匹配 create_object
  3. 端口冲突:检查端口5000是否已在使用中
  4. 消息格式错误:确保消息格式与纯数据补丁中的预期格式匹配
  5. 遗失物品:如果对象跟踪混淆,请尝试重新启动MCP服务器和纯数据

已知限制

  • 不删除或断开支持:Pd贴片(example_patch.pd)仅手柄 /pd/create, /pd/connect, /pd/dsp,以及 /pd/clear。对象和连接不能单独删除--使用 clear_workspace 以重置整个工作区。
  • 参数为零的信号对象:当信号对象像 +~ 或 *~ 用a创建 0 通过动态补丁(例如。, obj 100 100 +~ 0),Pd 0.55+将第二个入口视为浮子入口而不是信号入口,从而断开信号连接。MCP服务器会自动从信号对象中删除尾随的零参数,以避免此问题。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

致谢