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. 03device_vibrate ツールによる強度とモーターの制御
  4. 04Intiface Central を経由したデバイス接続

活用シーン

  1. 01Claude Desktop から接続済みデバイスの状態を照会
  2. 02mcphost と Ollama のモデルでツール呼び出しを検証
  3. 03Buttplug.io エコシステムにおける実験的な MCP プロジェクトの参照

MCP 対応

本プロジェクトは MCP サーバーとして、デバイス一覧、デバイス情報、信号とバッテリーのリソース、および device_vibrate ツールを MCP クライアントに公開します。README では、一部の MCP ホストがリソースを扱えずツールのみ対応している点が指摘されています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

buttplug-mcp - Buttplug.io MCP サーバー

buttplug-mcp は、Buttplug.io エコシステム向けの Model Context Protocol (MCP) サーバーです。Claude Desktop のようなツール対応の LLM プログラムを使って、Genital Interface Devices を照会し、操作できます。

|insert AI-generated slop image of robots doing nasty things|
LLM|=> - - (__(__)

セットアップすると、LLM に次のようなプロンプトを入力できます。

  • 「接続されている Buttplug デバイスを教えてください」
  • 「LELO F1S の 2 番目のモーターの強さを 50% に設定してください」
  • 「Lovense Max 2 のバッテリー残量はどれくらいですか?」
  • 「WeWibe の信号は弱いですか?」

注:上記はあくまで理想で、実際には現状は不安定で、非常に使いづらいです。

次のリソースとツールに対応しています。

リソース説明
/devices接続されている Buttplug デバイスの一覧(JSON)。
/device/{id}デバイス ID ごとのデバイス情報。id は /devices にある数値です。
/device/{id}/rssiデバイス ID ごとの RSSI 信号レベル。id は /devices にある数値です。
/device/{id}/batteryデバイス ID ごとのバッテリー残量。id は /devices にある数値です。
ツールパラメーター説明
device_vibrateid, motor, strengthid で指定したデバイスを振動させます。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 LLMを使用できます。私たちは、難しい処理を担ってくれた mcp-go ライブラリの開発者が作成した mcphostを試しました。

上記の設定を 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 のすべてのプロジェクトと同様に、プルリクエストを歓迎します。フォークしてもかまいません。お好きなようにどうぞ。

いずれの場合も、行動規範を守ってください。型破りでもかまいませんが、他人に迷惑をかけないでください。

クレジットとライセンス

go-buttplug のGolang Buttplug.io ライブラリと、その buttplughttp の例、および go-mcp のGolang Model Context Protocol ライブラリに感謝します。

Copyright (c) 2025 Neomantra BV。ConAcademyのために Evan Wies が執筆しました。

MIT Licenseの下で公開されています。詳しくは LICENSE.txt をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。