1 ポイント 投稿者 GN⁺ 2025-06-01 | 2件のコメント | WhatsAppで共有
  • buttplug-mcpButtplug.io エコシステム向けの Model Context Protocol サーバーで、Claude Desktop のようなツール対応 LLM プログラムが、接続された Genital Interface Devices を参照・制御できるようにする
  • 提供機能は /devices/device/{id}/device/{id}/rssi/device/{id}/battery リソースと device_vibrate ツールで、振動強度は 0.0~1.0 の範囲で指定する
  • 現在の状態は実験的で不安定。2025-04-01 に短期間の教育用プロジェクトとして始まり、go-buttplug接続処理の不安定さ のため、エンドツーエンドテストは十分に完了していない
  • 利用するには Intiface Central を実行して WebSocket サーバーポートを確認し、Claude Desktop のような MCP ホスト設定に buttplug-mcp 実行ファイルと --ws-port 12345 のような引数を登録する必要がある
  • Ollama ベースのローカル推論では mcphost でツール呼び出しを試したが、その環境では Tools のみ対応で Resources は未対応のため、デバイス列挙や詳細参照はできなかった

プロジェクトの目的と対応範囲

  • buttplug-mcpModel Context Protocol サーバーで、Buttplug.io ecosystem に接続されたデバイスを LLM プログラムから参照・制御できるようにする
  • Claude Desktop のような ツール対応 LLM プログラムで、次のようなプロンプトを目標としている
    • 接続された Buttplug デバイスの参照
    • 特定デバイスの特定モーターを 50% 強度に設定
    • Lovense Max 2 のバッテリー残量を確認
    • WeWibe の信号が弱いかどうかを確認
  • README では、上記の体験は 目標状態 であり、現時点の体験は不安定でフラストレーションがあると注意書きしている

MCP リソースとツール

  • 対応リソースは、接続デバイスとデバイス状態を JSON 形式で参照することに重点を置いている
    • /devices: 接続された Buttplug デバイス一覧
    • /device/{id}: /devices で得た数値 ID に基づくデバイス情報
    • /device/{id}/rssi: デバイス ID に基づく RSSI 信号レベル
    • /device/{id}/battery: デバイス ID に基づくバッテリーレベル
  • 対応ツールは device_vibrate の 1 つのみ
    • パラメータは id、任意の motorstrength
    • motor のデフォルト値は 0
    • strength0.0 がオフ1.0 が最大強度 を意味する数値範囲
  • README には、リソースとツールの JSON Schema の例として schema_resources.jsonschema_tools.json が含まれている

現在の状態と制限

  • プロジェクトは 2025-04-01 のエイプリルフールに始まり、前日に作成した金融市場データ向け実験的 MCP サービス dbn-go に続いて作られた短期の教育用プロジェクトである
  • 動作はするが、基盤ライブラリ go-buttplug接続処理 が不安定だとされている
  • Claude でデバイス一覧の参照は可能だったが、特定デバイスは Intiface Central 単体でも振動せず、「読み取り専用モード」のように見えたとされている
  • 物理デバイスに依存せずテストできる 仮想 Buttplug.io デバイス があると望ましいという制約もある
  • README では、まだ真の意味での エンドツーエンドテスト は完了していないと明記している
  • 今後は go-buttplug の接続不安定の原因をさらに調べることと、MCP ホストが Tools、Resources、Resource Templates を現状どのようにサポートしているかを理解する必要があるとしている

インストールと Claude Desktop での利用

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • 利用するには Intiface Central ハブアプリケーションをダウンロードしてデバイスを管理し、サーバーポートを確認する必要がある
    • デフォルトポートは 12345 のようだとされている
  • Claude Desktop では MCP サーバー設定に実行ファイルと WebSocket ポートを登録する
    • MacOS Homebrew インストールパスの例は /opt/homebrew/bin/buttplug-mcp
    • 設定例では --ws-port 12345 を使用する
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}

Ollama と mcphost の実験

  • ローカル推論では Ollama をサポートする MCP ホストを利用できる
  • ツールに対応した Ollama LLM を使う必要がある
  • 実験には mcphost が使われ、このプロジェクトは mcp-go ライブラリの開発者が作成した MCP ホストである
  • 実行例では mcp.json に前述の設定を保存し、その後 llama3.3 モデルで実行する
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • README 時点では、mcphostTools のみ対応で Resources には未対応のため、デバイスを列挙したり詳細を参照したりすることはできなかった
  • phi4-minidevice_vibrate ツール呼び出しは成功レスポンスを返したが、前述の現在の状態の問題により、実際のデバイスは振動しなかった

ビルド、テストツール、CLI

  • ビルドは task で実行し、生成されるバイナリは bin/buttplug-mcp となる
task
  • ビルド処理では go mod tidy の後、go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go を実行する
  • 便利なテストツールは次のとおり
    • task stdio-schema | jq: JSON Schema を出力
    • npx @modelcontextprotocol/inspector node build/index.js: MCP Inspector Web GUI
  • CLI オプションは、ヘルプ、ログファイル、JSON ログ、SSE トランスポート、SSE ホスト、verbose ログ、Buttplug WebSocket サーバーポート設定をサポートする
    • --ws-port int: Buttplug WebSocket サーバーに接続するポート
    • --sse: デフォルトの STDIO の代わりに SSE Transport を使用
    • --log-file string: ログファイルの出力先、または MCP_LOG_FILE 環境変数を使用
    • --log-json: JSON ログを使用
    • --verbose: 詳細ログを使用

2件のコメント

 
bbulbum 2025-06-03

うわ……私たちにはまだ早すぎると言うべきか……

 
GN⁺ 2025-06-01
Hacker Newsの意見
  • Buttplug標準に関する過去のHNでの議論はいくつかあり、当然ながら「Rustで実装」したものもあった
    Buttplug: An open-source software suite for teledildonics (https://buttplug.io/) 5 years ago | 249 comments
    Empathy for the user having sex with your software (https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethic...) 10 months ago | 127 comments
    T-code – A protocol for implementing UART serial communications to an adult toy (https://stpihkal.docs.buttplug.io/protocols/tcode.html) 2 years ago | 74 comments
    An open-source standards and software project for intimate hardware (maybe NSFW) (https://buttplug.io/) 7 years ago | 39 comments
    Buttplug Sex Toy Control Project Implemented in Rust (https://buttplug.io/) 2 years ago | 3 comments
    • Teledildonicsという単語自体が本当にすごい。BO.ioに貢献して履歴書を埋めたくなるほどだが、そこに書いたペネトレーションテストの経歴と結びつくと、気まずい質問が出てくるかもしれない。何やらバックドアの話も付いてきそうだし
    • 関連して、Emacs向けのアダルトグッズ制御およびteledildonicsモードであるDeldoもあった
      Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comments
  • これが最近ずっと耳にする「vibe coding」なのか?
    • buttplug.ioのトップページにはすでにこう書かれている: “We were vibe coding before it was cool.”
    • https://github.com/profullstack/mcp-serverは実際にvibe codingで作ったという
    • こういうプロジェクトのユーザー受け入れテストがどんなものだったのか気になる
    • 元記事の筆者はこれについてかなり考えたのだと思う。こういうものはハードウェア仕様を本当に深く掘り下げる必要があるから
  • こうした玩具を制御するAPIを何度か見たことがあるが、見るたびにかなりオープンで驚く。各デバイスにはロックされた独自アプリが付属していて、公に文句を言うのは気まずいので誰も何も言えない、という方向を予想していた
    なぜこの市場は違うのだろう? 大企業がこの市場を避けていて、まだ台無しにできていないからなのか?
    • 知る限り、そうしたAPIはメーカーが公開ドキュメント化したものではなく、コミュニティがリバースエンジニアリングしたものだ。玩具自体がBluetoothベースなので、ペアリングと近接性がセキュリティのほぼすべてになっている
    • デンマークの家庭でよく見かける電子機器のうち、きちんとロックされているものは多くない。電子レンジ、電動歯ブラシ、ルーター、電動自転車のようにコンピューターが入っているものは、たいてい「ハッキング」しやすい部類で、アダルトグッズが違う点は、人々がそこに注ぐ労力の量である可能性が高い
      この記事を見るまでは、電動自転車コミュニティが日常的な電子機器をいじる最大のハッカーコミュニティだと思っていた。ヨーロッパでは電動自転車のコンピューターのハッキングがかなり多く、速度制限を解除しようとするケースもあるが、違法であり、デンマークの大都市では見つかる可能性も高い
      私は主に統計のためにやっていた。自分の電動自転車のコンピューターは「現在の」走行距離を500kmごとにリセットし、総走行距離は別の場所に保存していたが、整備工場に入るとそれもリセットされていた。標準画面には時計もなかったので、ディスプレイに時計を表示したいというのが主な理由で、今では走行距離のバックアップと遊び用の統計も追加してある
      整備工場に送るときは工場出荷時設定に再フラッシュする。私はデバイスハッカーではまったくないが、検索するだけで自分のブランドに合うツールを見つけ、やりたいことができた。日常的な機器の大半には、セキュリティはあまりないと思う。Google CameraでNSAに覗かれたくないヨーロッパの人々が大手テック企業の製品ではないものを買っているからかもしれないが、Boschのような大手ブランドの製品もかなりハッキング可能だ。ハードウェアを手元に持てば、結局ほとんどのものはハッキング可能なのではないか?
    • カム配信者やストリーミングプラットフォーム向けの拡張機能を作れる需要のためだと思う。たとえばLovenseは、配信サイトで「チャットで制御される玩具」の代名詞のようになっている
    • この領域の性質上、顧客を満足させるために人々があらゆる手間を惜しまないことに慣れている、という面もありそうだ
    • ほとんどはメーカーが公開したAPIではなく、Bluetoothプロトコルをリバースエンジニアリングしたものだ。Buttplugサイトにはメッセージとプロトコル情報があり、その一部はかなりひどい
      LovenseのようなところはAPIを公開する意思があると言っていたが、GitHubには空のリポジトリがある程度だ。Lovenseは妙な会社で、あらゆる状況証拠が台湾の1人か2人程度を指しており、かなり不透明だ
      怪しい事例もあった。Hytto/Lush [0]やWe-Vibe [1]のようなブランドを相手取った集団訴訟があった
      [0] [https://www.courthousenews.com/judge-forwards-class-action-s...](https://www.courthousenews.com/judge-forwards-class-action-suit-against-adult-toy-maker/

[1] https://topclassactions.com/lawsuit-settlements/lawsuit-news...

  • https://buttplug.io/によると、Buttplug はアダルトグッズやセックスマシンなどのインティメイトなハードウェアを制御するためのオープンソース標準およびソフトウェアプロジェクト
    「Intimate Haptics Control Standard and Library」と説明されており、さらに詳しい説明は https://buttplug-spec.docs.buttplug.io/docs/spec にある
  • .io トップレベルドメインは完璧な選択
  • 以前「コンシューマー機器セキュリティ」の講義に申し込んだことがあるが、発表者が挙げた例がすべてインターネット接続型アダルトグッズがやらかした事例で驚いた
    個人情報が流出したり、機器がユーザーを「閉じ込め」たうえで身代金を要求したりするケースだった。デスクで笑っていたが、あまりに NSFW な内容だったので、なぜ笑っているのか説明できなかった
  • これを ChatGPT の予約タスクと組み合わせると、面白い目覚まし時計になりそう
    • Home Assistant 連携があるようなので、ガレージのドアを開けっぱなしにしたことを忘れたときに通知を受け取ることもできそう
  • 誰かが大手テック企業は望まれない AI 機能を無理やり押し込めると言ったときに備えて、これをブックマークしておく
  • わあ、こんにちは! 私が https://buttplug.io の作者でありプロジェクトリードの qDot です
    すでにトップページではかなり下のほうに行っていますが、何でも聞いてください
  • 作者です。エイプリルフールに作ったものを今になって見ることになるとは、楽しい金曜日です。毎年その日には馬鹿げた個人プロジェクトをやっていて、その週は MCP サーバーを触っていたので、これを作ったら面白いだろうと思いました。ConAcademy は変なアイデアや実装を置いておく場所です
    この特定の MCP サーバーはかなり役に立たず、性的なインタラクションを望む方法としては絶対に違う、ということを README に書こうと思っていました。それでもどこかから始める必要はありますし、good-giving-game 的なやり方が私たちの流儀なので GitHub に上げました
    皮肉なことに、2年前のプロジェクトは Charm ベースの SSH チャットルームと BubbleTea TUI に Buttplug を統合するものでした。SSH キーでデジタル同意の一部を扱い、どのエンティティが別のエンティティの機器に対して何をできるのかを匿名グラフにしました。エージェントが制御する MCP の未来には、そうした要素が必要になると思います
    私は Buttplug.io のメンテナーではありませんが、Discord で彼らとしばらく話していました。せっかく見てくださっているので、関心のある Rustacean がいれば、あのプロジェクトは追加メンテナーを探しています。この MCP サーバーは Golang で書かれていますが、Buttplug エコシステム内では Rust で書かれているほうが望ましいでしょう
    初期のキャリアはハプティクス研究で、Immersion を通じて関連特許も複数持っています。修士論文は 3D ハプティックレンダラーを書き、VRML にハプティクスを統合するというものでした。覚えていればですが! 性機能障害診断機器に関する NIH 助成プロジェクトもやりましたし、自作のおもちゃも作りました。今は Neurable の EEG ヘッドセットを受け取ったばかりで、Biaerolar Beats の研究 [1] をしています
    vibe coding の話に戻ると、これで LELO F1 を振動させたのは確かですが、このプロジェクトは本当に手作りです。数週間前に Claude と Gemini で a2a4a2a を vibe coding しようとしましたが、A2A プロトコルが新しすぎて、モデルに A2A を教えるのが難しかったです。一般的に、みんなこういうことをどう処理しているのか気になります
    全体として楽しかったし、ツール呼び出し LLM について多くを学びました。その週に MCP サーバーを3つ作りました。お金用 [2]、性用 [3]、薬物用 [4] です。mark3labs/mcp-go のおかげです
    最後の AgentDank [4] はまだフォローアップ作業ができていませんが、公開データと実際の AI 結果という点では、おそらく一番クールです。そこの動画を見るといいです。カスタムデータと SQL エンドポイントをツール呼び出し LLM につなぐのは、ばかげているほど強力です
    [1] https://github.com/ConAcademy/biareolar-beats
    [2] https://github.com/NimbleMarkets/dbn-go/blob/main/cmd/dbn-go...
    [3] https://github.com/ConAcademy/buttplug-mcp
    [4] https://github.com/AgentDank/dank-mcp
    • 「性的なインタラクションを望む方法としては絶対に違う」というのは、あくまで本人基準でしかない