mcpField
S
Simple Osc Mcp Server

Simple Osc Mcp Server

本地服务
github.com/noodledostuff媒体与设计262 周前更新

关于 Simple Osc Mcp Server

Simple Osc Mcp Server 是连接 AI Agent 与 OSC 应用的 MCP 服务,可创建 UDP 接收端并查询收到的消息。它支持地址过滤、消息缓冲和端点状态监控。

主要功能

  1. 01创建和管理多个 UDP 端点
  2. 02缓冲并查询收到的 OSC 消息
  3. 03按 OSC 地址模式过滤
  4. 04实时查看端点与消息状态

适用场景

  1. 01收集 SuperCollider 或 Max/MSP 的 OSC 消息
  2. 02按地址模式筛选合成器数据
  3. 03检查端点状态并检索近期消息

MCP 相关

该 MCP 服务向 AI Agent 提供创建、停止和查看 OSC 端点的工具,还可查询接收消息及端点状态。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"osc": {
"command": "npx",
"args": [
"-y",
"osc-mcp-server"
]
}
}
}
启动命令npx -y osc-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmosc-mcp-server

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
portnumber是要侦听的 UDP 端口号(1024-65535)
bufferSizenumber否缓冲区中存储的最大消息数(默认值:1000)
addressFiltersarray否用于筛选消息的 OSC 地址模式(可选)

详细介绍

Simple OSC MCP 服务

CI/CD Pipeline Security Scan npm version

一个模型上下文协议(MCP)服务,可让 AI Agent 创建 OSC(开放声音控制)端点并接收 OSC 消息。此服务为 AI Agent 与 SuperCollider、Max/MSP、TouchOSC 等支持 OSC 的应用程序和其他音乐/音频软件搭建桥梁。

功能

  • OSC 端点管理:创建和管理多个 UDP 端点,用于接收 OSC 消息
  • 消息缓冲:存储和查询收到的 OSC 消息,并可配置缓冲区大小
  • 模式筛选:按 OSC 地址模式筛选消息,实现有针对性的数据收集
  • VSCode 集成:完全兼容 VSCode 的 MCP 客户端,打造无缝开发工作流
  • 实时监控:实时跟踪端点状态和消息流
  • 类型安全:使用 TypeScript 构建,提供可靠的类型检查和更好的开发者体验

安装

使用 npx 快速开始(推荐)
npx osc-mcp-server
全局安装
npm install -g osc-mcp-server
osc-mcp-server
本地安装
npm install osc-mcp-server
npx osc-mcp-server

要求

  • Node.js:18.0.0 或更高版本
  • 操作系统:Windows、macOS 或 Linux
  • 网络:OSC 通信需要访问 UDP 端口(1024-65535 端口)

使用方法

VSCode 集成

OSC MCP 服务旨在与 VSCode 的 MCP 客户端无缝协作。配置方法如下:

  1. 在 VSCode 中安装 MCP 扩展(如果尚未安装)

  2. 将服务配置添加到 VSCode 设置或工作区 .vscode/settings.json 中:

{
  "mcp.servers": {
    "osc-server": {
      "command": "npx",
      "args": ["osc-mcp-server"],
      "env": {}
    }
  }
}
  1. 重启 VSCode以加载服务

  2. 验证连接:检查 VSCode 中的 MCP 面板,应能看到列为活动状态的“osc-server”

可用工具

该服务提供四种用于 OSC 交互的主要工具:

1. create_osc_endpoint

创建一个新的 OSC 端点,以监听传入消息。

参数:

  • port(必填):UDP 端口号(1024-65535)
  • bufferSize(可选):要存储的最大消息数(默认值:1000,最大值:10000)
  • addressFilters(可选):用于筛选消息的 OSC 地址模式数组

示例:

{
  "port": 8000,
  "bufferSize": 500,
  "addressFilters": ["/synth/*", "/effects/reverb"]
}
2. stop_osc_endpoint

停止并移除现有 OSC 端点。

参数:

  • endpointId(必填):要停止的端点 ID

示例:

{
  "endpointId": "endpoint_8000_1234567890"
}
3. get_osc_messages

查询端点收到的 OSC 消息。

参数:

  • endpointId(可选):指定端点 ID(省略时查询所有端点)
  • addressPattern(可选):用于筛选消息的 OSC 地址模式
  • timeWindowSeconds(可选):时间窗口(秒),从现在向前追溯
  • limit(可选):要返回的最大消息数(最大值:1000)

示例:

{
  "endpointId": "endpoint_8000_1234567890",
  "addressPattern": "/synth/freq",
  "timeWindowSeconds": 30,
  "limit": 50
}
4. get_endpoint_status

获取 OSC 端点的状态信息。

参数:

  • endpointId(可选):指定端点 ID(省略时返回所有端点)

示例:

{
  "endpointId": "endpoint_8000_1234567890"
}
命令行用法

直接运行服务时,它会以 stdio 模式启动,用于 MCP 通信:

# Start the server
npx osc-mcp-server

# The server will output startup information to stderr
# and handle MCP communication via stdin/stdout
示例工作流

以下是使用 OSC MCP 服务的典型工作流:

  1. 创建端点以监听 OSC 消息:

    {
      "tool": "create_osc_endpoint",
      "parameters": {
        "port": 8000,
        "bufferSize": 1000,
        "addressFilters": ["/synth/*"]
      }
    }
    
  2. 从应用程序(SuperCollider、Max/MSP 等)向 localhost:8000 发送 OSC 消息

  3. 查询收到的消息:

    {
      "tool": "get_osc_messages",
      "parameters": {
        "timeWindowSeconds": 60,
        "limit": 100
      }
    }
    
  4. 检查端点状态:

    {
      "tool": "get_endpoint_status",
      "parameters": {}
    }
    
  5. 完成后停止端点:

    {
      "tool": "stop_osc_endpoint",
      "parameters": {
        "endpointId": "endpoint_8000_1234567890"
      }
    }
    

开发

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run dev

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint code
npm run lint

# Format code
npm run format

故障排除

常见问题
服务连接问题

问题:VSCode 显示“osc-server”已断开连接或未列出

  • 解决方案:检查是否已安装 Node.js 18+,且可以正常访问
  • 解决方案:确认 VSCode 设置中的 MCP 配置正确
  • 解决方案:更改配置后重启 VSCode
  • 解决方案:检查 VSCode 的输出面板中是否有与 MCP 相关的错误消息

问题:使用 npx 时出现“Command not found”错误

  • 解决方案:确保已安装 npm 且为最新版本:npm install -g npm@latest
  • 解决方案:清除 npm 缓存:npm cache clean --force
  • 解决方案:尝试先全局安装:npm install -g osc-mcp-server
OSC 端点问题

问题:出现“Port already in use”错误

  • 解决方案:选择其他端口号(1024-65535)
  • 解决方案:检查端口占用情况:netstat -an | grep :8000(将 8000 替换为你的端口)
  • 解决方案:停止使用同一端口的其他应用程序

问题:低端口号出现“Permission denied”错误

  • 解决方案:使用 1024 及以上的端口(低于 1024 的端口需要管理员权限)
  • 解决方案:在 Linux/macOS 上,只有绝对必要时才使用 sudo 运行

问题:未收到 OSC 消息

  • 解决方案:确认发送应用程序已配置为向正确的 IP 和端口发送消息
  • 解决方案:检查防火墙设置,确保指定端口允许 UDP 流量
  • 解决方案:使用 TouchOSC 或 SuperCollider 等简单的 OSC 发送工具进行测试
  • 解决方案:确认地址筛选条件没有过于严格
消息查询问题

问题:有消息时,查询结果却为空

  • 解决方案:检查时间范围,消息可能早于指定的 timeWindowSeconds
  • 解决方案:确认地址模式匹配正确,OSC 模式区分大小写
  • 解决方案:检查端点缓冲区大小是否已超出限制(较早的消息会被移除)

问题:出现“Endpoint not found”错误

  • 解决方案:使用 get_endpoint_status 列出可用的端点 ID
  • 解决方案:确认端点未停止或崩溃
  • 解决方案:检查端点 ID 是否有拼写错误
性能注意事项
高频消息

如果你每秒接收大量 OSC 消息:

  • 增大缓冲区大小以避免消息丢失:"bufferSize": 5000
  • 使用地址筛选以减少处理开销
  • 更频繁地查询消息以避免缓冲区溢出
  • 考虑为不同消息类型使用多个端点
内存使用
  • 监控缓冲区大小——更大的缓冲区会占用更多内存
  • 为消息查询设置合适的限制,以避免响应过大
  • 停止未使用的端点以释放资源
网络配置
防火墙设置

Windows:

# Allow UDP traffic on port 8000 (replace with your port)
netsh advfirewall firewall add rule name="OSC MCP Server" dir=in action=allow protocol=UDP localport=8000

macOS:

# Check if firewall is blocking the port
sudo pfctl -sr | grep 8000

Linux (Ubuntu/Debian):

# Allow UDP traffic on port 8000
sudo ufw allow 8000/udp
测试 OSC 通信

使用以下工具测试 OSC 消息发送:

SuperCollider:

// Send a test message
n = NetAddr("127.0.0.1", 8000);
n.sendMsg("/test", 440, "hello");

Max/MSP:

[udpsend 127.0.0.1 8000]
|
[/test 440 hello(

Python (python-osc):

from pythonosc import udp_client

client = udp_client.SimpleUDPClient("127.0.0.1", 8000)
client.send_message("/test", [440, "hello"])
调试模式

如需详细日志,可以查看运行服务时的 stderr 输出:

npx osc-mcp-server 2> debug.log

这会将所有调试消息保存到文件中以供分析。

获取帮助

如果你遇到此处未涵盖的问题:

  1. 查看 GitHub Issues:https://github.com/username/osc-mcp-server/issues
  2. 创建新问题,并提供:
    • 你的操作系统和 Node.js 版本
    • 完整的错误消息
    • 重现问题的步骤
    • 你的 MCP 配置

文档

API 参考
示例和工作流
特定工作流
开发

CI/CD 流水线

本项目使用 GitHub Actions 进行持续集成和部署:

  • 自动化测试:在 Node.js 18、20 和 22 上运行
  • 代码质量:ESLint、Prettier 和 TypeScript 检查
  • 安全扫描:npm audit 和漏洞扫描
  • 覆盖率报告:要求覆盖率达到 80%
  • 自动发布:在带标签的版本发布时发布到 npm
发布流程

推送 git 标签以创建新版本:

git tag v1.0.0
git push origin v1.0.0

或者使用 PowerShell 发布脚本:

.\scripts\release.ps1 patch  # or minor, major, prerelease

详细的 CI/CD 文档请参阅 docs/CI-CD.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。