1 poin oleh GN⁺ 2025-06-01 | 2 komentar | Bagikan ke WhatsApp
  • buttplug-mcp adalah server Model Context Protocol untuk ekosistem Buttplug.io, yang memungkinkan program LLM pendukung alat seperti Claude Desktop untuk melihat dan mengendalikan Genital Interface Devices yang terhubung
  • Fitur yang disediakan adalah resource /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery serta tool device_vibrate, dengan kekuatan getaran ditentukan dalam rentang 0.0~1.0
  • Status saat ini masih eksperimental dan tidak stabil; proyek ini dimulai pada 2025-04-01 sebagai proyek pembelajaran cepat, dan pengujian end-to-end belum bisa diselesaikan dengan baik karena penanganan koneksi go-buttplug yang tidak stabil
  • Untuk menggunakannya, jalankan Intiface Central untuk memeriksa port server WebSocket, lalu daftarkan executable buttplug-mcp dan argumen seperti --ws-port 12345 di konfigurasi host MCP seperti Claude Desktop
  • Dalam inferensi lokal berbasis Ollama, pemanggilan tool diuji dengan mcphost, tetapi di lingkungan tersebut hanya Tools yang didukung dan Resources tidak didukung, sehingga enumerasi perangkat dan pencarian detail tidak bisa dilakukan

Tujuan proyek dan cakupan dukungan

  • buttplug-mcp adalah server Model Context Protocol yang memungkinkan program LLM melihat dan mengendalikan perangkat yang terhubung ke ekosistem Buttplug.io
  • Ditujukan untuk program LLM yang mendukung alat seperti Claude Desktop dengan prompt seperti berikut
    • Melihat perangkat Buttplug yang terhubung
    • Mengatur motor tertentu pada perangkat tertentu ke kekuatan 50%
    • Memeriksa sisa baterai Lovense Max 2
    • Memeriksa apakah sinyal WeWibe lemah
  • README menegaskan bahwa pengalaman di atas adalah kondisi yang dituju, dan pengalaman saat ini masih tidak stabil serta membuat frustrasi

Resource dan tool MCP

  • Resource yang didukung berfokus pada pengambilan perangkat terhubung dan status perangkat dalam bentuk JSON
    • /devices: daftar perangkat Buttplug yang terhubung
    • /device/{id}: informasi perangkat berdasarkan ID numerik yang diperoleh dari /devices
    • /device/{id}/rssi: level sinyal RSSI berdasarkan ID perangkat
    • /device/{id}/battery: level baterai berdasarkan ID perangkat
  • Tool yang didukung hanya satu, yaitu device_vibrate
    • Parameternya adalah id, motor opsional, dan strength
    • Nilai default motor adalah 0
    • strength adalah rentang angka dengan 0.0 berarti mati dan 1.0 berarti kekuatan maksimum
  • README juga menyertakan contoh JSON Schema untuk resource dan tool dalam schema_resources.json dan schema_tools.json

Status saat ini dan keterbatasan

  • Proyek ini dimulai pada April Fool’s Day, 2025-04-01, dan merupakan proyek pembelajaran cepat yang dibuat setelah layanan MCP eksperimental untuk data pasar keuangan dbn-go yang dibuat sehari sebelumnya
  • Disebutkan bahwa proyek ini berfungsi, tetapi penanganan koneksi pada library dasarnya, go-buttplug, tidak stabil
  • Dengan Claude, daftar perangkat bisa diambil, tetapi perangkat tertentu bahkan tidak bergetar hanya dengan Intiface Central, dan tampak seperti berada dalam “mode read-only”
  • Ada juga keterbatasan bahwa akan sangat membantu jika ada perangkat Buttplug.io virtual yang bisa dipakai untuk pengujian tanpa bergantung pada perangkat fisik
  • README menegaskan bahwa pengujian end-to-end yang sesungguhnya masih belum selesai
  • Ke depan, perlu ditelusuri lebih lanjut penyebab ketidakstabilan koneksi pada go-buttplug, sekaligus memahami bagaimana host MCP saat ini mendukung Tools, Resources, dan Resource Templates

Instalasi dan penggunaan dengan Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Untuk penggunaan, unduh aplikasi hub Intiface Central untuk mengelola perangkat dan periksa port server
    • Disebutkan bahwa port default tampaknya 12345
  • Di Claude Desktop, executable dan port WebSocket didaftarkan di konfigurasi server MCP
    • Contoh path instalasi Homebrew di MacOS adalah /opt/homebrew/bin/buttplug-mcp
    • Contoh konfigurasi menggunakan --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}
  • Konfigurasi Claude Desktop mengikuti MCP user quickstart, tetapi mengganti isinya dengan konfigurasi di atas

Eksperimen Ollama dan mcphost

  • Untuk inferensi lokal, host MCP yang mendukung Ollama dapat digunakan
  • Harus menggunakan Ollama LLM yang mendukung tool
  • Dalam eksperimen, digunakan mcphost, host MCP buatan pengembang library mcp-go
  • Contoh eksekusi menyimpan konfigurasi sebelumnya ke mcp.json, lalu menjalankannya dengan model llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • Berdasarkan README, di mcphost hanya Tools yang didukung dan Resources tidak didukung, sehingga perangkat tidak bisa dienumerasi atau dilihat detailnya
  • Dengan phi4-mini, pemanggilan tool device_vibrate menerima respons sukses, tetapi karena masalah status saat ini yang telah disebutkan, perangkat nyata tetap tidak bergetar

Build, alat pengujian, dan CLI

  • Build dilakukan dengan task, dan binary hasilnya dibuat di bin/buttplug-mcp
task
  • Proses build menjalankan go mod tidy, lalu go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
  • Alat pengujian yang berguna antara lain:
    • task stdio-schema | jq: menampilkan JSON Schema
    • npx @modelcontextprotocol/inspector node build/index.js: MCP Inspector Web GUI
  • Opsi CLI mendukung bantuan, file log, log JSON, transport SSE, host SSE, log verbose, dan pengaturan port server Buttplug WebSocket
    • --ws-port int: port untuk terhubung ke server Buttplug WebSocket
    • --sse: menggunakan SSE Transport alih-alih STDIO bawaan
    • --log-file string: tujuan file log atau menggunakan variabel lingkungan MCP_LOG_FILE
    • --log-json: menggunakan log JSON
    • --verbose: menggunakan log terperinci

2 komentar

 
bbulbum 2025-06-03

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

 
GN⁺ 2025-06-01
Pendapat Hacker News
  • Ada beberapa diskusi HN lama tentang standar Buttplug, dan tentu saja ada juga yang “diimplementasikan dengan 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
    • Kata teledildonics itu sendiri benar-benar luar biasa. Sampai-sampai membuat orang ingin berkontribusi ke BO.io untuk memperkaya CV, tetapi jika dikaitkan dengan pengalaman penetration testing yang tertulis di sana, bisa saja muncul pertanyaan yang canggung. Entah bagaimana, pembicaraan tentang backdoor juga akan ikut terbawa
    • Terkait hal ini, dulu juga ada Deldo, mode kontrol mainan dewasa dan teledildonics untuk 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
  • Apakah ini yang belakangan terus saya dengar sebagai “vibe coding”?
    • Di halaman depan buttplug.io sudah tertulis begini: “We were vibe coding before it was cool.”
    • https://github.com/profullstack/mcp-server katanya memang dibuat dengan vibe coding
    • Saya penasaran seperti apa user acceptance testing untuk proyek semacam ini
    • Penulis postingan asli sepertinya cukup memikirkan hal ini. Soalnya hal seperti ini harus menggali spesifikasi hardware dengan sangat mendalam
  • Saya beberapa kali melihat API untuk mengendalikan mainan seperti ini, dan setiap kali cukup terkejut karena ternyata cukup terbuka. Saya mengira tiap perangkat akan disertai aplikasi proprietary yang terkunci, dan karena malu kalau mengeluh secara terbuka, tidak ada yang akan bicara
    Kenapa pasar ini berbeda? Apakah karena perusahaan besar menghindari pasar ini sehingga belum sempat merusaknya?
    • Setahu saya, API seperti itu bukan didokumentasikan secara terbuka oleh produsen, melainkan direkayasa balik oleh komunitas. Mainannya sendiri berbasis Bluetooth, jadi pairing dan kedekatan fisik praktis menjadi hampir seluruh aspek keamanannya
    • Di antara perangkat elektronik yang umum ditemukan di rumah tangga Denmark, tidak banyak yang benar-benar terkunci. Perangkat yang berisi komputer, seperti microwave, sikat gigi elektrik, router, dan sepeda listrik, umumnya cukup mudah untuk “diretas”, dan kemungkinan yang membedakan mainan dewasa adalah jumlah usaha yang orang-orang curahkan untuknya
      Sebelum melihat tulisan ini, saya mengira komunitas sepeda listrik adalah komunitas hacker terbesar yang mengutak-atik perangkat elektronik sehari-hari. Di Eropa, hacking komputer sepeda listrik cukup banyak; sebagian untuk membuka batas kecepatan, tetapi itu ilegal dan di kota-kota besar Denmark peluang ketahuan juga tinggi
      Saya melakukannya terutama demi statistik. Komputer sepeda listrik saya mereset jarak tempuh “saat ini” setiap 500 km dan menyimpan total jarak tempuh di tempat lain, tetapi saat masuk bengkel, itu juga ikut direset. Layar bawaan juga tidak punya jam, jadi alasan utama saya adalah menampilkan jam di display, dan sekarang saya juga menambahkan backup jarak tempuh serta statistik untuk bersenang-senang
      Saat mengirimnya ke bengkel, saya flash ulang ke pengaturan pabrik. Saya sama sekali bukan hacker perangkat, tetapi hanya dengan mencari, saya bisa menemukan tool yang cocok untuk merek saya dan melakukan apa yang saya inginkan. Menurut saya, sebagian besar perangkat sehari-hari tidak punya banyak keamanan. Bisa jadi karena orang Eropa yang tidak ingin NSA mengintip lewat Google Camera membeli perangkat yang bukan buatan perusahaan teknologi besar, tetapi produk merek besar seperti Bosch pun cukup bisa diretas. Kalau hardware sudah ada di tangan, bukankah pada akhirnya sebagian besar bisa diretas?
    • Sepertinya karena ada permintaan untuk membuat ekstensi bagi cam streamer dan platform streaming. Misalnya Lovense sudah seperti sinonim untuk “mainan yang dikendalikan lewat chat” di situs streaming
    • Mungkin juga karena karakter ruang ini membuat orang terbiasa menempuh segala macam usaha demi memuaskan pelanggan
    • Sebagian besar bukan API yang dibuka oleh produsen, melainkan hasil rekayasa balik protokol Bluetooth. Situs Buttplug memuat informasi pesan dan protokol, dan sebagian di antaranya cukup berantakan
      Pihak seperti Lovense pernah mengatakan bersedia membuka API, tetapi di GitHub hanya ada repositori kosong. Lovense adalah perusahaan yang aneh; semua indikasi mengarah ke sekitar satu atau dua orang di Taiwan dan cukup tidak transparan
      Ada juga kasus yang mencurigakan. Pernah ada gugatan class action terhadap merek seperti Hytto/Lush [0] atau We-Vibe [1]
      [0] https://www.courthousenews.com/judge-forwards-class-action-s....

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

  • Menurut https://buttplug.io/, Buttplug adalah standar open-source dan proyek perangkat lunak untuk mengendalikan perangkat keras intim seperti produk dewasa dan mesin seks
    Dijelaskan sebagai “Intimate Haptics Control Standard and Library”, dan penjelasan lebih lengkap ada di https://buttplug-spec.docs.buttplug.io/docs/spec
  • Domain tingkat atas .io adalah pilihan yang sempurna
  • Dulu saya pernah mendaftar kuliah “keamanan perangkat konsumen”, dan terkejut karena semua contoh yang dibawakan pembicaranya adalah kasus perangkat dewasa terhubung internet yang bermasalah
    Ada kasus data pribadi bocor, atau perangkat “mengunci” pengguna lalu meminta tebusan. Saya tertawa di meja, tapi isinya terlalu NSFW sehingga tidak bisa menjelaskan kenapa saya tertawa
  • Kalau ini digabungkan dengan tugas terjadwal ChatGPT, bisa jadi jam alarm yang menarik
    • Sepertinya ada integrasi Home Assistant, jadi mungkin juga bisa mendapat notifikasi saat lupa membiarkan pintu garasi terbuka
  • Saya menandai ini untuk berjaga-jaga ketika ada yang bilang perusahaan teknologi besar bisa memaksakan fitur AI yang tidak diinginkan
  • Wah, halo! Saya qDot, kreator dan project lead https://buttplug.io
    Memang sudah cukup turun dari halaman pertama, tapi silakan tanya apa saja
  • Saya pembuatnya. Menyenangkan sekali baru melihat sesuatu yang saya buat untuk April Mop ini sekarang; Jumat yang menyenangkan. Setiap tahun pada hari itu saya membuat proyek pribadi yang konyol, dan minggu itu saya sedang mengutak-atik server MCP, lalu berpikir akan lucu kalau membuat ini. ConAcademy adalah tempat saya menaruh ide-ide dan implementasi yang aneh
    Saya sempat ingin menulis di README bahwa server MCP khusus ini cukup tidak berguna, dan jelas bukan cara yang saya inginkan untuk interaksi seksual. Tapi tetap saja harus mulai dari suatu tempat, dan gaya good-giving-game memang cocok dengan kami, jadi saya unggah ke GitHub
    Ironisnya, proyek saya dua tahun lalu adalah mengintegrasikan Buttplug ke ruang chat SSH berbasis Charm dan BubbleTea TUI. Dengan kunci SSH, saya menangani sebagian aspek persetujuan digital, dan membuat graf anonim tentang entitas mana yang dapat melakukan apa pada perangkat entitas lain. Menurut saya masa depan MCP yang dikendalikan agen akan membutuhkan unsur semacam itu
    Saya bukan maintainer utama Buttplug.io, tetapi sudah cukup lama mengobrol dengan mereka di Discord. Mumpung kalian melihat ini, kalau ada Rustacean yang tertarik, proyek tersebut sedang mencari maintainer tambahan. Server MCP ini ditulis dengan Golang, tetapi dalam ekosistem Buttplug sepertinya akan lebih baik kalau ditulis dalam Rust
    Karier awal saya adalah riset haptik, dan saya juga punya beberapa paten terkait melalui Immersion. Tesis magister saya adalah menulis renderer haptik 3D dan mengintegrasikan haptik ke VRML. Kalau ada yang masih ingat! Saya juga pernah mengerjakan proyek hibah NIH untuk perangkat diagnosis disfungsi seksual, dan membuat mainan buatan sendiri. Sekarang saya baru saja menerima headset EEG Neurable dan sedang mengerjakan riset Biaerolar Beats [1]
    Kembali ke soal vibe coding, memang benar saya membuat LELO F1 bergetar dengan ini, tetapi proyek ini benar-benar saya buat sendiri. Beberapa minggu lalu saya mencoba vibe coding a2a4a2a dengan Claude dan Gemini, tetapi protokol A2A masih terlalu baru sehingga sulit mengajari model tentang A2A. Saya penasaran bagaimana biasanya orang menangani hal semacam ini
    Secara keseluruhan, ini menyenangkan dan saya banyak belajar tentang LLM yang melakukan pemanggilan tool. Minggu itu saya membuat tiga server MCP: untuk uang [2], untuk seks [3], dan untuk obat-obatan [4]. Ini berkat mark3labs/mcp-go
    AgentDank [4] yang terakhir belum sempat saya tindaklanjuti, tetapi dari sisi data publik dan hasil AI nyata, mungkin itu yang paling keren. Tonton saja videonya di sana. Menghubungkan data kustom dan endpoint SQL ke LLM yang memanggil tool itu luar biasa kuat
    [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
    • “Jelas bukan cara yang saya inginkan untuk interaksi seksual” itu hanya menurut standarnya sendiri