1 Punkte von GN⁺ 2025-06-01 | 2 Kommentare | Auf WhatsApp teilen
  • Buttplug MCP ist ein MCP-Server, der Geräte für Erwachsene im Buttplug.io-Ökosystem mit Programmen auf Basis von Large Language Models (LLMs) verbindet
  • Nutzer können über LLM-Tools wie Claude Desktop Geräteinformationen abfragen oder verschiedene Funktionen wie Vibration, Akkustand und Signalstärke steuern
  • Derzeit fehlen noch funktionale Reife und Stabilität, sodass nicht alle Funktionen reibungslos arbeiten und die tatsächliche Gerätesteuerung schwierig sein kann
  • Eine toolbasierte Erprobung ist in Verbindung mit MCP-Hosts wie Ollama und mcphost möglich, einige Funktionen wie die Ressourcenerkundung sind jedoch eingeschränkt
  • Im Vergleich zu anderen MCP-Diensten ist dieses Projekt auf die LLM-basierte Steuerung smarter Geräte spezialisiert und wird als Open Source kostenlos bereitgestellt

Projektüberblick

  • buttplug-mcp ist ein Model Context Protocol(MCP)-Server, der ausschließlich für das Buttplug.io-Ökosystem gedacht ist
  • In toolfähigen LLM-Programmen wie Claude Desktop können eigene Buttplug-Geräte abgefragt und gesteuert werden
    • Beispielbefehle: "Welche buttplug-Geräte sind bei mir verbunden?", "Setze den zweiten Motor des LELO F1S auf 50 %", "Wie viel Akku hat der Lovense Max 2 noch?", "Ist das Signal des WeWibe schwach?"
  • Diese Beispiele zeigen die angestrebte Richtung, die aktuell tatsächlich umgesetzte Erfahrung ist jedoch instabil und enttäuschend

Unterstützte Ressourcen und Tool-Struktur

  • API-Ressourcen
    • /devices: Liste der verbundenen Buttplug-Geräte (JSON)
    • /device/{id}: Detaillierte Einzelinformationen zu einem Gerät
    • /device/{id}/rssi: Signalstärke (RSSI) des Geräts
    • /device/{id}/battery: Akkustand des jeweiligen Geräts
  • Tools
    • device_vibrate: Parameter id, motor, strength (erforderlich: id, strength), optional kann ein Motor angegeben werden, um die Vibration zu steuern

Beispiel für ein JSON-Schema (Ressourcen)

{
  "resources": [
    {
      "uri": "devices",
      "name": "Device List",
      "description": "List of connected Buttplug devices in JSON",
      "mimeType": "application/json"
    }
  ]
}

Beispiel für ein JSON-Schema (Tools)

{
  "tools": [
    {
      "description": "Vibrates device by `id`, selecting `strength` and optional motor",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {"description": "Device ID to query, sourced from `/devices`", "type": "number"},
          "motor": {"description": "Motor number to vibrate, defaults to 0", "type": "number"},
          "strength": {"description": "Strength from 0.0 to 1.0, with 0.0 being off and 1.0 being full", "type": "number"}
        },
        "required": ["id", "strength"]
      },
      "name": "device_vibrate"
    }
  ]
}

Aktueller Stand

  • Es handelt sich um ein experimentelles Kurzzeitprojekt, das am 1. April 2025 begonnen wurde
  • Das Verbindungsmanagement der Bibliothek go-buttplug ist instabil, sodass die Abfrage der Geräteliste zwar funktioniert, einzelne Steuerungen wie die Vibrationsfunktion jedoch nicht zuverlässig arbeiten
  • Für Testzwecke wären virtuelle Geräte nötig, Buttplug.io unterstützt jedoch nur physische Geräte
  • Das Projekt befindet sich in einer frühen Phase, in der End-to-End-Tests noch nicht ausreichend durchgeführt wurden
  • Künftig sollen sowohl die Verbindungsprobleme der Bibliothek go-buttplug als auch der Zustand der MCP-Protokoll-Hosts genauer untersucht werden, etwa die toolzentrierte Implementierung

Installationshinweise

  • Binärdateien für mehrere Plattformen werden über GitHub Releases verteilt
  • Die Installation über Homebrew wird ebenfalls unterstützt:
    • brew tap conacademy/homebrew-tap
    • brew install conacademy/tap/buttplug-mcp

Nutzung

  • Das Gerätemanagement wird von der Hub-App Intiface Central übernommen (Standardport 12345)
  • Damit Claude Desktop buttplug-mcp als MCP-Server verwenden kann, ist eine Konfiguration im Host-Programm erforderlich
    • Beispielkonfiguration (JSON-Datei):
    {
      "mcpServers": {
        "buttplug": {
          "command": "/opt/homebrew/bin/buttplug-mcp",
          "args": ["--ws-port", "12345"]
        }
      }
    }
    
  • Nach dieser Konfiguration kann die Anwendung anhand des Claude-Desktop-Tutorials eingerichtet werden; anschließend lassen sich im Gespräch mit Claude Geräte abfragen und steuern
  • Zusätzliche Integrationen wie die Lichtsteuerung über HomeAssistant MCP sind ebenfalls möglich

Integration mit Ollama und mcphost

  • Unter den MCP-Hosts ist die Unterstützung von Ollama möglich, sodass eine Verbindung mit toolfähigen LLMs hergestellt werden kann
  • Zusammen mit mcphost (gepflegt vom Entwickler von mcp-go) kann es mit einer MCP-JSON-Konfiguration für buttplug-mcp verwendet werden
    • Beispiel:
    $ go install github.com/mark3labs/mcphost@latest
    $ mcphost -m ollama:llama3.3 --config mcp.json
    
  • Es werden nur "Tools" unterstützt, "Resources" sind eingeschränkt, sodass weder die Auflistung von Geräten noch die Erkundung ihrer Eigenschaften möglich ist
  • In realen Beispielen kann zwar eine Erfolgsmeldung für einen Vibrationsbefehl zurückgegeben werden, das Gerät reagiert jedoch möglicherweise nicht

Build

  • Es wird ein Build-System auf Basis von task verwendet
    • Ausführung: $ task
  • Nützliche Testwerkzeuge:
    • task stdio-schema | jq (JSON-Schema prüfen)
    • npx @modelcontextprotocol/inspector node build/index.js (MCP Inspector Web GUI)

CLI-Argumente

  • Wichtige Optionen:
    • -h, --help: Hilfe
    • -l, --log-file: Ziel für die Logdatei angeben
    • -j, --log-json: JSON-Logformat
    • --sse: SSE-Übertragung verwenden
    • --sse-host: Host/Port für die SSE-Verbindung
    • -v, --verbose: Ausführliche Logs
    • --ws-port: Port für die Verbindung zum Buttplug-WebSocket-Server

Beiträge und Verhaltenskodex

  • Pull Requests, Forks usw. sind ausdrücklich willkommen
  • Die Einhaltung des Code of Conduct ist erforderlich

Credits und Lizenz

  • Es werden die Open-Source-Projekte go-buttplug und go-mcp genutzt
    • Einschließlich der Buttplug.io-Golang-Bibliothek und Beispiele sowie der Golang-Bibliothek für das Model Context Protocol
  • Copyright 2025 Neomantra BV, Evan Wies (ConAcademy)
  • Veröffentlicht unter der MIT-Lizenz (Details zur Lizenz siehe LICENSE.txt)

2 Kommentare

 
bbulbum 2025-06-03

Uff … Vielleicht ist das für uns einfach noch zu früh …

 
GN⁺ 2025-06-01
Hacker-News-Kommentare
  • Ich teile das, weil ich mich erinnere, dass der Buttplug-Standard auf Hacker News schon mehrfach diskutiert wurde.
  • Ich finde schon das Wort Teledildonics an sich beeindruckend.
    • Einerseits denke ich darüber nach, zu BO.io beizutragen und das in meinen Lebenslauf zu schreiben, andererseits habe ich auch ein mulmiges Gefühl, weil das bei meinem Pentest-Abschnitt wohl nur noch seltsamere Fragen aufwerfen würde.
  • Geteilt werden nützliche Hinweise zu Deldo, einem Sextoy-Control- und Teledildonics-Modus für Emacs (https://news.ycombinator.com/item?id=29207607).
  • Jemand fragt scherzhaft, ob das dieses berühmte vibe coding sei.
    • Dabei wird direkt die Formulierung „We were vibe coding before it was cool“ von der Startseite von buttplug.io zitiert.
    • Außerdem fragt man sich, wie bei solchen Projekten UAT (User Acceptance Testing) wohl überhaupt aussieht.
    • Der OP scheint bei dieser Hardware ziemlich viel Sorgfalt investiert zu haben.
    • Auch https://github.com/profullstack/mcp-server ist ein Beispiel, das per vibe coding entstanden ist.
  • Erstaunlich ist, dass es schon seit Langem offene APIs zur Steuerung solcher Spielzeuge gibt.
    • Eigentlich würde man eher erwarten, dass jedes Gerät nur eine geschlossene proprietäre App anbietet, doch die Realität sieht anders aus.
    • Es wird vermutet, dass das vielleicht auch daran liegt, dass große Unternehmen nicht in diesen Markt eingestiegen sind.
    • Erläutert wird, dass die API in den meisten Fällen nicht offiziell vom Anbieter spezifiziert wird, sondern durch Reverse Engineering aus der Community entsteht.
      • Da die Produkte meist per Bluetooth verbunden werden, begnügt man sich bei der Sicherheit oft mit Pairing und räumlicher Nähe.
    • In Dänemark sind die meisten elektronischen Geräte im Haushalt nicht geschlossen, und Hacking ist auch nicht besonders schwierig.
      • Geräte wie Mikrowellen, elektrische Zahnbürsten, Router und E-Bikes sind ebenfalls einfache Hacking-Ziele.
      • Dass es deutlich mehr Sextoy-Hacker gibt, wird damit erklärt, dass sich hier einfach mehr Leidenschaft bündelt.
      • Früher dachte man, die E-Bike-Hacking-Community sei die größte, inzwischen könnte die Sextoy-Szene aber sogar größer sein.
      • Beim E-Bike-Hacking geht es meist darum, Geschwindigkeitsbegrenzungen zu entfernen oder Statistikfunktionen zu bekommen.
      • Ich bin kein Device-Hacker, konnte aber allein durch Suche die nötigen Tools leicht finden.
      • Tatsächlich ist die Sicherheit von Alltagsgeräten oft nicht besonders robust.
      • In Europa gibt es auch eine Kultur, lieber No-Name-Produkte statt Produkte großer Tech-Unternehmen zu kaufen.
      • Selbst Produkte großer Marken lassen sich oft leicht hacken, und mit der Hardware in der Hand scheint fast alles hackbar zu sein.
    • Es gibt die Ansicht, dass die hohe Zugänglichkeit der Community auch daher kommt, dass Cam-Streamer leicht eigene Geräteerweiterungen bauen können müssen.
      • Erwähnt wird der Fall, dass Lovesense auf Streaming-Seiten zum Synonym für „per Chat gesteuertes Spielzeug“ geworden ist.
    • In dieser Branche scheint Nutzerzufriedenheit oberste Priorität zu haben, weshalb das Ganze so offen wirkt.
    • Es wird vermutet, dass es viele offene Geräte aus China gibt, die meist einfach günstige generische Chips und Protokolle unverändert verwenden.
      • Auch Zuverlässigkeit und Sicherheit werden eher nachlässig behandelt, sodass Reverse Engineering nicht schwer ist.
      • Die Bluetooth-Verbindungen wirken billig und schlampig entworfen; teils wird die Verbindung sogar leicht durch den menschlichen Körper unterbrochen.
      • Der Controller scheint nur einfache Signale zu streamen, mit kaum zusätzlicher Verarbeitung oder Fehlerbehandlung.
  • Buttplug ist ein Open-Source-Standard- und Softwareprojekt zur Steuerung intimer Hardware wie Erwachsenenspielzeug.
  • Die .io-TLD wirkt für dieses Projekt wie die absolut perfekte Wahl.
    • Darauf gibt es amüsierte Reaktionen.
  • Ich bin qDot, Gründer und Projektleiter von https://buttplug.io.
    • Es ist zwar schon von der Startseite verschwunden, aber falls es Fragen gibt, ist ein AMA jederzeit willkommen.
  • Mit geplanten ChatGPT-Aufgaben in diesem System könnte das ein wirklich ungewöhnlicher Wecker werden.
    • Da auch eine Home-Assistant-Integration unterstützt wird, ließe es sich vielleicht sogar für Benachrichtigungen wie das Öffnen des Garagentors verwenden.
  • Falls jemand sagt, Big Tech zwinge einem KI-Funktionen auf, die niemand wolle, würde ich diese Seite gern bookmarken und zeigen.
  • Ich bin der Autor, und dieses Projekt ist ein „nutzloses“ persönliches Projekt, das zum 1. April entstanden ist.
    • Jedes Jahr lade ich zum Spaß ein Aprilscherz-Projekt auf GitHub hoch.
    • Dieser MCP-Server hat für den realen Einsatz wenig Bedeutung, aber weil ein Anfang wichtig ist, habe ich ihn veröffentlicht.
    • Vor zwei Jahren hatte ich Buttplug mit einem SSH-Chatroom verbunden und dabei digitale Einwilligung mit SSH-Schlüsseln kombiniert, um einen anonymisierten Zugriffsgraphen aufzubauen.
    • Auch heute bin ich zwar kein Maintainer von Buttplug.io, habe aber auf Discord an vielen Diskussionen teilgenommen.
    • Es wird auch mitgeteilt, dass unter den Rustaceans neue Maintainer gesucht werden.
    • Der MCP-Server wurde in Golang geschrieben, aber für das Buttplug-Ökosystem scheint Rust besser zu passen.
    • Früher habe ich zu Haptics geforscht und dabei einschlägige Patente sowie Erfahrung mit VRML-Integration gesammelt.
    • Ich habe außerdem Erfahrung mit einem durch NIH-Fördermittel finanzierten Diagnosegerät für sexuelle Funktion sowie mit selbstgebautem Spielzeug.
    • Derzeit forsche ich mit dem Neurable-EEG-Headset zu Biaerolar Beats (https://github.com/ConAcademy/biareolar-beats).
    • Ich habe zwar per vibe coding ein LELO F1 zum Vibrieren gebracht, aber dieses Projekt ist tatsächlich von Hand codiert.
    • Kürzlich habe ich auch zusammen mit Claude und Gemini vibe code über das A2A-Protokoll ausprobiert, aber die Implementierung war schwierig.
    • In dieser Woche habe ich drei MCP-Server gebaut (Geld, Sex und Drogen), und hinsichtlich offener Daten und praktischer KI-Ergebnisse ist AgentDank (https://github.com/AgentDank/dank-mcp) am interessantesten.
    • Benutzerdefinierte Daten und SQL-Endpunkte an Tool-calling-LLMs anzubinden, hat meiner Meinung nach enormes Potenzial.
  • Auf die Bemerkung „Das ist ineffiziente sexuelle Interaktion“ kommt die Antwort: „Das ist jedermanns eigene Sache.“
  • Jemand fragt, wie andere die Datenschutzprobleme bei verschiedenen Diensten sehen.
    • Früher konnte man einfach ein Produkt kaufen und es ohne jede Beziehung zum Anbieter verwenden, doch heute hat sich die Lage wie bei VR-Headsets und anderen Diensten stark verändert.