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
Nossa... talvez seja cedo demais pra gente..
Opiniões no Hacker News
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
Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comments
Por que esse mercado é diferente? Será porque as grandes empresas evitam esse mercado e ainda não conseguiram estragá-lo?
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?
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...
É descrito como “Intimate Haptics Control Standard and Library”, e há uma explicação mais detalhada em https://buttplug-spec.docs.buttplug.io/docs/spec
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
Já desceu bastante na primeira página, mas podem me perguntar qualquer coisa
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
a2a4a2acom 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 coisaNo 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-goO ú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