1 poin oleh GN⁺ 2025-06-01 | 2 komentar | Bagikan ke WhatsApp
  • Buttplug MCP adalah server MCP yang menghubungkan perangkat dewasa dalam ekosistem Buttplug.io dengan program berbasis large language model (LLM)
  • Pengguna dapat memakai tool LLM seperti Claude Desktop untuk melihat informasi perangkat atau mengontrol berbagai fungsi seperti getaran, status baterai, dan kekuatan sinyal
  • Saat ini kelengkapan fitur dan stabilitasnya masih kurang, sehingga keseluruhan fungsi belum berjalan mulus dan kontrol perangkat nyata masih mengalami kesulitan
  • Bisa diuji secara berbasis tool dengan terhubung ke host MCP seperti Ollama, mcphost, tetapi beberapa fungsi (seperti penelusuran resource) masih terbatas
  • Dibandingkan layanan MCP lain, proyek ini berfokus pada kontrol perangkat pintar berbasis LLM dan tersedia gratis sebagai open source

Gambaran proyek

  • buttplug-mcp adalah server Model Context Protocol (MCP) yang khusus untuk ekosistem Buttplug.io
  • Pada program LLM yang mendukung tool seperti Claude Desktop, pengguna dapat menanyakan dan mengontrol perangkat Buttplug miliknya
    • Contoh perintah: "Apa saja perangkat buttplug saya yang terhubung?", "Atur motor kedua LELO F1S ke 50%", "Berapa sisa baterai Lovense Max 2?", "Apakah sinyal WeWibe lemah?"
  • Contoh di atas mendekati arah tujuan proyek, tetapi pengalaman aktual pada implementasi saat ini masih tidak stabil dan mengecewakan

Struktur resource dan tool yang didukung

  • Resource API
    • /devices: daftar perangkat Buttplug yang terhubung (JSON)
    • /device/{id}: informasi detail masing-masing perangkat
    • /device/{id}/rssi: kekuatan sinyal perangkat (RSSI)
    • /device/{id}/battery: sisa baterai tiap perangkat
  • Tool
    • device_vibrate: parameter id, motor, strength (wajib: id, strength), dengan opsi memilih motor untuk mengontrol getaran

Contoh skema JSON (resource)

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

Contoh skema JSON (tool)

{
  "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"
    }
  ]
}

Status saat ini

  • Ini adalah proyek eksperimen jangka pendek yang dimulai pada 1 April 2025 (April Mop)
  • Manajemen koneksi pada library go-buttplug tidak stabil, sehingga kueri daftar perangkat bisa dilakukan tetapi sebagian kontrol seperti fungsi getar belum berjalan lancar
  • Untuk pengujian dibutuhkan perangkat virtual, tetapi Buttplug.io hanya mendukung perangkat fisik
  • Masih berada pada tahap awal dan pengujian end-to-end belum dilakukan secara memadai
  • Ke depan, proyek ini akan meninjau lebih lanjut masalah koneksi pada library go-buttplug dan status host protokol MCP (seperti implementasi yang berpusat pada tool)

Panduan instalasi

  • File biner untuk berbagai platform didistribusikan melalui GitHub Releases
  • Instalasi lewat Homebrew juga didukung:
    • brew tap conacademy/homebrew-tap
    • brew install conacademy/tap/buttplug-mcp

Cara penggunaan

  • Pengelolaan perangkat ditangani oleh aplikasi hub Intiface Central (port default 12345)
  • Agar Claude Desktop dapat memakai buttplug-mcp sebagai server MCP, perlu konfigurasi pada program host
    • Contoh konfigurasi (file JSON):
    {
      "mcpServers": {
        "buttplug": {
          "command": "/opt/homebrew/bin/buttplug-mcp",
          "args": ["--ws-port", "12345"]
        }
      }
    }
    
  • Setelah konfigurasi di atas, pengaturan dapat diterapkan dengan merujuk tutorial Claude Desktop, lalu perangkat bisa ditanya dan dikontrol sambil bercakap dengan Claude
  • Integrasi tambahan seperti kontrol lampu melalui HomeAssistant MCP juga dapat dimanfaatkan

Integrasi dengan Ollama dan mcphost

  • Di antara host MCP, dukungan untuk Ollama tersedia dan dapat dihubungkan dengan LLM yang mendukung tool
  • Dapat digunakan bersama mcphost (dikelola oleh pengembang mcp-go) memakai konfigurasi MCP JSON untuk buttplug-mcp
    • Contoh:
    $ go install github.com/mark3labs/mcphost@latest
    $ mcphost -m ollama:llama3.3 --config mcp.json
    
  • Hanya mendukung "Tools" dan dukungan untuk "Resources" terbatas, sehingga tidak bisa menampilkan daftar perangkat atau menelusuri properti
  • Pada contoh nyata, pesan sukses untuk perintah getar perangkat bisa dikembalikan, tetapi perangkat mungkin tidak merespons

Build

  • Menggunakan sistem build berbasis task
    • Jalankan: $ task
  • Tool pengujian yang berguna:
    • task stdio-schema | jq (memeriksa skema JSON)
    • npx @modelcontextprotocol/inspector node build/index.js (GUI web MCP Inspector)

Argumen CLI

  • Opsi utama:
    • -h, --help: bantuan
    • -l, --log-file: menentukan tujuan file log
    • -j, --log-json: format log JSON
    • --sse: memakai transport SSE
    • --sse-host: host/port untuk koneksi SSE
    • -v, --verbose: log detail
    • --ws-port: port koneksi ke server Websocket Buttplug

Kontribusi dan code of conduct

  • Pull Request, fork, dan kontribusi lain dipersilakan
  • Wajib mematuhi Code of Conduct

Kredit dan lisensi

  • Memanfaatkan proyek open source go-buttplug, go-mcp
    • Termasuk library Golang Buttplug.io beserta contohnya, serta library Golang Model Context Protocol
  • Hak cipta 2025 Neomantra BV, Evan Wies (ConAcademy)
  • Dirilis di bawah lisensi MIT (lihat LICENSE.txt untuk detail lisensi)

2 komentar

 
bbulbum 2025-06-03

Uh.. entah harus dibilang ini terlalu cepat buat kita..

 
GN⁺ 2025-06-01
Opini Hacker News
  • Saya teringat standar Buttplug pernah dibahas beberapa kali di Hacker News, jadi saya membagikannya
  • Saya pikir kata Teledildonics itu sendiri luar biasa
    • Saya bahkan sempat berpikir ingin commit ke BO.io dan memasukkannya ke resume, tapi juga merasa agak tidak enak karena itu mungkin hanya akan menambah bahan pertanyaan aneh di bagian pentest saya
  • Membagikan informasi rujukan terkait Deldo, mode kontrol sex toy dan teledildonics yang berjalan di Emacs (https://news.ycombinator.com/item?id=29207607)
  • Bertanya dengan bercanda apakah ini yang disebut vibe coding yang terkenal itu
    • Mengutip langsung frasa di halaman utama buttplug.io: We were vibe coding before it was cool
    • Penasaran seperti apa sebenarnya UAT (User Acceptance Testing) untuk proyek seperti ini
    • OP tampaknya cukup serius memperhatikan perangkat keras seperti ini
    • https://github.com/profullstack/mcp-server juga merupakan contoh yang dibuat dengan vibe coding
  • Menarik bahwa API untuk mengendalikan mainan seperti ini ternyata sudah terbuka sejak dulu
    • Secara intuitif rasanya lebih wajar jika tiap perangkat hanya menyediakan aplikasi tertutup khusus miliknya, tetapi kenyataannya tidak demikian
    • Muncul dugaan apakah ini terjadi karena perusahaan besar tidak masuk ke pasar ini
    • Dijelaskan bahwa dalam banyak kasus bukan vendornya yang secara resmi mendefinisikan API, melainkan komunitas yang membuatnya lewat rekayasa balik
      • Karena produk-produk ini umumnya terhubung lewat Bluetooth, keamanannya sering dianggap cukup hanya dengan pairing dan kedekatan fisik
    • Di Denmark, sebagian besar perangkat elektronik rumah tidak tertutup dan juga tidak sulit diretas
      • Perangkat seperti microwave, sikat gigi elektrik, router, dan e-bike juga menjadi sasaran peretasan sederhana
      • Alasan peretas sex toy jauh lebih banyak adalah karena lebih banyak gairah terkumpul di area ini
      • Dulu saya kira komunitas peretasan e-bike adalah yang terbesar, tetapi saya menduga komunitas sex toy bisa jadi lebih besar
      • Alasan meretas e-bike kebanyakan untuk membuka batas kecepatan atau fitur statistik
      • Saya bukan peretas perangkat, tetapi hanya dengan pencarian saja saya bisa dengan mudah menemukan alat yang diperlukan
      • Dalam praktiknya, cukup banyak perangkat sehari-hari yang memang tidak memiliki keamanan yang kuat
      • Di Eropa juga ada budaya ingin membeli produk tanpa merek dibandingkan produk perusahaan teknologi besar
      • Bahkan produk merek besar pun cenderung mudah diretas, dan rasanya hampir semuanya bisa diretas asalkan perangkat kerasnya ada
    • Ada pendapat bahwa akses komunitas menjadi tinggi karena cam streamer perlu dipermudah untuk membuat ekstensi perangkat mereka sendiri
      • Disebutkan kasus Lovesense yang menjadi nama yang identik dengan “mainan yang dikendalikan lewat chat” di situs streaming
    • Di industri ini, kepuasan pengguna tampaknya dianggap paling penting sehingga hal-hal seperti ini menjadi lebih terbuka
    • Diperkirakan ada banyak perangkat terbuka buatan Tiongkok yang kebanyakan memakai chip dan protokol generik murah apa adanya
      • Keandalan dan keamanan juga ditangani dengan longgar, sehingga rekayasa balik tidak sulit
      • Koneksi Bluetooth terasa dirancang murah dan rapuh, bahkan mudah terputus karena tubuh manusia
      • Kontroler tampaknya hanya mengalirkan sinyal sederhana tanpa banyak komputasi tambahan atau penanganan kesalahan
  • Buttplug adalah standar open source dan proyek perangkat lunak untuk mengendalikan perangkat keras intim seperti mainan dewasa
  • Rasanya TLD .io memang pilihan yang sangat pas untuk proyek ini
    • Ada reaksi lucu terkait hal itu
  • Saya qDot, pendiri dan project lead dari https://buttplug.io
    • Meski sudah turun dari halaman utama, kalau ada pertanyaan AMA tetap diterima kapan saja
  • Saya merasa jika ditambah tugas terjadwal ChatGPT, sistem ini bisa menjadi jam alarm yang benar-benar tidak biasa
    • Karena juga mendukung integrasi Home Assistant, mungkin bisa dipakai sebagai notifikasi seperti pintu garasi terbuka
  • Jika suatu saat ada yang bilang Big Tech memaksakan fitur AI yang tak diinginkan, saya ingin menandai situs ini dan menunjukkannya
  • Saya penulisnya, dan proyek ini adalah proyek pribadi “tak berguna” yang dibuat saat April Mop
    • Setiap tahun saya membuat sesuatu untuk bersenang-senang saat April Mop, lalu mengunggahnya ke GitHub
    • Server MCP ini memang tidak terlalu berarti untuk penggunaan nyata, tetapi karena titik awal itu penting, saya tetap mengunggahnya
    • Dua tahun lalu saya pernah menghubungkan Buttplug ke ruang obrolan SSH, dan menjelaskan pengalaman menyusun graf akses yang dianonimkan dengan menggabungkan persetujuan digital dan kunci SSH
    • Saat ini saya juga bukan maintainer Buttplug.io, tetapi saya pernah melakukan banyak diskusi di Discord
    • Disampaikan juga bahwa mereka sedang mencari maintainer baru dari kalangan Rustacean
    • Server MCP ditulis dalam Golang, tetapi ekosistem Buttplug tampaknya lebih cocok dengan Rust
    • Dulu saya meneliti haptics, dan punya pengalaman terkait paten serta integrasi VRML
    • Saya juga memiliki pengalaman dengan perangkat diagnosis fungsi seksual yang dibuat dari dana riset NIH dan mainan yang saya rakit sendiri
    • Sekarang saya sedang meneliti Biaerolar Beats dengan headset EEG Neurable (https://github.com/ConAcademy/biareolar-beats)
    • Saya pernah membuat LELO F1 bergetar dengan vibe coding, tetapi proyek ini adalah hasil yang benar-benar saya koding sendiri
    • Belakangan saya juga mencoba vibe code dengan protokol A2A bersama Claude dan Gemini, tetapi tingkat kesulitan implementasinya tinggi
    • Saya membuat 3 server MCP minggu itu juga (uang, seks, narkoba), dan dari sisi data terbuka serta hasil penggunaan AI nyata, AgentDank (https://github.com/AgentDank/dank-mcp) yang paling menarik
    • Saya merasa memasang data kustom dan endpoint SQL ke LLM berbasis pemanggilan alat punya potensi yang sangat besar
  • Terhadap ucapan “itu interaksi seksual yang tidak efisien”, ada reaksi “itu kebebasan masing-masing”
  • Penasaran bagaimana pandangan orang tentang masalah privasi di berbagai layanan
    • Dulu orang cukup membeli produk lalu memakainya tanpa hubungan apa pun dengan vendor, tetapi sekarang situasinya sudah banyak berubah, seperti pada goggle VR atau layanan lainnya