1 puntos por GN⁺ 2025-06-01 | 2 comentarios | Compartir por WhatsApp
  • Buttplug MCP es un servidor MCP que integra dispositivos para adultos dentro del ecosistema Buttplug.io con programas basados en modelos de lenguaje grandes (LLM)
  • Los usuarios pueden consultar información del dispositivo o controlar varias funciones como vibración, estado de batería e intensidad de señal mediante herramientas LLM como Claude Desktop
  • Actualmente, la completitud funcional y la estabilidad son insuficientes, por lo que no todas las funciones operan de forma fluida y hay dificultades para controlar dispositivos reales
  • Es posible hacer pruebas basadas en herramientas integrándolo con hosts MCP como Ollama y mcphost, pero algunas funciones (como exploración de recursos) están limitadas
  • En comparación con otros servicios MCP, este proyecto está especializado en el control de dispositivos inteligentes mediante LLM y se ofrece gratis como código abierto

Resumen del proyecto

  • buttplug-mcp es un servidor Model Context Protocol (MCP) exclusivo para el ecosistema Buttplug.io
  • Permite consultar y controlar tus dispositivos Buttplug desde programas LLM con soporte de herramientas como Claude Desktop
    • Comandos de ejemplo: "¿Cuáles son mis dispositivos buttplug conectados?", "Pon el segundo motor del LELO F1S al 50%", "¿Cuánta batería le queda al Lovense Max 2?", "¿La señal del WeWibe es débil?"
  • Los ejemplos anteriores reflejan la dirección deseada, pero la experiencia actual realmente implementada sigue siendo inestable y decepcionante

Recursos compatibles y estructura de herramientas

  • Recursos de API
    • /devices: lista de dispositivos Buttplug conectados (JSON)
    • /device/{id}: información detallada de un dispositivo individual
    • /device/{id}/rssi: intensidad de señal del dispositivo (RSSI)
    • /device/{id}/battery: nivel de batería de cada dispositivo
  • Herramientas
    • device_vibrate: parámetros id, motor, strength (obligatorios: id, strength); opcionalmente se puede especificar el motor para controlar la vibración

Ejemplo de esquema JSON (recursos)

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

Ejemplo de esquema JSON (herramientas)

{
  "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"
    }
  ]
}

Estado actual

  • Es un proyecto experimental de corta duración que comenzó el 1 de abril de 2025 (April Fools' Day)
  • La gestión de conexiones de la librería go-buttplug es inestable, así que aunque se puede consultar la lista de dispositivos, algunos controles como la vibración no funcionan bien
  • Para hacer pruebas se necesita un dispositivo virtual, pero Buttplug.io solo admite dispositivos físicos
  • Está en una etapa inicial en la que todavía no se han realizado suficientes pruebas end-to-end
  • Más adelante se revisarán con mayor profundidad tanto los problemas de conexión de la librería go-buttplug como el estado de los hosts del protocolo MCP (como las implementaciones centradas en herramientas)

Guía de instalación

  • Los binarios multiplataforma se distribuyen en GitHub Releases
  • También se admite instalación mediante Homebrew:
    • brew tap conacademy/homebrew-tap
    • brew install conacademy/tap/buttplug-mcp

Uso

  • La gestión de dispositivos se realiza desde la app hub Intiface Central (puerto predeterminado 12345)
  • Para usar buttplug-mcp como servidor MCP en Claude Desktop, es necesario configurarlo en el programa host
    • Configuración de ejemplo (archivo JSON):
    {
      "mcpServers": {
        "buttplug": {
          "command": "/opt/homebrew/bin/buttplug-mcp",
          "args": ["--ws-port", "12345"]
        }
      }
    }
    
  • Después de esta configuración, se puede aplicar siguiendo el tutorial de Claude Desktop y luego consultar y controlar dispositivos conversando con Claude
  • También puede aprovecharse una integración adicional, como el control de iluminación mediante HomeAssistant MCP

Integración con Ollama y mcphost

  • Entre los hosts MCP, hay soporte para Ollama, lo que permite integrarlo con LLM con soporte de herramientas
  • Puede usarse junto con mcphost (mantenido por el desarrollador de mcp-go) mediante una configuración MCP JSON para buttplug-mcp
    • Ejemplo:
    $ go install github.com/mark3labs/mcphost@latest
    $ mcphost -m ollama:llama3.3 --config mcp.json
    
  • Solo se admiten "Tools" y "Resources" está limitado, por lo que no es posible listar dispositivos ni explorar atributos
  • En ejemplos reales, puede devolverse un mensaje de éxito para el comando de vibración del dispositivo, pero el dispositivo podría no responder

Build

  • Se utiliza un sistema de build basado en task
    • Ejecutar: $ task
  • Herramientas de prueba útiles:
    • task stdio-schema | jq (verificación del esquema JSON)
    • npx @modelcontextprotocol/inspector node build/index.js (GUI web de MCP Inspector)

Argumentos de CLI

  • Opciones principales:
    • -h, --help: ayuda
    • -l, --log-file: especifica el destino del archivo de logs
    • -j, --log-json: formato de logs en JSON
    • --sse: usar transporte SSE
    • --sse-host: host/puerto para conexión SSE
    • -v, --verbose: logs detallados
    • --ws-port: puerto de conexión al servidor WebSocket de Buttplug

Contribuciones y código de conducta

  • Se aceptan libremente Pull Requests, forks, etc.
  • Es necesario cumplir el Code of Conduct

Créditos y licencia

  • Utiliza los proyectos de código abierto go-buttplug y go-mcp
    • Incluye la librería de Buttplug.io para Golang y sus ejemplos, así como la librería de Golang de Model Context Protocol
  • Copyright 2025 Neomantra BV, Evan Wies (ConAcademy)
  • Publicado bajo la licencia MIT (para más detalles, ver LICENSE.txt)

2 comentarios

 
bbulbum 2025-06-03

Uf... no sé si decir que esto llegó demasiado pronto para nosotros...

 
GN⁺ 2025-06-01
Comentarios de Hacker News
  • Recuerdo que en Hacker News ya se había hablado varias veces sobre el estándar Buttplug, así que lo comparto
  • La palabra Teledildonics en sí me parece increíble
    • Hasta pienso en hacer commits a BO.io y ponerlo en mi currículum, pero también me da cosa que solo termine generando preguntas rarísimas en mi sección de pentesting
  • Comparten información de referencia sobre Deldo, un modo de control de juguetes sexuales y teledildonics que funciona en Emacs (https://news.ycombinator.com/item?id=29207607)
  • Preguntan en broma si esto es el famoso vibe coding
    • Citan directamente la frase de la página principal de buttplug.io: We were vibe coding before it was cool
    • Se preguntan cómo será el UAT (User Acceptance Testing) de un proyecto así
    • El OP parece haber puesto bastante atención a este hardware
    • https://github.com/profullstack/mcp-server también es un caso hecho con vibe coding
  • Sorprende que desde hace tiempo exista una API pública para controlar este tipo de juguetes
    • Uno pensaría que lo normal sería que cada dispositivo ofreciera solo su app propietaria y cerrada, pero la realidad es distinta
    • Se preguntan si esto no habrá pasado porque las grandes empresas nunca entraron a este mercado
    • Explican que en la mayoría de los casos no es que el fabricante documente oficialmente la API, sino que la comunidad la obtiene mediante ingeniería inversa
      • Como los productos suelen conectarse por Bluetooth, muchas veces consideran suficiente la seguridad que dan el emparejamiento y la proximidad
    • En Dinamarca, la mayoría de los aparatos electrónicos del hogar no son cerrados ni especialmente difíciles de hackear
      • Dispositivos como microondas, cepillos de dientes eléctricos, routers y e-bikes también son objetivos sencillos de hackeo
      • Hay muchos más hackers de juguetes sexuales porque ahí es donde se concentra más pasión
      • Antes pensaban que la comunidad de hackeo de e-bikes era la más grande, pero sospechan que la de juguetes sexuales podría ser aún mayor
      • En e-bikes, casi siempre se hackea para quitar límites de velocidad o por funciones de estadísticas
      • No soy hacker de dispositivos, pero solo con buscar pude encontrar fácilmente las herramientas necesarias
      • En la práctica, muchos aparatos de uso diario no tienen una seguridad robusta
      • En Europa también existe una cultura de querer comprar productos sin marca en lugar de los de las grandes empresas tecnológicas
      • Incluso los productos de grandes marcas suelen ser fáciles de hackear y, si tienes el hardware, da la impresión de que casi todo se puede hackear
    • Opinan que la accesibilidad para la comunidad mejoró porque las streamers de cámara necesitan poder crear sus propias extensiones para dispositivos
      • Mencionan el caso de Lovesense, que se volvió prácticamente sinónimo de “juguete controlado por chat” en sitios de streaming
    • Da la impresión de que en esta industria se prioriza ante todo la satisfacción del usuario, y por eso se ve así de abierta
    • Suponen que hay muchos dispositivos abiertos fabricados en China y que en la mayoría de los casos usan tal cual chips y protocolos genéricos baratos
      • La confiabilidad y la seguridad también se tratan con descuido, así que la ingeniería inversa no resulta difícil
      • La conexión Bluetooth parece barata y flojamente diseñada; incluso puede cortarse fácilmente por el cuerpo humano
      • El controlador parece limitarse a transmitir señales simples, con poco procesamiento adicional o manejo de errores
  • Buttplug es un estándar y proyecto de software de código abierto para controlar hardware íntimo, como juguetes para adultos
  • Sienten que el TLD .io le queda perfecto a este proyecto
    • Hubo reacciones graciosas al respecto
  • Soy qDot, fundador y líder del proyecto de https://buttplug.io
    • Ya no está en la página principal, pero si tienen preguntas, un AMA siempre es bienvenido
  • Piensan que si se le agregaran tareas programadas de ChatGPT a este sistema, sería un despertador realmente diferente
    • También soporta integración con Home Assistant, así que podría usarse para alertas como la apertura de la puerta del garaje
  • Si alguien dice que Big Tech no quiere meterle funciones de IA a la fuerza a todo, dan ganas de guardar este sitio en marcadores y enseñárselo
  • Soy el autor, y este proyecto es un proyecto personal “inútil” hecho para el Día de los Inocentes
    • Cada año subo a GitHub algo hecho por diversión para esa fecha
    • Este servidor MCP no tiene mucho sentido para uso real, pero el punto de partida importa, así que lo dejé publicado
    • Hace dos años integré Buttplug con una sala de chat por SSH, y explico que combiné consentimiento digital y llaves SSH para construir un grafo de acceso anonimizado
    • Todavía no soy maintainer de Buttplug.io, pero participé en varias discusiones en Discord
    • También comentan que están buscando un nuevo maintainer entre los Rustaceans (miembros de la comunidad de Rust)
    • El servidor MCP fue escrito en Golang, pero parece que Rust encajaría mejor en el ecosistema de Buttplug
    • Antes investigaba haptics y tengo experiencia con patentes relacionadas e integración con VRML
    • También tengo experiencia con dispositivos de diagnóstico de función sexual creados con fondos de investigación del NIH y con juguetes fabricados por mí mismo
    • Ahora estoy investigando Biaerolar Beats con el headset EEG de Neurable (https://github.com/ConAcademy/biareolar-beats)
    • Hice vibrar un LELO F1 con vibe coding, pero este proyecto sí fue programado realmente a mano
    • Hace poco también intenté hacer vibe code con el protocolo A2A junto con Claude y Gemini, pero la dificultad de implementación fue alta
    • Esa semana hice 3 servidores MCP (dinero, sexo y drogas), y en términos de datos abiertos y resultados prácticos con IA, AgentDank (https://github.com/AgentDank/dank-mcp) es lo más interesante
    • Siento que conectar datos personalizados y endpoints SQL a LLMs con llamadas a herramientas tiene un potencial enorme
  • A la frase “esa es una interacción sexual ineficiente”, alguien responde: “eso depende de cada quien”
  • Se preguntan qué opinan sobre los problemas de privacidad en distintos servicios
    • Antes uno simplemente compraba el producto y lo usaba sin ninguna relación con el fabricante, pero hoy, como con los visores VR y otros servicios, la situación ha cambiado mucho