mcpField
B
buttplug-mcp - Buttplug.io MCP Server

buttplug-mcp - Buttplug.io MCP Server

本地服务
github.com/ConAcademy其他13674 周前更新

关于 buttplug-mcp - Buttplug.io MCP Server

buttplug-mcp 是 Buttplug.io 生态的 MCP 服务,允许支持工具调用的 LLM 程序查询并控制已连接的设备。项目以 Go 编写,以 MIT 协议发布,README 中说明其目前仍不稳定,尚未经过完整的端到端测试。

主要功能

  1. 01列出已连接的 Buttplug 设备及其信息
  2. 02查询设备的 RSSI 信号与电池电量
  3. 03通过 device_vibrate 工具控制振动强度与电机
  4. 04支持通过 Intiface Central 连接设备

适用场景

  1. 01在 Claude Desktop 中查询已连接设备的状态
  2. 02通过 mcphost 与 Ollama 模型测试工具调用
  3. 03作为 Buttplug.io 生态的 MCP 实验项目参考

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露设备列表、设备信息、信号与电池等资源,以及 device_vibrate 工具。README 指出部分 MCP 主机仅支持工具而不支持资源。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

buttplug-mcp - Buttplug.io MCP 服务

buttplug-mcp 是适用于 Buttplug.io 生态系统的 Model Context Protocol (MCP) 服务。它允许支持工具的 LLM 程序(如 Claude Desktop)查询和控制你的生殖器接口设备。

|插入一张 AI 生成的机器人做不雅之事的低质图片|
LLM|=> - - (__(__)

设置完成后,你可以向 LLM 提示:

  • “我有哪些已连接的 buttplug 设备?”
  • “将我的 LELO F1S 的第二个马达设置为 50% 强度”
  • “我的 Lovense Max 2 还剩多少电量?”
  • “我的 WeWibe 信号弱吗?”

注意:以上只是愿景,实际上目前的体验并不稳定,而且令人沮丧。

它支持以下资源和工具:

资源描述
/devices以 JSON 格式列出已连接的 Buttplug 设备。
/device/{id}根据设备 ID 获取设备信息,其中 id 是 /devices 中的数字
/device/{id}/rssi根据设备 ID 获取 RSSI 信号强度,其中 id 是 /devices 中的数字
/device/{id}/battery根据设备 ID 获取电量,其中 id 是 /devices 中的数字
工具参数描述
device_vibrateid、motor、strength通过 id 控制设备振动,并选择 strength 和可选的 motor
资源的 JSON Schema。点击展开

schema_resources.json

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "resources": [
      {
        "uri": "devices",
        "name": "Device List",
        "description": "List of connected Buttplug devices in JSON",
        "mimeType": "application/json"
      }
    ]
  }
}
工具的 JSON Schema。点击展开

schema_tools.json

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "description": "Vibrates device by `id`, selecting `strength` and optional `motor`",
        "inputSchema": {
          "type": "object",
          "properties": {
            "id": {
              "description": "Device ID to query, sourced from `/devices`",
              "pattern": "^[0-9]*$",
              "type": "number"
            },
            "motor": {
              "description": "Motor number to vibrate, defaults to 0",
              "pattern": "^[0-9]*$",
              "type": "number"
            },
            "strength": {
              "description": "Strength from 0.0 to 1.0, with 0.0 being off and 1.0 being full",
              "pattern": "^(0(\\.\\d+)?|1(\\.0+)?)$",
              "type": "number"
            }
          },
          "required": [
            "id",
            "strength"
          ]
        },
        "name": "device_vibrate"
      }
    ]
  }
}

当前状态

我在 2025-04-01,也就是愚人节那天,开始着手开发这个项目。前一天,我刚创建了另一个实验性的 MCP 服务 dbn-go(金融市场数据)。因此,这是个刚起步的项目,原本只是一个快速、有趣的教育项目。

虽然它可以运行,但我发现底层的 go-buttplug 库在连接处理方面不稳定。我可以让 Claude 查询设备,但即使只使用 Intiface Central,我的特定设备也无法振动——就像处于只读模式一样!我也希望能有一个虚拟的 buttplug.io 设备用于测试,而不必依赖实体设备。

所以,它还没有真正经过“端到端”测试 :wink:

我会深入研究 go-buttplug 库,看看连接为何不稳定。我还需要了解 MCP 主机当前对 MCP 协议的支持情况——它们似乎更关注工具,而不是资源和资源模板。

安装二进制文件

多个平台的二进制文件已通过 GitHub Actions 发布到 GitHub。

你也可以通过 conacademy/homebrew-tap 使用 Homebrew 为各种平台安装:

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp

使用方法

下载 Intiface Central 集线器应用来管理设备。启动应用并记下服务端口(默认似乎是 12345)。

要使用 buttplug-mcp MCP 服务,必须将主机程序配置为使用它。下面以 Claude Desktop 为例。我们需要在系统中找到 buttplug-mcp 程序;下方示例展示了使用 MacOS Homebrew 安装 buttplug-mcp 的位置(也可以自行构建,并指向对应位置)。

以下 JSON 配置可完成设置:

{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}

使用 Claude Desktop 时,可以按照其配置教程操作,但将配置替换为上面的内容。完成设置后,可以向 Claude 提问,它会使用 buttplug-mcp 服务。以下是一些对话示例:

也许你可以使用 HomeAssistant MCP 集成来调暗灯光……

Ollama 和 mcphost

对于本地推理,有一些支持 Ollama 的 MCP 主机。你可以使用任何支持“Tools”的 Ollama 大模型。我们尝试了 mcphost,它由 mcp-go 库的开发者编写;该库为我们完成了繁重的工作。

以下是使用上述配置,通过它安装并运行的方式;配置保存在 mcp.json 中:

$ go install github.com/mark3labs/mcphost@latest
$ mcphost -m ollama:llama3.3 --config mcp.json
...chat away...

看起来它只支持“Tools”,不支持“Resources”,所以我无法枚举和检查我的设备。不过,我进行过以下工具交互(但如上文所述,我的设备实际上并没有振动):

$ mcphost -m ollama:phi4-mini --config mcp.json
2025/04/02 09:25:05 INFO Model loaded provider=ollama model=phi4-mini
2025/04/02 09:25:05 INFO Initializing server... name=buttplug
2025/04/02 09:25:05 INFO Server connected name=buttplug
2025/04/02 09:25:05 INFO Tools loaded server=buttplug count=1
2025/04/02 09:28:31 INFO Model loaded provider=ollama model=phi4-mini
2025/04/02 09:28:31 INFO Initializing server... name=buttplug
2025/04/02 09:28:31 INFO Server connected name=buttplug
2025/04/02 09:28:31 INFO Tools loaded server=buttplug count=1
/servers
      # buttplug
      Command /opt/homebrew/bin/buttplug-mcp
      Arguments --ws-port 12345

/tools
  • buttplug
    • device_vibrate
      • Vibrates device by ID, selecting strength and optional motor

  You: buttplug device_vibrate id 0 at strength 1

  Assistant:
  <|tool_call|>[start_processing]

  [{"type":"function","function":{"name":"buttplug__device_vibrate","description":"Vibrates device by ID, selecting strength and optional
  motor","parameters":{"id":0,"strength":1}}]

  {}

  {"status":"success","message":"Device with id 0 is vibrating at full strength."}

构建

使用 task 进行构建,生成的二进制文件位于 bin/buttplug-mcp。

$ task
task: [tidy] go mod tidy
task: [build] go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go

实用的测试工具:

  • task stdio-schema | jq —— 输出 JSON 架构
  • npx @modelcontextprotocol/inspector node build/index.js —— MCP Inspector Web GUI

CLI 参数

R buttplug-mcp --help
usage: buttplug-mcp [opts]

  -h, --help              Show help
  -l, --log-file string   Log file destination (or MCP_LOG_FILE envvar). Default is stderr
  -j, --log-json          Log in JSON (default is plaintext)
      --sse               Use SSE Transport (default is STDIO transport)
      --sse-host string   host:port to listen to SSE connections
  -v, --verbose           Verbose logging
      --ws-port int       port to connect to the Buttplug Websocket server

贡献与行为准则

与所有 ConAcademy 项目一样,欢迎提交拉取请求。也可以 Fork。随你。

无论如何,请遵守我们的行为准则。可以行事不光明磊落,但别做混蛋。

致谢与许可证

感谢 go-buttplug 提供 Golang Buttplug.io 库及其 buttplughttp 示例,也感谢 go-mcp 提供 Golang Model Context Protocol 库。

版权所有 (c) 2025 Neomantra BV。由 Evan Wies 为 ConAcademy 编写。

根据 MIT 许可证发布,详见 LICENSE.txt。

评论

支持 Markdown

第一次接触 MCP?

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

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