1 pontos por GN⁺ 2025-06-01 | 2 comentários | Compartilhar no WhatsApp
  • buttplug-mcp é um servidor Model Context Protocol para o ecossistema Buttplug.io, permitindo que programas de LLM com suporte a ferramentas, como o Claude Desktop, consultem e controlem Genital Interface Devices conectados
  • Os recursos oferecidos são /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery e a ferramenta device_vibrate; a intensidade da vibração é especificada no intervalo de 0,0 a 1,0
  • O estado atual é experimental e instável; o projeto começou em 2025-04-01 como um projeto educacional rápido, e os testes de ponta a ponta não foram concluídos adequadamente devido à instabilidade no tratamento de conexões do go-buttplug
  • Para usar, é preciso executar o Intiface Central, verificar a porta do servidor WebSocket e registrar o executável buttplug-mcp e argumentos como --ws-port 12345 na configuração de um host MCP, como o Claude Desktop
  • Em inferência local baseada em Ollama, chamadas de ferramentas foram experimentadas com mcphost, mas nesse ambiente há suporte apenas a Tools, não a Resources, o que impede listar dispositivos e consultar detalhes

Objetivo do projeto e escopo de suporte

  • buttplug-mcp é um servidor Model Context Protocol que permite consultar e controlar, a partir de programas de LLM, dispositivos conectados ao ecossistema Buttplug.io
  • O objetivo é permitir prompts como os seguintes em programas de LLM com suporte a ferramentas, como o Claude Desktop
    • Consultar dispositivos Buttplug conectados
    • Definir um motor específico de um dispositivo específico para 50% de intensidade
    • Verificar o nível de bateria do Lovense Max 2
    • Verificar se o sinal do WeWibe está fraco
  • O README deixa claro que a experiência acima é o estado desejado, e que a experiência atual é instável e frustrante

Recursos e ferramentas MCP

  • Os recursos compatíveis se concentram em consultar, em formato JSON, dispositivos conectados e o estado dos dispositivos
    • /devices: lista de dispositivos Buttplug conectados
    • /device/{id}: informações do dispositivo com base no ID numérico obtido em /devices
    • /device/{id}/rssi: nível de sinal RSSI com base no ID do dispositivo
    • /device/{id}/battery: nível de bateria com base no ID do dispositivo
  • A única ferramenta compatível é device_vibrate
    • Os parâmetros são id, motor opcional e strength
    • O valor padrão de motor é 0
    • strength é um intervalo numérico em que 0,0 significa desligado e 1,0 é a intensidade máxima
  • O README inclui schema_resources.json e schema_tools.json como exemplos de JSON Schema para recursos e ferramentas

Estado atual e limitações

  • O projeto foi iniciado em 2025-04-01, no April Fool’s Day, e é um projeto educacional rápido criado após o serviço MCP experimental para dados de mercado financeiro dbn-go, feito no dia anterior
  • Ele funciona, mas o tratamento de conexões da biblioteca de base go-buttplug é descrito como instável
  • Foi possível consultar a lista de dispositivos pelo Claude, mas um determinado dispositivo não vibrava nem mesmo apenas com o Intiface Central, parecendo estar em uma espécie de “modo somente leitura”
  • Também é citada a limitação de que seria útil haver dispositivos virtuais Buttplug.io para testar sem depender de dispositivos físicos
  • O README afirma que ainda não foram concluídos testes de ponta a ponta no sentido real do termo
  • Para o futuro, é necessário investigar mais a causa da instabilidade de conexão no go-buttplug e entender como os hosts MCP atualmente dão suporte a Tools, Resources e Resource Templates

Instalação e uso com Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Para usar, é preciso baixar o aplicativo hub Intiface Central para gerenciar os dispositivos e verificar a porta do servidor
    • A porta padrão parece ser 12345
  • No Claude Desktop, registre o executável e a porta WebSocket nas configurações do servidor MCP
    • Um exemplo de caminho de instalação via Homebrew no MacOS é /opt/homebrew/bin/buttplug-mcp
    • O exemplo de configuração usa --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}

Experimentos com Ollama e mcphost

  • Para inferência local, é possível usar um host MCP compatível com Ollama
  • É necessário usar um LLM do Ollama com suporte a ferramentas
  • Nos experimentos, foi usado mcphost, um host MCP criado pelo desenvolvedor da biblioteca mcp-go
  • O exemplo de execução salva a configuração anterior em mcp.json e roda com o modelo llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • Segundo o README, no mcphost há suporte apenas a Tools, não a Resources, portanto não foi possível listar dispositivos nem consultar detalhes
  • Com phi4-mini, a chamada da ferramenta device_vibrate recebeu uma resposta de sucesso, mas, devido aos problemas de estado atual mencionados anteriormente, o dispositivo real não vibrou

Build, ferramentas de teste e CLI

  • O build é feito com task, e o binário resultante é criado em bin/buttplug-mcp
task
  • O processo de build executa go mod tidy e depois go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
  • Ferramentas de teste úteis incluem
    • task stdio-schema | jq: saída do JSON Schema
    • npx @modelcontextprotocol/inspector node build/index.js: GUI Web do MCP Inspector
  • As opções da CLI dão suporte a ajuda, arquivo de log, logs em JSON, transporte SSE, host SSE, logs verbose e configuração da porta do servidor WebSocket Buttplug
    • --ws-port int: porta para conectar ao servidor WebSocket Buttplug
    • --sse: usar SSE Transport em vez do STDIO padrão
    • --log-file string: destino do arquivo de log ou uso da variável de ambiente MCP_LOG_FILE
    • --log-json: usar logs em JSON
    • --verbose: usar logs detalhados

2 comentários

 
bbulbum 2025-06-03

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

 
GN⁺ 2025-06-01
Opiniões no Hacker News
  • Já houve algumas discussões antigas no HN sobre o padrão Buttplug e, claro, também houve uma “implementação em Rust
    Buttplug: An open-source software suite for teledildonics (https://buttplug.io/) 5 years ago | 249 comments
    Empathy for the user having sex with your software (https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethic...) 10 months ago | 127 comments
    T-code – A protocol for implementing UART serial communications to an adult toy (https://stpihkal.docs.buttplug.io/protocols/tcode.html) 2 years ago | 74 comments
    An open-source standards and software project for intimate hardware (maybe NSFW) (https://buttplug.io/) 7 years ago | 39 comments
    Buttplug Sex Toy Control Project Implemented in Rust (https://buttplug.io/) 2 years ago | 3 comments
    • A própria palavra teledildonics é realmente incrível. Dá até vontade de contribuir com o BO.io para rechear o currículo, mas, se isso se cruzar com a experiência em testes de invasão anotada ali, pode render perguntas desconfortáveis. E provavelmente também viria alguma conversa sobre backdoors
    • Relacionado a isso, também existia o Deldo, um modo de controle de brinquedos adultos e 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 comments
  • Isso é o tal “vibe coding” de que tanto se fala ultimamente?
    • Na primeira página do buttplug.io já está escrito: “We were vibe coding before it was cool.”
    • Dizem que https://github.com/profullstack/mcp-server foi de fato criado com vibe coding
    • Fico curioso para saber como seriam os testes de aceitação do usuário de um projeto desses
    • O autor do post original deve ter pensado bastante nisso. Esse tipo de coisa exige mergulhar muito fundo nas especificações de hardware
  • Já vi algumas vezes APIs para controlar esse tipo de brinquedo e, sempre que vejo, fico surpreso com o quanto elas são abertas. Eu esperaria que cada dispositivo viesse com um app proprietário fechado e que ninguém reclamasse publicamente por vergonha
    Por que esse mercado é diferente? Será porque as grandes empresas evitam esse mercado e ainda não conseguiram estragá-lo?
    • Pelo que sei, essas APIs não são documentadas publicamente pelos fabricantes; foram engenheiradas reversamente pela comunidade. Os brinquedos em si são baseados em Bluetooth, então pareamento e proximidade são praticamente toda a segurança
    • Entre os eletrônicos que se encontram com frequência em lares dinamarqueses, não há muitos que sejam realmente bem travados. Coisas com computadores, como micro-ondas, escovas de dente elétricas, roteadores e bicicletas elétricas, em geral são relativamente fáceis de “hackear”, e a diferença dos brinquedos adultos provavelmente é a quantidade de esforço que as pessoas dedicam a eles
      Antes de ver este artigo, eu achava que a comunidade de bicicletas elétricas era a maior comunidade hacker mexendo em eletrônicos do dia a dia. Na Europa há bastante hack de computadores de bicicletas elétricas, em alguns casos para remover o limite de velocidade, mas isso é ilegal e a chance de ser pego em grandes cidades da Dinamarca também é alta
      Eu fazia isso principalmente por causa das estatísticas. O computador da minha bicicleta elétrica zerava a quilometragem “atual” a cada 500 km e armazenava a quilometragem total em outro lugar, mas, quando ia para a oficina, isso também era zerado. A tela padrão nem tinha relógio, então meu principal motivo era colocar um relógio no display; hoje também adicionei backup da quilometragem e estatísticas por diversão
      Quando envio para a oficina, faço flash de volta para as configurações de fábrica. Não sou hacker de dispositivos de forma alguma, mas só pesquisando consegui encontrar as ferramentas certas para a minha marca e fazer o que queria. Acho que a maioria dos dispositivos do dia a dia tem pouca segurança. Talvez seja porque europeus que não querem que a NSA espie pela Google Camera compram coisas que não são de grandes empresas de tecnologia, mas até produtos de grandes marcas como Bosch são bem hackeáveis. Quando você tem o hardware em mãos, no fim das contas quase tudo não é hackeável?
    • Acho que é pela demanda para criar extensões para streamers de câmera e plataformas de streaming. Por exemplo, Lovense virou quase sinônimo de “brinquedo controlado pelo chat” em sites de streaming
    • Também deve ter a ver com o fato de que, pelas características desse espaço, as pessoas já estão acostumadas a fazer todo tipo de esforço para satisfazer clientes
    • Na maior parte, não são APIs publicadas pelos fabricantes, mas sim protocolos Bluetooth que foram submetidos a engenharia reversa. O site do Buttplug tem informações de mensagens e protocolos, e algumas delas são bem bagunçadas
      Empresas como a Lovense disseram estar dispostas a publicar uma API, mas no GitHub é praticamente só um repositório vazio. A Lovense é uma empresa estranha; todos os indícios apontam para uma ou duas pessoas em Taiwan, e ela é bastante opaca
      Também houve casos suspeitos. Houve ações coletivas contra marcas como Hytto/Lush [0] ou We-Vibe [1]
      [0] https://www.courthousenews.com/judge-forwards-class-action-s...

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

  • Segundo https://buttplug.io/, Buttplug é um padrão aberto e projeto de software para controlar hardware íntimo, como brinquedos adultos, máquinas sexuais etc.
    É descrito como “Intimate Haptics Control Standard and Library”, e há uma explicação mais detalhada em https://buttplug-spec.docs.buttplug.io/docs/spec
  • O domínio de nível superior .io é uma escolha perfeita
  • Uma vez me inscrevi em uma palestra sobre “segurança de dispositivos de consumo” e fiquei surpreso porque todos os exemplos que o palestrante deu eram casos de brinquedos adultos conectados à internet causando problemas
    Eram casos em que dados pessoais vazaram, ou em que o dispositivo “prendia” o usuário e exigia resgate. Eu estava rindo na minha mesa, mas o conteúdo era tão NSFW que não dava para explicar por que eu estava rindo
  • Se juntar isso às tarefas agendadas do ChatGPT, pode virar um despertador interessante
    • Parece haver integração com o Home Assistant, então talvez dê para receber um alerta quando você esquecer a porta da garagem aberta
  • Vou deixar isso nos favoritos para quando alguém disser que uma grande empresa de tecnologia pode enfiar à força recursos de IA que ninguém pediu
  • Uau, olá! Sou qDot, criador e líder do projeto https://buttplug.io
    Já desceu bastante na primeira página, mas podem me perguntar qualquer coisa
  • Sou o autor. Ver agora algo que fiz no Dia da Mentira deixa esta sexta-feira divertida. Todo ano, nesse dia, faço algum projeto pessoal bobo; naquela semana eu estava mexendo com servidores MCP e achei que seria engraçado criar isto. ConAcademy é onde deixo ideias e implementações estranhas
    Eu pretendia escrever no README que este servidor MCP específico é bem inútil e definitivamente não é a forma como eu gostaria de ter interações sexuais. Ainda assim, é preciso começar de algum lugar, e o estilo good-giving-game é a nossa cara, então coloquei no GitHub
    Ironicamente, meu projeto de dois anos atrás foi integrar Buttplug a uma sala de bate-papo SSH baseada em Charm e a uma TUI em BubbleTea. Ele tratava parte do consentimento digital com chaves SSH e criava um grafo anônimo do que uma entidade poderia fazer aos dispositivos de outra entidade. Acho que o futuro do MCP controlado por agentes vai precisar desses elementos
    Não sou mantenedor principal do Buttplug.io, mas conversei com eles no Discord por um bom tempo. Já que vocês estão olhando, se houver algum Rustacean interessado, o projeto está procurando mantenedores principais adicionais. Este servidor MCP foi escrito em Golang, mas dentro do ecossistema Buttplug provavelmente seria melhor que fosse em Rust
    No começo da minha carreira trabalhei com pesquisa em háptica e tenho várias patentes relacionadas via Immersion. Minha dissertação de mestrado foi escrever um renderizador háptico 3D e integrar háptica ao VRML. Se é que vocês lembram disso! Também trabalhei em um projeto financiado pelo NIH para um dispositivo de diagnóstico de disfunção sexual, e fabriquei brinquedos caseiros. Agora acabei de receber o headset EEG da Neurable e estou fazendo a pesquisa Biaerolar Beats [1]
    Voltando ao assunto de vibe coding, é verdade que fiz um LELO F1 vibrar com isso, mas este projeto foi realmente feito à mão. Algumas semanas atrás tentei fazer vibe coding de a2a4a2a com Claude e Gemini, mas o protocolo A2A era tão novo que foi difícil ensinar A2A ao modelo. Em geral, fico curioso sobre como as pessoas lidam com esse tipo de coisa
    No geral foi divertido e aprendi bastante sobre LLMs com chamadas de ferramentas. Naquela semana criei três servidores MCP: um para dinheiro [2], um para sexo [3] e um para drogas [4]. Graças ao mark3labs/mcp-go
    O último, AgentDank [4], ainda não recebeu trabalho de acompanhamento, mas em termos de dados públicos e resultados reais de IA talvez seja o mais legal. É só ver o vídeo lá. Conectar dados personalizados e endpoints SQL a um LLM com chamadas de ferramentas é absurdamente poderoso
    [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
    • “definitivamente não é a forma como eu gostaria de ter interações sexuais” é só o critério dele