项目简介
'buttplug-mcp' 是一个基于 Model Context Protocol (MCP) 标准构建的应用后端服务器。它作为 LLM(大型语言模型)客户端与 Buttplug.io 生态系统之间的桥梁,允许支持 MCP 的 LLM 程序(如 Claude Desktop 或 mcphost)通过读取设备信息(资源)和调用设备功能(工具)来与您的 Buttplug 设备交互。
主要功能点
- 设备资源查询:
- '/devices': 获取所有已连接 Buttplug 设备的列表(JSON 格式)。
- '/device/{id}': 根据设备 ID 获取特定设备的详细信息(JSON 格式)。
- '/device/{id}/rssi': 根据设备 ID 获取特定设备的信号强度(RSSI)(JSON 格式)。
- '/device/{id}/battery': 根据设备 ID 获取特定设备的电池电量(JSON 格式)。
- 设备工具调用:
- 'device_vibrate': 根据设备 ID、电机编号(可选,默认为 0)和强度(0.0 到 1.0)控制设备振动。
安装步骤
- 安装 Buttplug.io 中心应用程序 (Intiface Central): 下载并运行 Intiface Central,这是管理 Buttplug 设备的中心枢纽。启动它并记下 Buttplug 服务器监听的端口(默认为 12345)。
- 安装 buttplug-mcp 服务器:
- 通过预编译二进制文件: 从 GitHub Releases 页面 下载适用于您操作系统的最新版本二进制文件。
- 通过 Homebrew (macOS/Linux): 如果您使用 Homebrew,可以通过以下命令安装:
brew tap conacademy/homebrew-tap brew install conacademy/tap/buttplug-mcp - 从源码构建: 如果您安装了 Go 环境和 Task 工具,可以在仓库根目录运行 'task' 命令进行构建。
服务器配置 (用于 MCP 客户端)
MCP 客户端需要配置服务器的启动命令及其参数。通常,这通过一个 JSON 文件或配置界面完成。以下是配置 'buttplug-mcp' 作为 MCP 服务器所需的关键信息示例:
您的 MCP 客户端需要添加一个名为 "buttplug" 的 MCP 服务器配置。
- 命令 (command): 这是 'buttplug-mcp' 可执行文件的完整路径。例如,如果您使用 Homebrew 安装在 macOS 上,路径可能是 '/opt/homebrew/bin/buttplug-mcp'。
- 参数 (args): 这是传递给 'buttplug-mcp' 命令的启动参数列表。
- '--ws-port': 指定 'buttplug-mcp' 服务器连接本地 Intiface Central 应用程序的 WebSocket 端口。请将其设置为您在步骤 1 中记下的 Intiface Central 端口(例如 '"12345"')。
- 其他可选参数(如 '--sse', '--sse-host', '--log-file', '--log-json', '--verbose', '--debounce')可根据需要添加。
一个典型的客户端配置片段可能看起来像这样(具体格式取决于您的 MCP 客户端):
{ "mcpServers": { "buttplug": { "command": "/path/to/your/buttplug-mcp/executable", "args": [ "--ws-port", "12345" // 您可以根据需要添加其他参数,例如: // "--sse", // "--sse-host", ":8889" ] } } }
请将 '/path/to/your/buttplug-mcp/executable' 替换为您系统中 'buttplug-mcp' 程序的实际路径。
基本使用方法
- 确保 Intiface Central 正在运行,并且您的 Buttplug 设备已连接并显示在 Intiface Central 中。
- 使用上面提供的配置信息,在您的 MCP 客户端(例如 Claude Desktop 或配置了 'mcphost' 的本地 Ollama)中配置 'buttplug-mcp' 服务器。
- 启动您的 MCP 客户端。客户端会自动发现并连接到 'buttplug-mcp' 服务器。
- 在 LLM 客户端的聊天界面中,您现在可以使用自然语言向 LLM 提问或发出控制 Buttplug 设备的指令。例如:
- "我的 Buttplug 设备有哪些?" (LLM 可能会调用 '/devices' 资源)
- "让 ID 为 0 的设备的第一个马达振动起来,强度设为最大。" (LLM 可能会调用 'device_vibrate' 工具)
- "我的 Lovense Max 2 还有多少电量?" (LLM 可能会调用 '/device/{id}/battery' 资源)
请注意,项目的当前状态可能不稳定,功能仍在积极开发中。
信息
分类
桌面与硬件