1 pontos por GN⁺ 2025-06-01 | 2 comentários | Compartilhar no WhatsApp
  • Buttplug MCP é um servidor MCP que integra dispositivos adultos do ecossistema Buttplug.io com programas baseados em grandes modelos de linguagem (LLM)
  • Usuários podem consultar informações dos dispositivos e controlar várias funções, como vibração, nível de bateria e intensidade do sinal, por meio de ferramentas de LLM como o Claude Desktop
  • No momento, ainda faltam maturidade funcional e estabilidade, então o conjunto completo de recursos não funciona de forma fluida e há dificuldades no controle real dos dispositivos
  • É possível fazer testes baseados em ferramentas integrando com hosts MCP como Ollama e mcphost, mas alguns recursos, como exploração de recursos, são limitados
  • Em comparação com outros serviços MCP, este projeto é especializado em controle de dispositivos inteligentes via LLM e é oferecido gratuitamente como open source

Visão geral do projeto

  • buttplug-mcp é um servidor Model Context Protocol (MCP) dedicado ao ecossistema Buttplug.io
  • Em programas de LLM com suporte a ferramentas, como o Claude Desktop, é possível consultar e controlar seus dispositivos Buttplug
    • Exemplos de comando: "Quais são meus dispositivos buttplug conectados?", "Defina o segundo motor do LELO F1S em 50%", "Qual é a bateria restante do Lovense Max 2?", "O sinal do WeWibe está fraco?"
  • Esses exemplos estão próximos da direção pretendida, mas a experiência atual realmente implementada é instável e decepcionante

Estrutura de recursos e ferramentas suportados

  • Recursos da API
    • /devices: lista dos dispositivos Buttplug conectados (JSON)
    • /device/{id}: informações detalhadas de um dispositivo específico
    • /device/{id}/rssi: intensidade do sinal do dispositivo (RSSI)
    • /device/{id}/battery: nível de bateria por dispositivo
  • Ferramentas
    • device_vibrate: parâmetros id, motor e strength (obrigatórios: id e strength), com seleção opcional do motor para controlar a vibração

Exemplo de esquema JSON (recursos)

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

Exemplo de esquema JSON (ferramentas)

{
  "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 atual

  • É um projeto experimental de curto prazo iniciado em 1º de abril de 2025 (Dia da Mentira)
  • Como o gerenciamento de conexão da biblioteca go-buttplug é instável, é possível consultar a lista de dispositivos, mas alguns controles, como a vibração, não funcionam bem
  • Para testes seria necessário um dispositivo virtual, mas o Buttplug.io oferece suporte apenas a dispositivos físicos
  • Ainda está em fase inicial, sem testes end-to-end suficientes
  • No futuro, o projeto deve analisar mais a fundo os problemas de conexão da biblioteca go-buttplug e o estado dos hosts do protocolo MCP (como implementações centradas em ferramentas)

Instalação

  • Binários para múltiplas plataformas são distribuídos no GitHub Releases
  • Também há suporte à instalação via Homebrew:
    • brew tap conacademy/homebrew-tap
    • brew install conacademy/tap/buttplug-mcp

Como usar

  • O gerenciamento dos dispositivos é feito pelo app hub Intiface Central (porta padrão 12345)
  • No Claude Desktop, é necessário configurar o programa host para usar o buttplug-mcp como servidor MCP
    • Exemplo de configuração (arquivo JSON):
    {
      "mcpServers": {
        "buttplug": {
          "command": "/opt/homebrew/bin/buttplug-mcp",
          "args": ["--ws-port", "12345"]
        }
      }
    }
    
  • Após essa configuração, é possível aplicar seguindo o tutorial do Claude Desktop e consultar/controlar dispositivos conversando com o Claude
  • Também é possível aproveitar integrações adicionais, como controle de iluminação via HomeAssistant MCP

Integração com Ollama e mcphost

  • Entre os hosts MCP, há suporte ao Ollama, permitindo integração com LLMs com suporte a ferramentas
  • Pode ser usado junto com o mcphost (mantido pelo desenvolvedor do mcp-go) usando uma configuração MCP JSON para o buttplug-mcp
    • Exemplo:
    $ go install github.com/mark3labs/mcphost@latest
    $ mcphost -m ollama:llama3.3 --config mcp.json
    
  • Há suporte apenas a "Tools", e "Resources" é limitado, então não é possível listar dispositivos nem explorar propriedades
  • Em exemplos reais, a mensagem de sucesso pode ser retornada para um comando de vibração do dispositivo, mas o dispositivo pode não responder

Build

  • Usa um sistema de build baseado em task
    • Execução: $ task
  • Ferramentas de teste úteis:
    • task stdio-schema | jq (verificar o esquema JSON)
    • npx @modelcontextprotocol/inspector node build/index.js (GUI web do MCP Inspector)

Argumentos da CLI

  • Principais opções:
    • -h, --help: ajuda
    • -l, --log-file: define o destino do arquivo de log
    • -j, --log-json: formato de log em JSON
    • --sse: usa transporte SSE
    • --sse-host: host/porta para conexão SSE
    • -v, --verbose: log detalhado
    • --ws-port: porta de conexão com o servidor Websocket do Buttplug

Contribuição e código de conduta

  • Pull Requests, forks etc. são bem-vindos livremente
  • É necessário seguir o Code of Conduct

Créditos e licença

  • Utiliza os projetos open source go-buttplug e go-mcp
    • Inclui a biblioteca Golang do Buttplug.io, exemplos e a biblioteca Golang do Model Context Protocol
  • Copyright 2025 Neomantra BV, Evan Wies (ConAcademy)
  • Publicado sob a licença MIT (para mais detalhes da licença, consulte LICENSE.txt)

2 comentários

 
bbulbum 2025-06-03

Nossa... talvez seja cedo demais pra gente..

 
GN⁺ 2025-06-01
Opiniões no Hacker News
  • Lembrei que o padrão Buttplug já foi discutido várias vezes no Hacker News, então estou compartilhando
  • Acho impressionante a própria palavra Teledildonics
    • Cheguei a pensar em fazer commit no BO.io e colocar isso no currículo, mas também fico com a sensação estranha de que isso só aumentaria as perguntas bizarras na parte de pentest
  • Compartilhando informações que podem ser úteis sobre o Deldo, modo de controle de sex toys e teledildonics que roda no Emacs (https://news.ycombinator.com/item?id=29207607)
  • Perguntam em tom de brincadeira se isso é o famoso vibe coding
    • Citam diretamente a frase da página principal do buttplug.io: We were vibe coding before it was cool
    • Fico curioso para saber como seria o UAT (User Acceptance Testing) de um projeto desses
    • O OP parece ter dado bastante atenção a esse hardware
    • https://github.com/profullstack/mcp-server também é um caso criado com vibe coding
  • Acho curioso que já existam APIs públicas para controlar esse tipo de brinquedo há bastante tempo
    • O mais natural seria imaginar que cada dispositivo ofereceria apenas um app proprietário e fechado, mas a realidade é diferente
    • Fico me perguntando se isso aconteceu porque as grandes empresas nunca entraram nesse mercado
    • Explicam que, na maioria dos casos, não é o fabricante que especifica oficialmente a API, e sim a comunidade que a cria por engenharia reversa
      • Como os produtos normalmente se conectam via Bluetooth, muitas vezes consideram suficiente a segurança oferecida pelo pareamento e pela proximidade
    • Na Dinamarca, a maior parte dos eletrônicos domésticos não é fechada nem difícil de hackear
      • Dispositivos como micro-ondas, escovas de dente elétricas, roteadores e e-bikes também são alvos simples de hacking
      • Há muito mais hackers de sex toys porque esse nicho concentra mais paixão
      • Antes eu achava que a comunidade de hacking de e-bikes era a maior, mas talvez a de sex toys seja ainda maior
      • O hacking de e-bikes geralmente é feito para remover limites de velocidade ou obter funções de estatísticas
      • Não sou hacker de dispositivos, mas consegui encontrar facilmente as ferramentas necessárias só pesquisando
      • Na prática, muitos aparelhos do dia a dia realmente não têm segurança robusta
      • Na Europa, também existe uma cultura de preferir produtos sem marca em vez de produtos das grandes empresas de tecnologia
      • Mesmo os produtos de grandes marcas costumam ser fáceis de hackear e, tendo o hardware em mãos, parece possível hackear quase tudo
    • Há a opinião de que a acessibilidade da comunidade aumentou porque streamers de câmera precisam conseguir criar facilmente suas próprias extensões de dispositivo
      • É citado o caso da Lovesense, que se consolidou em sites de streaming como sinônimo de “brinquedo controlado pelo chat”
    • Parece que esse setor é mais aberto porque prioriza acima de tudo a satisfação do usuário
    • Supõe-se que existam muitos dispositivos abertos fabricados na China, usando chips e protocolos genéricos baratos quase sem alterações
      • Confiabilidade e segurança também tendem a ser tratadas com descuido, então a engenharia reversa não é muito difícil
      • A conexão Bluetooth parece barata e mal projetada, a ponto de até o corpo humano causar quedas de conexão com facilidade
      • O controlador aparentemente só transmite sinais simples, com pouco ou nenhum processamento adicional ou tratamento de erros
  • Buttplug é um padrão open source e um projeto de software para controlar hardware íntimo, como brinquedos adultos
  • Acho que o TLD .io combina perfeitamente com esse projeto
    • Houve reações engraçadas a isso
  • Sou qDot, fundador e líder do projeto em https://buttplug.io
    • Já saiu da página principal, mas se houver perguntas, um AMA é sempre bem-vindo
  • Acho que, se adicionarem tarefas agendadas do ChatGPT a esse sistema, daria para criar um despertador realmente diferente
    • Como também há suporte à integração com Home Assistant, talvez desse até para usar como alerta para coisas como portão da garagem abrindo
  • Se alguém disser que o Big Tech força funções de IA que ninguém quer, eu teria vontade de salvar este site nos favoritos e mostrar como exemplo
  • Sou o próprio autor, e este projeto foi um projeto pessoal “inútil” feito no Dia da Mentira
    • Todo ano eu faço alguma brincadeira de 1º de abril por diversão e acabo colocando no GitHub
    • Este servidor MCP não tem muito valor prático para uso real, mas o ponto de partida importa, então deixei publicado
    • Há 2 anos, eu havia integrado o Buttplug a uma sala de chat via SSH e combinei consentimento digital com chaves SSH para montar um grafo de acesso anonimizado
    • Ainda hoje eu não sou mantenedor do Buttplug.io, mas participei de várias discussões no Discord
    • Também repasso que estão procurando novos mantenedores entre os Rustaceans
    • O servidor MCP foi escrito em Golang, mas parece que Rust combina melhor com o ecossistema Buttplug
    • No passado, pesquisei haptics e tenho experiência com patentes relacionadas e integração com VRML
    • Também tenho experiência com um dispositivo de diagnóstico de função sexual criado com verba de pesquisa do NIH e com brinquedos que eu mesmo construí
    • Hoje estou pesquisando Biaerolar Beats com o headset EEG da Neurable (https://github.com/ConAcademy/biareolar-beats)
    • Já fiz o LELO F1 vibrar com vibe coding, mas este projeto foi realmente escrito na mão
    • Mais recentemente, também tentei fazer vibe code com protocolo A2A junto com Claude e Gemini, mas a implementação foi difícil
    • Naquela semana fiz 3 servidores MCP (dinheiro, sexo e drogas), e em termos de dados abertos e uso real com IA, o mais interessante é o AgentDank (https://github.com/AgentDank/dank-mcp)
    • Acho que conectar dados customizados e endpoints SQL a LLMs com chamada de ferramentas tem um potencial enorme
  • Diante da frase "essa é uma interação sexual ineficiente", a resposta foi "isso depende de cada um"
  • Fico curioso sobre o que pensam a respeito de questões de privacidade em vários serviços
    • Antes, bastava comprar o produto e usá-lo sem qualquer relação com o fornecedor, mas hoje a situação mudou muito, como aconteceu com headsets de VR e outros serviços