1 points par GN⁺ 2025-06-01 | 2 commentaires | Partager sur WhatsApp
  • buttplug-mcp est un serveur Model Context Protocol pour l’écosystème Buttplug.io, qui permet à des programmes LLM compatibles avec les outils, comme Claude Desktop, d’interroger et de contrôler les Genital Interface Devices connectés
  • Les fonctions fournies sont les ressources /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery ainsi que l’outil device_vibrate, avec une intensité de vibration définie dans la plage 0.0 à 1.0
  • L’état actuel est expérimental et instable ; le projet a commencé le 2025-04-01 comme projet pédagogique rapide, et les instabilités de gestion de connexion de go-buttplug empêchent encore de mener correctement les tests end-to-end
  • Pour l’utiliser, il faut lancer Intiface Central, vérifier le port du serveur WebSocket, puis enregistrer dans la configuration de l’hôte MCP, comme Claude Desktop, l’exécutable buttplug-mcp et des arguments tels que --ws-port 12345
  • En inférence locale basée sur Ollama, des appels d’outils ont été testés avec mcphost, mais dans cet environnement seuls les Tools sont pris en charge et non les Resources, ce qui empêche l’énumération des appareils et la consultation détaillée

Objectif du projet et périmètre de prise en charge

  • buttplug-mcp est un serveur Model Context Protocol qui permet à des programmes LLM d’interroger et de contrôler les appareils connectés à l’écosystème Buttplug.io
  • Il vise des invites de ce type dans des programmes LLM compatibles avec les outils comme Claude Desktop
    • lister les appareils Buttplug connectés
    • régler un moteur précis d’un appareil donné à 50 % d’intensité
    • vérifier le niveau de batterie d’un Lovense Max 2
    • vérifier si le signal d’un WeWibe est faible
  • Le README précise que cette expérience correspond à l’état visé, tandis que l’expérience actuelle reste instable et frustrante

Ressources et outil MCP

  • Les ressources prises en charge se concentrent sur la consultation, au format JSON, des appareils connectés et de leur état
    • /devices : liste des appareils Buttplug connectés
    • /device/{id} : informations sur l’appareil à partir de l’ID numérique obtenu via /devices
    • /device/{id}/rssi : niveau de signal RSSI pour un ID d’appareil
    • /device/{id}/battery : niveau de batterie pour un ID d’appareil
  • Un seul outil est pris en charge : device_vibrate
    • les paramètres sont id, motor optionnel, et strength
    • la valeur par défaut de motor est 0
    • strength est une valeur numérique où 0.0 correspond à l’arrêt et 1.0 à l’intensité maximale
  • Le README inclut schema_resources.json et schema_tools.json comme exemples de schémas JSON pour les ressources et les outils

État actuel et limites

  • Le projet a démarré le 2025-04-01, jour du poisson d’avril, comme projet pédagogique rapide créé après le service MCP expérimental de données de marché financier dbn-go, réalisé la veille
  • Il fonctionne, mais la gestion des connexions de la bibliothèque sous-jacente go-buttplug est décrite comme instable
  • Avec Claude, il a été possible de récupérer la liste des appareils, mais certains appareils ne vibraient pas même via Intiface Central seul, donnant l’impression d’un « mode lecture seule »
  • Une autre limite mentionnée est l’absence d’un appareil Buttplug.io virtuel permettant de tester sans dépendre de matériel physique
  • Le README indique explicitement qu’aucun véritable test end-to-end n’a encore été mené à terme
  • La suite consiste à examiner plus en détail l’origine de l’instabilité des connexions dans go-buttplug, et à comprendre comment les hôtes MCP prennent actuellement en charge Tools, Resources et Resource Templates

Installation et utilisation avec Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Pour l’utiliser, il faut télécharger l’application hub Intiface Central afin de gérer les appareils et vérifier le port du serveur
    • le port par défaut semble être 12345
  • Dans Claude Desktop, il faut enregistrer l’exécutable et le port WebSocket dans la configuration du serveur MCP
    • un exemple de chemin d’installation Homebrew sur macOS est /opt/homebrew/bin/buttplug-mcp
    • l’exemple de configuration utilise --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}
  • La configuration de Claude Desktop suit le quickstart utilisateur MCP, en remplaçant toutefois la configuration par celle ci-dessus

Expériences avec Ollama et mcphost

  • En inférence locale, il est possible d’utiliser un hôte MCP compatible avec Ollama
  • Il faut utiliser un LLM Ollama compatible avec les outils
  • Les essais ont été réalisés avec mcphost, un hôte MCP créé par le développeur de la bibliothèque mcp-go
  • L’exemple d’exécution consiste à enregistrer la configuration précédente dans mcp.json, puis à lancer le modèle llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • D’après le README, dans mcphost, seuls les Tools sont pris en charge et non les Resources, ce qui empêchait de lister les appareils ou d’en consulter les détails
  • Avec phi4-mini, l’appel de l’outil device_vibrate a bien renvoyé une réponse de succès, mais à cause des problèmes d’état actuel mentionnés plus haut, l’appareil réel n’a pas vibré

Build, outils de test et CLI

  • Le build s’effectue avec task, et le binaire généré est bin/buttplug-mcp
task
  • Le processus de build exécute go mod tidy, puis go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
  • Outils de test utiles
    • task stdio-schema | jq : sortie du schéma JSON
    • npx @modelcontextprotocol/inspector node build/index.js : MCP Inspector Web GUI
  • Les options CLI prennent en charge l’aide, le fichier de logs, les logs JSON, le transport SSE, l’hôte SSE, les logs verbeux et la configuration du port du serveur WebSocket Buttplug
    • --ws-port int : port auquel se connecter pour le serveur WebSocket Buttplug
    • --sse : utilise le transport SSE au lieu du STDIO par défaut
    • --log-file string : destination du fichier de logs ou utilisation de la variable d’environnement MCP_LOG_FILE
    • --log-json : active les logs JSON
    • --verbose : active les logs détaillés

2 commentaires

 
bbulbum 2025-06-03

Ouh… on va peut-être dire que c’est encore trop tôt pour nous…

 
GN⁺ 2025-06-01
Avis sur Hacker News
  • Il y avait déjà eu quelques discussions sur HN à propos du standard Buttplug, et bien sûr aussi une « implémentation en Rust »
    Buttplug: An open-source software suite for teledildonics (https://buttplug.io/) il y a 5 ans | 249 commentaires
    Empathy for the user having sex with your software (https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethic...) il y a 10 mois | 127 commentaires
    T-code – A protocol for implementing UART serial communications to an adult toy (https://stpihkal.docs.buttplug.io/protocols/tcode.html) il y a 2 ans | 74 commentaires
    An open-source standards and software project for intimate hardware (maybe NSFW) (https://buttplug.io/) il y a 7 ans | 39 commentaires
    Buttplug Sex Toy Control Project Implemented in Rust (https://buttplug.io/) il y a 2 ans | 3 commentaires
    • Le terme teledildonics est vraiment incroyable en soi. Au point de donner envie de contribuer à BO.io pour étoffer son CV, même si, associé à une expérience en tests d’intrusion qui y serait mentionnée, cela pourrait susciter des questions gênantes. Sans compter les histoires de backdoors qui pourraient suivre
    • Dans le même registre, il y avait aussi Deldo, un mode de contrôle de sex toys et de teledildonics pour Emacs
      Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 commentaires
  • C’est ça, ce « vibe coding » dont on entend parler tout le temps en ce moment ?
    • La page d’accueil de buttplug.io dit déjà : “We were vibe coding before it was cool.”
    • https://github.com/profullstack/mcp-server aurait effectivement été créé en vibe coding
    • Je me demande à quoi ressemblent les tests d’acceptation utilisateur pour ce genre de projet
    • L’auteur du post original a sûrement dû pas mal y réfléchir. Pour ce genre de chose, il faut vraiment entrer en profondeur dans les spécifications matérielles
  • J’ai déjà vu plusieurs API pour contrôler ce genre de jouets, et à chaque fois je suis surpris de voir à quel point elles sont ouvertes. Je m’attendais plutôt à ce que chaque appareil soit livré avec son appli propriétaire verrouillée, et que personne n’ose se plaindre publiquement tellement ce serait embarrassant
    Pourquoi ce marché est-il différent ? Est-ce parce que les grandes entreprises l’évitent et n’ont pas encore réussi à le gâcher ?
    • À ma connaissance, ces API ne sont pas documentées publiquement par les fabricants : elles ont été rétro-ingéniérées par la communauté. Les jouets eux-mêmes reposent sur du Bluetooth, donc l’appairage et la proximité constituent à peu près toute la sécurité
    • Parmi les appareils électroniques courants dans un foyer danois, rares sont ceux qui sont vraiment verrouillés. Dès qu’il y a un ordinateur dedans — micro-ondes, brosse à dents électrique, routeur, vélo électrique — c’est en général assez facile à « hacker », et la différence avec les sex toys tient probablement surtout à la quantité d’efforts que les gens sont prêts à y consacrer
      Avant de voir cet article, je pensais que la communauté des vélos électriques était la plus grosse communauté de hackers s’intéressant aux appareils du quotidien. En Europe, il y a pas mal de hacking d’ordinateurs de vélos électriques, parfois pour supprimer la limitation de vitesse, même si c’est illégal et qu’on a de bonnes chances de se faire prendre dans les grandes villes danoises
      Moi, je l’ai surtout fait pour les statistiques. L’ordinateur de mon vélo électrique remettait à zéro le kilométrage « actuel » tous les 500 km et stockait le kilométrage total ailleurs, mais celui-ci était aussi réinitialisé quand le vélo passait à l’atelier. L’écran de base n’avait même pas d’horloge, donc ma principale motivation était d’afficher l’heure sur l’écran ; maintenant j’ai aussi ajouté une sauvegarde du kilométrage et des statistiques juste pour le fun
      Quand je l’envoie à l’atelier, je le reflashe avec les réglages d’usine. Je ne suis absolument pas hacker hardware, mais une simple recherche m’a permis de trouver les outils adaptés à ma marque et de faire ce que je voulais. Je pense que la plupart des appareils du quotidien ont très peu de sécurité. C’est peut-être parce que les Européens qui ne veulent pas que la NSA les observe via Google Camera achètent des produits qui ne viennent pas des grandes entreprises tech, mais même les produits de grandes marques comme Bosch sont assez hackables. Une fois qu’on a le matériel entre les mains, la plupart des choses ne finissent-elles pas par être hackables ?
    • C’est probablement dû à la demande pour des extensions destinées aux cam streamers et aux plateformes de streaming. Par exemple, Lovense est devenu presque synonyme de « jouet contrôlé par le chat » sur les sites de streaming
    • Cela tient peut-être aussi au fait que, dans ce milieu, les gens sont habitués à faire toutes sortes d’efforts pour satisfaire leurs clients
    • La plupart du temps, ce ne sont pas des API publiées par les fabricants, mais des protocoles Bluetooth rétro-ingéniérés. Le site de Buttplug contient des informations sur les messages et les protocoles, dont certaines sont assez bancales
      Des entreprises comme Lovense ont dit être prêtes à publier une API, mais sur GitHub cela se résume à des dépôts vides. Lovense est une entreprise étrange : tout semble pointer vers une ou deux personnes à Taïwan, et c’est très opaque
      Il y a aussi eu des cas douteux. Des recours collectifs ont été intentés contre des marques comme Hytto/Lush [0] ou We-Vibe [1]
      [0] https://www.courthousenews.com/judge-forwards-class-action-s...]

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

  • Selon https://buttplug.io/, Buttplug est un standard open source et un projet logiciel destiné à contrôler du matériel intime comme des accessoires pour adultes, des sex machines, etc.
    Il est décrit comme un « Intimate Haptics Control Standard and Library », avec une explication plus détaillée sur https://buttplug-spec.docs.buttplug.io/docs/spec
  • Le domaine de premier niveau .io est un choix parfait
  • Je m’étais inscrit autrefois à un cours sur la « sécurité des appareils grand public », et j’ai été surpris de voir que tous les exemples donnés par l’intervenant étaient des cas où des accessoires pour adultes connectés à Internet avaient mal tourné
    Il s’agissait soit de fuites de données personnelles, soit d’appareils qui « enfermaient » l’utilisateur avant de demander une rançon. Je riais à mon bureau, mais le contenu était tellement NSFW que je ne pouvais pas expliquer pourquoi je riais
  • En reliant ça aux tâches planifiées de ChatGPT, ça pourrait faire un réveil intéressant
    • Il semble y avoir une intégration Home Assistant, donc on pourrait aussi recevoir une notification quand on oublie qu’on a laissé la porte du garage ouverte
  • Je mets ça en favori pour la prochaine fois que quelqu’un dira qu’une grande entreprise tech pourrait imposer de force des fonctionnalités IA non désirées
  • Waouh, bonjour ! Je suis qDot, le créateur et responsable du projet https://buttplug.io
    C’est déjà bien descendu de la première page, mais vous pouvez me demander n’importe quoi
  • Je suis l’auteur. Découvrir maintenant quelque chose que j’ai fait pour le 1er avril, ça fait un vendredi amusant. Chaque année ce jour-là, je fais un projet perso idiot ; cette semaine-là, je bricolais des serveurs MCP et je me suis dit que ce serait drôle de faire ça. ConAcademy est l’endroit où je mets des idées et des implémentations bizarres
    Je voulais écrire dans le README que ce serveur MCP en particulier est assez inutile, et que ce n’est absolument pas la façon dont j’aimerais avoir des interactions sexuelles. Mais il faut bien commencer quelque part, et l’approche good-giving-game correspond à notre style, alors je l’ai mis sur GitHub
    Ironiquement, mon projet d’il y a deux ans consistait à intégrer Buttplug à un salon de chat SSH basé sur Charm et à une TUI BubbleTea. J’utilisais des clés SSH pour gérer une partie du consentement numérique, et je construisais un graphe anonyme de ce qu’une entité pouvait faire aux appareils d’une autre. Je pense que l’avenir du MCP contrôlé par des agents aura besoin de ce genre d’éléments
    Je ne suis pas mainteneur principal de Buttplug.io, mais j’ai échangé avec eux sur Discord pendant un moment. Puisque vous y jetez un œil, si des Rustaceans sont intéressés, ce projet cherche des mainteneurs supplémentaires. Ce serveur MCP est écrit en Golang, mais dans l’écosystème Buttplug, il serait probablement préférable qu’il soit en Rust
    Au début de ma carrière, je faisais de la recherche haptique, et j’ai plusieurs brevets liés via Immersion. Mon mémoire de master portait sur l’écriture d’un moteur de rendu haptique 3D et l’intégration de l’haptique dans VRML. Si vous vous en souvenez ! J’ai aussi travaillé sur un projet financé par le NIH autour d’appareils de diagnostic des troubles sexuels, et j’ai fabriqué des jouets maison. Là, je viens de recevoir un casque EEG Neurable et je travaille sur Biaerolar Beats [1]
    Pour revenir au vibe coding, oui, j’ai bien fait vibrer un LELO F1 avec ça, mais ce projet a vraiment été fait à la main. Il y a quelques semaines, j’ai essayé de vibe coder a2a4a2a avec Claude et Gemini, mais le protocole A2A était tellement récent qu’il était difficile d’enseigner A2A au modèle. Je me demande comment les gens gèrent ce genre de choses en général
    Dans l’ensemble, c’était amusant et j’ai beaucoup appris sur les LLM avec appels d’outils. Cette semaine-là, j’ai créé trois serveurs MCP : pour l’argent [2], pour le sexe [3] et pour les drogues [4]. Merci à mark3labs/mcp-go
    Le dernier, AgentDank [4], n’a pas encore eu de suite, mais en matière de données publiques et de vrais résultats IA, c’est probablement le plus cool. Regardez la vidéo là-bas. Brancher des données personnalisées et des endpoints SQL à un LLM avec appels d’outils, c’est absurdement puissant
    [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
    • « ce n’est absolument pas la façon dont j’aimerais avoir des interactions sexuelles » : ça, c’est seulement son point de vue