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
Uf... no sé si decir que esto llegó demasiado pronto para nosotros...
Opiniones de Hacker News
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
Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comentarios
¿Por qué este mercado es distinto? ¿Será porque las grandes empresas evitan este mercado y todavía no alcanzaron a arruinarlo?
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?
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...
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
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
Ya bajó bastante en la portada, pero pueden preguntarme lo que sea
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
a2a4a2acon 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 cosasEn 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-goEl ú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