- Buttplug MCP est un serveur MCP qui connecte les appareils pour adultes de l’écosystème Buttplug.io à des programmes basés sur des grands modèles de langage (LLM)
- Les utilisateurs peuvent, via des outils LLM comme Claude Desktop, consulter les informations des appareils ou contrôler diverses fonctions comme les vibrations, l’état de la batterie ou l’intensité du signal
- À l’heure actuelle, le projet manque encore de maturité fonctionnelle et de stabilité, si bien que l’ensemble ne fonctionne pas de manière fluide et que le contrôle réel des appareils reste difficile
- L’intégration avec des hôtes MCP comme Ollama et mcphost permet des tests basés sur les outils, mais certaines fonctions (comme l’exploration des ressources) restent limitées
- Par rapport à d’autres services MCP, ce projet se distingue par sa spécialisation dans le contrôle d’appareils intelligents via LLM, et il est proposé gratuitement en open source
Aperçu du projet
- buttplug-mcp est un serveur Model Context Protocol (MCP), dédié à l’écosystème Buttplug.io
- Depuis des programmes LLM prenant en charge les outils, comme Claude Desktop, il est possible d’interroger et de contrôler ses appareils Buttplug
- Exemples de commandes : "Quels sont mes appareils buttplug connectés ?", "Règle le deuxième moteur du LELO F1S à 50 %", "Quel est le niveau de batterie du Lovense Max 2 ?", "Le signal du WeWibe est-il faible ?"
- Ces exemples reflètent bien la direction visée, mais l’expérience actuelle réellement implémentée reste instable et décevante
Structure des ressources et des outils pris en charge
- Ressources API
/devices : liste des appareils Buttplug connectés (JSON)
/device/{id} : informations détaillées d’un appareil
/device/{id}/rssi : intensité du signal de l’appareil (RSSI)
/device/{id}/battery : niveau de batterie par appareil
- Outils
device_vibrate : paramètres id, motor, strength (obligatoires : id, strength), avec sélection optionnelle du moteur pour contrôler la vibration
Exemple de schéma JSON (ressources)
{
"resources": [
{
"uri": "devices",
"name": "Device List",
"description": "List of connected Buttplug devices in JSON",
"mimeType": "application/json"
}
]
}
Exemple de schéma JSON (outils)
{
"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"
}
]
}
État actuel
- Il s’agit d’un projet expérimental de courte durée lancé le 1er avril 2025 (poisson d’avril)
- La gestion des connexions de la bibliothèque go-buttplug étant instable, l’interrogation de la liste des appareils fonctionne, mais certains contrôles comme les vibrations ne marchent pas correctement
- Un appareil virtuel serait nécessaire pour les tests, mais Buttplug.io ne prend en charge que les appareils physiques
- Le projet en est à un stade précoce, avec des tests end-to-end encore insuffisants
- À l’avenir, les problèmes de connexion de la bibliothèque go-buttplug ainsi que l’état des hôtes du protocole MCP (notamment leur implémentation centrée sur les outils) feront l’objet d’un examen supplémentaire
Installation
- Des binaires multiplateformes sont distribués via GitHub Releases
- L’installation via Homebrew est également prise en charge :
brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
Utilisation
Intégration avec Ollama et mcphost
Build
- Système de build basé sur task
- Outils de test utiles :
task stdio-schema | jq (vérification du schéma JSON)
npx @modelcontextprotocol/inspector node build/index.js (interface Web GUI de MCP Inspector)
Arguments CLI
- Options principales :
-h, --help : aide
-l, --log-file : définir la destination du fichier de log
-j, --log-json : format de logs JSON
--sse : utiliser le transport SSE
--sse-host : hôte/port pour la connexion SSE
-v, --verbose : logs détaillés
--ws-port : port de connexion au serveur Websocket Buttplug
Contribution et code de conduite
- Les Pull Requests, forks, etc. sont librement bienvenus
- Respect du Code of Conduct requis
Crédits et licence
- Utilise les projets open source go-buttplug et go-mcp
- Inclut la bibliothèque Golang Buttplug.io et ses exemples, ainsi que la bibliothèque Golang du Model Context Protocol
- Copyright 2025 Neomantra BV, Evan Wies (ConAcademy)
- Publié sous licence MIT (voir LICENSE.txt pour le détail)
2 commentaires
Ouh… on va peut-être dire que c’est encore trop tôt pour nous…
Avis sur Hacker News