1 puntos por GN⁺ 2025-06-01 | 2 comentarios | Compartir por WhatsApp
  • buttplug-mcp es un servidor Model Context Protocol para el ecosistema Buttplug.io, que permite a programas LLM con soporte para herramientas, como Claude Desktop, consultar y controlar Genital Interface Devices conectados
  • Las funciones que ofrece son los recursos /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery y la herramienta device_vibrate; la intensidad de vibración se especifica en el rango 0.0~1.0
  • Su estado actual es experimental e inestable; comenzó el 2025-04-01 como un proyecto educativo rápido, y las pruebas end-to-end no se completaron correctamente debido a la inestabilidad en el manejo de conexiones de go-buttplug
  • Para usarlo, hay que ejecutar Intiface Central, verificar el puerto del servidor WebSocket y registrar el ejecutable buttplug-mcp y argumentos como --ws-port 12345 en la configuración de un host MCP como Claude Desktop
  • En inferencia local basada en Ollama, se experimentó con llamadas a herramientas mediante mcphost, pero en ese entorno solo se admiten Tools y no Resources, por lo que no es posible enumerar dispositivos ni consultar detalles

Objetivo del proyecto y alcance de soporte

  • buttplug-mcp es un servidor Model Context Protocol que permite a programas LLM consultar y controlar dispositivos conectados al ecosistema Buttplug.io
  • Está orientado a prompts como los siguientes en programas LLM con soporte para herramientas, como Claude Desktop
    • Consultar los dispositivos Buttplug conectados
    • Configurar un motor específico de un dispositivo específico al 50% de intensidad
    • Revisar el nivel de batería de un Lovense Max 2
    • Verificar si la señal de un WeWibe es débil
  • El README aclara que la experiencia anterior es el estado objetivo, y advierte que la experiencia actual es inestable y frustrante

Recursos y herramientas de MCP

  • Los recursos admitidos se enfocan en consultar los dispositivos conectados y el estado de los dispositivos en formato JSON
    • /devices: lista de dispositivos Buttplug conectados
    • /device/{id}: información del dispositivo basada en el ID numérico obtenido de /devices
    • /device/{id}/rssi: nivel de señal RSSI basado en el ID del dispositivo
    • /device/{id}/battery: nivel de batería basado en el ID del dispositivo
  • La única herramienta admitida es device_vibrate
    • Los parámetros son id, motor opcional y strength
    • El valor predeterminado de motor es 0
    • strength es un rango numérico donde 0.0 es apagado y 1.0 es intensidad máxima
  • El README incluye schema_resources.json y schema_tools.json como ejemplos de JSON Schema para recursos y herramientas

Estado actual y limitaciones

  • El proyecto comenzó el 2025-04-01, April Fool’s Day, y es un proyecto educativo rápido creado después del servicio MCP experimental para datos de mercados financieros dbn-go, hecho el día anterior
  • Funciona, pero se indica que el manejo de conexiones de la biblioteca base go-buttplug es inestable
  • Se pudo consultar la lista de dispositivos con Claude, pero un dispositivo específico no vibraba ni siquiera solo con Intiface Central y parecía estar en algo similar a “modo de solo lectura”
  • También se menciona como limitación que sería útil contar con dispositivos virtuales de Buttplug.io para poder hacer pruebas sin depender de dispositivos físicos
  • El README aclara que todavía no se completaron verdaderas pruebas end-to-end
  • A futuro, se indica que habrá que revisar más a fondo la causa de la inestabilidad de conexión de go-buttplug y entender cómo los hosts MCP soportan actualmente Tools, Resources y Resource Templates

Instalación y uso con Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Para usarlo, hay que descargar la aplicación hub Intiface Central para administrar los dispositivos y verificar el puerto del servidor
    • Se indica que el puerto predeterminado parece ser 12345
  • En Claude Desktop, se registra el ejecutable y el puerto WebSocket en la configuración del servidor MCP
    • Un ejemplo de ruta de instalación con Homebrew en MacOS es /opt/homebrew/bin/buttplug-mcp
    • El ejemplo de configuración usa --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}

Experimentos con Ollama y mcphost

  • Para inferencia local, se puede usar un host MCP compatible con Ollama
  • Hay que usar un LLM de Ollama que soporte herramientas
  • En los experimentos se usó mcphost, un host MCP creado por el desarrollador de la biblioteca mcp-go
  • El ejemplo de ejecución guarda la configuración anterior en mcp.json y luego ejecuta con el modelo llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • Según el README, mcphost solo soporta Tools y no Resources, por lo que no fue posible enumerar dispositivos ni consultar detalles
  • Con phi4-mini, la llamada a la herramienta device_vibrate recibió una respuesta exitosa, pero por los problemas de estado actual mencionados antes, el dispositivo real no vibró

Build, herramientas de prueba y CLI

  • El build se realiza con task, y el binario resultante se genera en bin/buttplug-mcp
task
  • El proceso de build ejecuta go mod tidy y luego go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
  • Algunas herramientas de prueba útiles son:
    • task stdio-schema | jq: imprime el JSON Schema
    • npx @modelcontextprotocol/inspector node build/index.js: GUI web de MCP Inspector
  • Las opciones de CLI admiten ayuda, archivo de log, logs JSON, transporte SSE, host SSE, logs verbose y configuración del puerto del servidor WebSocket de Buttplug
    • --ws-port int: puerto para conectarse al servidor WebSocket de Buttplug
    • --sse: usar SSE Transport en lugar de STDIO predeterminado
    • --log-file string: destino del archivo de log o uso de la variable de entorno MCP_LOG_FILE
    • --log-json: usar logs JSON
    • --verbose: usar logs detallados

2 comentarios

 
bbulbum 2025-06-03

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

 
GN⁺ 2025-06-01
Opiniones de Hacker News
  • Ya hubo algunas discusiones anteriores en HN sobre el estándar Buttplug y, por supuesto, también hubo una “implementación en Rust
    Buttplug: An open-source software suite for teledildonics (https://buttplug.io/) hace 5 años | 249 comentarios
    Empathy for the user having sex with your software (https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethic...) hace 10 meses | 127 comentarios
    T-code – A protocol for implementing UART serial communications to an adult toy (https://stpihkal.docs.buttplug.io/protocols/tcode.html) hace 2 años | 74 comentarios
    An open-source standards and software project for intimate hardware (maybe NSFW) (https://buttplug.io/) hace 7 años | 39 comentarios
    Buttplug Sex Toy Control Project Implemented in Rust (https://buttplug.io/) hace 2 años | 3 comentarios
    • La palabra teledildonics en sí es realmente increíble. Dan ganas de contribuir a BO.io para engordar el CV, aunque si se cruza con la experiencia en pruebas de penetración que uno puso ahí, podrían aparecer preguntas incómodas. Y de algún modo también vendría el tema de las backdoors
    • Relacionado con eso, también existía Deldo, un modo de control de juguetes sexuales y teledildonics para Emacs
      Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comentarios
  • ¿Esto es ese “vibe coding” del que tanto se escucha últimamente?
    • En la página principal de buttplug.io ya dice: “We were vibe coding before it was cool.”
    • Dicen que https://github.com/profullstack/mcp-server de hecho fue creado con vibe coding
    • Me pregunto cómo se verían las pruebas de aceptación de usuario para un proyecto así
    • El autor del post original probablemente lo pensó bastante. Para algo así hay que meterse muy a fondo en las especificaciones de hardware
  • He visto algunas veces APIs para controlar este tipo de juguetes, y siempre me sorprende lo abiertas que son. Yo esperaba que cada dispositivo viniera con su app propietaria cerrada, y que nadie se animara a quejarse públicamente por vergüenza
    ¿Por qué este mercado es distinto? ¿Será porque las grandes empresas evitan este mercado y todavía no alcanzaron a arruinarlo?
    • Hasta donde sé, esas APIs no fueron documentadas públicamente por los fabricantes, sino que la comunidad las obtuvo mediante ingeniería inversa. Los juguetes en sí están basados en Bluetooth, así que el emparejamiento y la cercanía son prácticamente toda la seguridad
    • No hay muchos dispositivos electrónicos comunes en hogares daneses que estén bien bloqueados. Cosas con computadora adentro, como microondas, cepillos de dientes eléctricos, routers o bicicletas eléctricas, suelen ser relativamente fáciles de “hackear”, y la diferencia con los juguetes sexuales probablemente sea la cantidad de esfuerzo que la gente les dedica
      Antes de ver este artículo, pensaba que la comunidad de bicicletas eléctricas era la comunidad hacker más grande dedicada a tocar dispositivos cotidianos. En Europa hay bastante hacking de computadoras de bicicletas eléctricas; algunos lo hacen para quitar los límites de velocidad, pero es ilegal y en las grandes ciudades de Dinamarca también es bastante probable que te atrapen
      Yo lo hice sobre todo por las estadísticas. La computadora de mi bici eléctrica reiniciaba la distancia “actual” cada 500 km y guardaba la distancia total en otro lugar, pero cuando entraba al taller también se reiniciaba. La pantalla principal ni siquiera tenía reloj, así que mi motivo principal era mostrar un reloj en la pantalla, y ahora también agregué respaldo del kilometraje y estadísticas por diversión
      Cuando la mando al taller, la vuelvo a flashear con la configuración de fábrica. No soy para nada un hacker de dispositivos, pero solo buscando pude encontrar herramientas para mi marca y hacer lo que quería. Creo que la mayoría de los dispositivos cotidianos tienen muy poca seguridad. Quizás sea porque los europeos que no quieren que la NSA los espíe con Google Camera compran cosas que no son de grandes tecnológicas, pero incluso productos de marcas grandes como Bosch son bastante hackeables. Si tienes el hardware en la mano, ¿al final no es hackeable casi todo?
    • Supongo que se debe a la demanda de poder crear extensiones para cam streamers y plataformas de streaming. Por ejemplo, Lovense se volvió casi sinónimo de “juguete controlado por chat” en sitios de streaming
    • También puede ser que, por las características del sector, la gente ya esté acostumbrada a hacer todo tipo de esfuerzos para satisfacer a los clientes
    • En la mayoría de los casos no es una API publicada por el fabricante, sino el protocolo Bluetooth obtenido por ingeniería inversa. El sitio de Buttplug tiene información sobre mensajes y protocolos, y parte de eso es bastante desastroso
      Lugares como Lovense dijeron que estaban dispuestos a publicar una API, pero en GitHub apenas tienen repositorios vacíos. Lovense es una empresa rara: todos los indicios apuntan a una o dos personas en Taiwán y es bastante opaca
      También hubo casos sospechosos. Hubo demandas colectivas contra marcas como Hytto/Lush [0] o We-Vibe [1]
      [0] [https://www.courthousenews.com/judge-forwards-class-action-s...](https://www.courthousenews.com/judge-forwards-class-action-suit-against-adult-toy-maker/

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

  • Según https://buttplug.io/, Buttplug es un estándar abierto y un proyecto de software para controlar hardware íntimo, como juguetes para adultos, máquinas sexuales, etc.
    Se describe como “Intimate Haptics Control Standard and Library”, y hay una explicación más detallada en https://buttplug-spec.docs.buttplug.io/docs/spec
  • El dominio de nivel superior .io es una elección perfecta
  • Hace tiempo me inscribí en una clase de “seguridad de dispositivos de consumo”, y me sorprendió que todos los ejemplos que dio el ponente fueran casos de juguetes sexuales conectados a internet que habían causado problemas
    Eran casos en los que se habían filtrado datos personales, o en los que el dispositivo había “encerrado” al usuario y luego exigía un rescate. Me estaba riendo en mi escritorio, pero el contenido era tan NSFW que no podía explicar por qué me reía
  • Si conectas esto con las tareas programadas de ChatGPT, podría convertirse en un despertador interesante
    • Parece que tiene integración con Home Assistant, así que también podrías recibir una notificación cuando se te olvide que dejaste abierta la puerta del garaje
  • Voy a guardar esto en favoritos para cuando alguien diga que una gran empresa tecnológica podría meter a la fuerza una función de IA no deseada
  • Vaya, ¡hola! Soy qDot, creador y líder del proyecto de https://buttplug.io
    Ya bajó bastante en la portada, pero pueden preguntarme lo que sea
  • Soy el autor. Qué viernes tan divertido, recién veo esto que hice para el Día de los Inocentes. Todos los años hago algún proyecto personal tonto para esa fecha, y esa semana estaba trasteando con servidores MCP, así que pensé que sería gracioso hacer esto. ConAcademy es donde subo ideas e implementaciones raras
    Quería poner en el README que este servidor MCP en particular es bastante inútil, y que definitivamente no es la forma en que quiero tener interacciones sexuales. Aun así, había que empezar por algún lado, y el enfoque de good-giving-game va con nuestro estilo, así que lo subí a GitHub
    Irónicamente, mi proyecto de hace 2 años fue integrar Buttplug en una sala de chat SSH basada en Charm y una TUI con BubbleTea. Usaba claves SSH para manejar parte del consentimiento digital y creaba un grafo anónimo de qué podía hacer una entidad en el dispositivo de otra. Creo que el futuro del MCP controlado por agentes necesitará elementos así
    No soy maintainer de Buttplug.io, pero he hablado con ellos en Discord durante un tiempo. Ya que están mirando, si hay algún Rustacean interesado, ese proyecto está buscando maintainers adicionales. Este servidor MCP está escrito en Golang, pero dentro del ecosistema Buttplug probablemente estaría mejor hecho en Rust
    Al inicio de mi carrera trabajé en investigación háptica y tengo varias patentes relacionadas a través de Immersion. Mi tesis de maestría consistió en escribir un renderer háptico 3D e integrar háptica en VRML. ¡Si es que lo recuerdan! También trabajé en un proyecto financiado por NIH sobre un dispositivo para diagnosticar disfunción sexual, y fabriqué juguetes caseros. Ahora acabo de recibir un headset EEG de Neurable y estoy investigando Biaerolar Beats [1]
    Volviendo al tema de vibe coding, sí hice vibrar un LELO F1 con esto, pero este proyecto en realidad lo hice a mano. Hace unas semanas intenté hacer vibe coding de a2a4a2a con Claude y Gemini, pero el protocolo A2A era tan nuevo que era difícil enseñarles A2A a los modelos. Me da curiosidad cómo suele manejar la gente este tipo de cosas
    En general fue divertido y aprendí mucho sobre LLM con llamadas a herramientas. Esa semana hice tres servidores MCP: uno para dinero [2], uno para sexo [3] y uno para drogas [4]. Gracias a mark3labs/mcp-go
    El último, AgentDank [4], todavía no he podido continuarlo, pero en cuanto a datos públicos y resultados reales de IA, probablemente sea el más genial. Vean el video de ahí. Conectar datos personalizados y endpoints SQL a un LLM con llamadas a herramientas es absurdamente potente
    [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
    • Eso de “definitivamente no es la forma en que quiero tener interacciones sexuales” es solo su criterio personal