1 Punkte von GN⁺ 2025-06-01 | 2 Kommentare | Auf WhatsApp teilen
  • buttplug-mcp ist ein Model-Context-Protocol-Server für das Buttplug.io-Ökosystem, der es toolfähigen LLM-Programmen wie Claude Desktop ermöglicht, verbundene Genital Interface Devices abzufragen und zu steuern
  • Zu den Funktionen gehören die Ressourcen /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery sowie das Tool device_vibrate; die Vibrationsstärke wird im Bereich 0.0 bis 1.0 angegeben
  • Der aktuelle Status ist experimentell und instabil; das Projekt wurde am 01.04.2025 als schnelles Lernprojekt gestartet, und wegen der instabilen Verbindungsbehandlung von go-buttplug konnten End-to-End-Tests nicht ordentlich abgeschlossen werden
  • Zur Nutzung muss Intiface Central gestartet werden, um den Port des WebSocket-Servers zu prüfen; anschließend werden in der Konfiguration eines MCP-Hosts wie Claude Desktop die ausführbare Datei buttplug-mcp und Argumente wie --ws-port 12345 eingetragen
  • Bei lokaler Inferenz auf Basis von Ollama wurden Tool-Aufrufe mit mcphost ausprobiert, doch in dieser Umgebung werden nur Tools unterstützt, keine Resources, sodass Geräteauflistung und Detailabfragen nicht möglich sind

Projektziel und unterstützter Umfang

  • buttplug-mcp ist ein Model Context Protocol-Server, der es LLM-Programmen ermöglicht, mit dem Buttplug.io ecosystem verbundene Geräte abzufragen und zu steuern
  • Für toolfähige LLM-Programme wie Claude Desktop sind Prompts wie die folgenden als Ziel vorgesehen
    • Verbundene Buttplug-Geräte abfragen
    • Einen bestimmten Motor eines bestimmten Geräts auf 50 % Stärke setzen
    • Den Akkustand des Lovense Max 2 prüfen
    • Prüfen, ob das Signal des WeWibe schwach ist
  • Das README weist ausdrücklich darauf hin, dass die oben beschriebene Erfahrung der Zielzustand ist und die aktuelle Erfahrung instabil und frustrierend ist

MCP-Ressourcen und Tools

  • Die unterstützten Ressourcen konzentrieren sich darauf, verbundene Geräte und Gerätezustände im JSON-Format abzufragen
    • /devices: Liste der verbundenen Buttplug-Geräte
    • /device/{id}: Geräteinformationen anhand der numerischen ID aus /devices
    • /device/{id}/rssi: RSSI-Signalpegel anhand der Geräte-ID
    • /device/{id}/battery: Akkustand anhand der Geräte-ID
  • Als unterstütztes Tool gibt es nur device_vibrate
    • Parameter sind id, optional motor, strength
    • Der Standardwert für motor ist 0
    • strength ist ein Zahlenbereich, bei dem 0.0 aus und 1.0 maximale Stärke bedeutet
  • Das README enthält schema_resources.json und schema_tools.json als Beispiele für JSON Schemas der Ressourcen und Tools

Aktueller Status und Einschränkungen

  • Das Projekt wurde am 01.04.2025, dem April Fool’s Day, gestartet und ist ein schnelles Lernprojekt, das nach dem am Vortag erstellten experimentellen MCP-Service dbn-go für Finanzmarktdaten entstand
  • Es funktioniert, aber die Verbindungsbehandlung der zugrunde liegenden Bibliothek go-buttplug wird als instabil beschrieben
  • Die Geräteliste konnte mit Claude abgefragt werden, aber ein bestimmtes Gerät vibrierte selbst nur mit Intiface Central nicht und wirkte wie in einem „Read-only-Modus“
  • Als weitere Einschränkung wird genannt, dass virtuelle Buttplug.io-Geräte hilfreich wären, um ohne physische Geräte testen zu können
  • Das README stellt klar, dass echte End-to-End-Tests noch nicht abgeschlossen wurden
  • Künftig müsse man die Ursache der Verbindungsinstabilität von go-buttplug weiter untersuchen und verstehen, wie MCP-Hosts Tools, Resources und Resource Templates derzeit unterstützen

Installation und Nutzung mit Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Zur Nutzung muss die Hub-Anwendung Intiface Central heruntergeladen werden, um Geräte zu verwalten und den Server-Port zu prüfen
    • Als Standardport wird offenbar 12345 angegeben
  • In Claude Desktop werden in der MCP-Server-Konfiguration die ausführbare Datei und der WebSocket-Port eingetragen
    • Ein Beispielpfad für die Installation per Homebrew unter MacOS ist /opt/homebrew/bin/buttplug-mcp
    • Das Konfigurationsbeispiel verwendet --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}
  • Die Einrichtung von Claude Desktop folgt dem MCP User Quickstart, wobei die obige Konfiguration als Ersatz verwendet wird

Experimente mit Ollama und mcphost

  • Für lokale Inferenz kann ein MCP-Host verwendet werden, der Ollama unterstützt
  • Es muss ein Ollama LLM verwendet werden, das Tools unterstützt
  • In den Experimenten wurde mcphost genutzt; dieses Projekt ist ein MCP-Host vom Entwickler der Bibliothek mcp-go
  • Das Ausführungsbeispiel speichert die obige Konfiguration in mcp.json und startet sie dann mit dem Modell llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • Laut README werden in mcphost nur Tools unterstützt, nicht aber Resources, sodass Geräte weder aufgelistet noch im Detail abgefragt werden konnten
  • Mit phi4-mini erhielt der Aufruf des Tools device_vibrate eine erfolgreiche Antwort, doch wegen der oben beschriebenen aktuellen Statusprobleme vibrierte das physische Gerät nicht

Build, Test-Tools und CLI

  • Der Build wird mit task durchgeführt; das resultierende Binary wird unter bin/buttplug-mcp erstellt
task
  • Der Build-Prozess führt nach go mod tidy den Befehl go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go aus
  • Nützliche Test-Tools sind unter anderem
    • task stdio-schema | jq: JSON-Schema-Ausgabe
    • npx @modelcontextprotocol/inspector node build/index.js: MCP Inspector Web GUI
  • Die CLI-Optionen unterstützen Hilfe, Logdatei, JSON-Logs, SSE-Transport, SSE-Host, ausführliche Logs und die Konfiguration des Buttplug-WebSocket-Serverports
    • --ws-port int: Port für die Verbindung zum Buttplug-WebSocket-Server
    • --sse: SSE Transport statt Standard-STDIO verwenden
    • --log-file string: Ziel für die Logdatei oder Nutzung der Umgebungsvariable MCP_LOG_FILE
    • --log-json: JSON-Logs verwenden
    • --verbose: ausführliche Logs verwenden

2 Kommentare

 
bbulbum 2025-06-03

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

 
GN⁺ 2025-06-01
Meinungen auf Hacker News
  • Es gab schon einige frühere HN-Diskussionen zum Buttplug-Standard, und natürlich auch eine „Implementierung in 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
    • Schon das Wort Teledildonics ist wirklich großartig. Fast so sehr, dass man zu BO.io beitragen möchte, um den Lebenslauf aufzuhübschen; in Kombination mit dort aufgeführter Erfahrung im Penetration Testing könnten daraus allerdings unangenehme Fragen entstehen. Irgendwie käme dann wohl auch noch das Thema Backdoors dazu
    • In dem Zusammenhang gab es auch Deldo, einen Sextoy-Control- und Teledildonics-Modus für Emacs
      Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comments
  • Ist das dieses „vibe coding“, von dem man heutzutage ständig hört?
    • Auf der Startseite von buttplug.io steht bereits: „We were vibe coding before it was cool.“
    • https://github.com/profullstack/mcp-server soll tatsächlich per Vibe Coding entstanden sein
    • Ich frage mich, wie wohl die User Acceptance Tests für so ein Projekt ausgesehen haben
    • Der Autor des Originalbeitrags hat sich darüber vermutlich ziemlich viele Gedanken gemacht. Bei so etwas muss man schließlich sehr tief in die Hardware-Spezifikationen eintauchen
  • Ich habe schon ein paar APIs zur Steuerung solcher Toys gesehen, und jedes Mal war ich überrascht, wie offen sie sind. Ich hätte eher erwartet, dass jedes Gerät mit einer abgeschotteten proprietären App kommt und niemand öffentlich meckert, weil es peinlich wäre
    Warum ist dieser Markt anders? Liegt es daran, dass große Unternehmen ihn meiden und ihn deshalb noch nicht kaputtgemacht haben?
    • Soweit ich weiß, sind solche APIs nicht von den Herstellern öffentlich dokumentiert, sondern von der Community reverse-engineered. Die Toys selbst basieren auf Bluetooth, sodass Pairing und räumliche Nähe fast die gesamte Sicherheit ausmachen
    • Bei elektronischen Geräten, wie man sie in dänischen Haushalten häufig findet, ist nicht besonders viel wirklich verriegelt. Dinge mit Computern darin, etwa Mikrowellen, elektrische Zahnbürsten, Router oder E-Bikes, lassen sich im Allgemeinen recht leicht „hacken“; bei Sextoys dürfte der Unterschied vor allem darin liegen, wie viel Aufwand Leute dafür investieren
      Bevor ich diesen Artikel gesehen habe, dachte ich, die E-Bike-Community sei die größte Hacker-Community für Alltags-Elektronik. In Europa gibt es ziemlich viel Hacking an E-Bike-Computern; teils geht es darum, Geschwindigkeitsbegrenzungen aufzuheben, was aber illegal ist und in dänischen Großstädten auch mit hoher Wahrscheinlichkeit auffällt
      Ich habe es hauptsächlich wegen Statistiken gemacht. Mein E-Bike-Computer setzte die „aktuelle“ Fahrstrecke alle 500 km zurück und speicherte die Gesamtfahrstrecke anderswo; wenn das Rad in die Werkstatt kam, wurde auch das zurückgesetzt. Auf dem Standardbildschirm gab es nicht einmal eine Uhr, daher war mein Hauptgrund, eine Uhr aufs Display zu bekommen; inzwischen habe ich auch Backups der Fahrstrecke und ein paar Spaß-Statistiken ergänzt
      Wenn ich es in die Werkstatt gebe, flashe ich es wieder auf Werkseinstellungen zurück. Ich bin überhaupt kein Geräte-Hacker, konnte aber allein durch Suchen die passenden Tools für meine Marke finden und damit machen, was ich wollte. Ich denke, die meisten Alltagsgeräte haben kaum Sicherheit. Vielleicht liegt das daran, dass Europäer, die nicht wollen, dass die NSA über Google Camera hineinschaut, eher etwas kaufen, das nicht von einem großen Tech-Unternehmen stammt; aber auch Produkte großer Marken wie Bosch sind ziemlich hackbar. Wenn man die Hardware in der Hand hat, ist am Ende nicht fast alles hackbar?
    • Vermutlich liegt es an der Nachfrage nach Erweiterungen für Cam-Streamer und Streaming-Plattformen. Lovense ist zum Beispiel auf Streaming-Seiten praktisch zum Synonym für „per Chat gesteuerte Toys“ geworden
    • Es könnte auch daran liegen, dass Menschen in diesem Bereich daran gewöhnt sind, allerlei Mühen auf sich zu nehmen, um Kundinnen und Kunden zufriedenzustellen
    • Meist handelt es sich nicht um vom Hersteller veröffentlichte APIs, sondern um reverse-engineerte Bluetooth-Protokolle. Auf der Buttplug-Seite gibt es Informationen zu Nachrichten und Protokollen, und ein Teil davon ist ziemlich chaotisch
      Unternehmen wie Lovense haben zwar signalisiert, dass sie bereit wären, eine API zu veröffentlichen, aber auf GitHub gibt es praktisch nur ein leeres Repository. Lovense ist eine merkwürdige Firma; alles deutet auf ungefähr ein oder zwei Personen in Taiwan hin, und sie ist ziemlich undurchsichtig
      Es gab auch fragwürdige Fälle. Gegen Marken wie Hytto/Lush [0] oder We-Vibe [1] gab es Sammelklagen
      [0] https://www.courthousenews.com/judge-forwards-class-action-s...

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

  • Laut https://buttplug.io/ ist Buttplug ein Open-Source-Standard und Softwareprojekt zur Steuerung von intimer Hardware wie Sexspielzeug und Sexmaschinen.
    Es wird als „Intimate Haptics Control Standard and Library“ beschrieben; eine ausführlichere Erklärung findet sich unter https://buttplug-spec.docs.buttplug.io/docs/spec.
  • Die .io-Top-Level-Domain ist die perfekte Wahl.
  • Ich hatte mich früher einmal für eine Vorlesung zu „Sicherheit von Verbrauchergeräten“ angemeldet und war überrascht, dass alle Beispiele des Vortragenden Fälle waren, in denen internetverbundene Sexspielzeuge Ärger gemacht hatten.
    Entweder waren personenbezogene Daten geleakt worden, oder ein Gerät hatte Nutzer „eingesperrt“ und dann Lösegeld verlangt. Ich saß am Schreibtisch und musste lachen, konnte aber nicht erklären, warum, weil der Inhalt viel zu NSFW war.
  • Wenn man das mit geplanten ChatGPT-Aufgaben verbindet, könnte daraus ein interessanter Wecker werden.
    • Es scheint eine Home-Assistant-Integration zu geben, also könnte man sich auch benachrichtigen lassen, wenn man vergessen hat, das Garagentor zu schließen.
  • Ich speichere mir das als Lesezeichen für den Fall, dass jemand sagt, ein großer Tech-Konzern könne keine unerwünschten KI-Funktionen aufzwingen.
  • Wow, hallo! Ich bin qDot, der Erfinder und Projektleiter von https://buttplug.io.
    Auf der ersten Seite ist es zwar schon ziemlich weit nach unten gerutscht, aber fragt mich ruhig alles.
  • Ich bin der Autor. Schön, das jetzt zu sehen, nachdem ich es am Aprilscherz gemacht habe — ein angenehmer Freitag. Jedes Jahr mache ich an dem Tag ein albernes persönliches Projekt; in jener Woche hatte ich mit MCP-Servern herumgespielt und dachte, es wäre lustig, das hier zu bauen. ConAcademy ist der Ort, an dem ich seltsame Ideen und Implementierungen ablege.
    Ich wollte in die README schreiben, dass dieser konkrete MCP-Server ziemlich nutzlos ist und definitiv nicht die Art ist, wie ich sexuelle Interaktion haben möchte. Aber irgendwo muss man anfangen, und der Good-Giving-Game-Ansatz passt zu uns, also habe ich es auf GitHub gestellt.
    Ironischerweise war mein Projekt vor zwei Jahren eine Integration von Buttplug in einen Charm-basierten SSH-Chatroom und eine BubbleTea-TUI. Dabei habe ich einen Teil der digitalen Zustimmung über SSH-Schlüssel abgebildet und als anonymen Graphen modelliert, welche Entität was mit den Geräten einer anderen Entität tun darf. Ich denke, die Zukunft von agentengesteuertem MCP wird solche Elemente brauchen.
    Ich bin nicht der Maintainer von Buttplug.io, habe mich aber eine Zeit lang mit ihnen auf Discord ausgetauscht. Wo ihr schon mal hinschaut: Falls unter euch Rustaceans mit Interesse sind, sucht das Projekt zusätzliche Maintainer. Dieser MCP-Server ist in Golang geschrieben, aber im Buttplug-Ökosystem wäre Rust vermutlich die bessere Wahl.
    Am Anfang meiner Laufbahn habe ich in der Haptikforschung gearbeitet und habe über Immersion auch mehrere einschlägige Patente. Meine Masterarbeit bestand darin, einen 3D-Haptik-Renderer zu schreiben und Haptik in VRML zu integrieren — falls ihr euch noch daran erinnert! Ich habe auch an einem NIH-geförderten Projekt zu Diagnosegeräten für sexuelle Dysfunktion gearbeitet und selbstgebaute Spielzeuge gefertigt. Jetzt habe ich gerade ein Neurable-EEG-Headset bekommen und arbeite an Biaerolar Beats [1].
    Zurück zum Thema Vibe Coding: Ja, ich habe damit einen LELO F1 vibrieren lassen, aber dieses Projekt ist wirklich von Hand gebaut. Vor ein paar Wochen habe ich versucht, a2a4a2a mit Claude und Gemini per Vibe Coding zu bauen, aber das A2A-Protokoll war so neu, dass es schwierig war, den Modellen A2A beizubringen. Ich frage mich, wie Leute im Allgemeinen mit so etwas umgehen.
    Insgesamt hat es Spaß gemacht, und ich habe viel über Tool-Calling-LLMs gelernt. In jener Woche habe ich drei MCP-Server gebaut: einen für Geld [2], einen für Sex [3] und einen für Drogen [4]. Dank mark3labs/mcp-go.
    Beim letzten, AgentDank [4], bin ich noch nicht zur Nacharbeit gekommen, aber im Hinblick auf öffentliche Daten und echte KI-Ergebnisse ist es wahrscheinlich das coolste. Schaut euch dort das Video an. Benutzerdefinierte Daten und SQL-Endpunkte an ein Tool-Calling-LLM anzubinden, ist absurd mächtig.
    [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
    • „Definitiv nicht die Art, wie ich sexuelle Interaktion haben möchte“ ist aber nur seine eigene Sicht.