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
Uh.. entah harus dibilang ini terlalu cepat buat kita..
Pendapat 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
Kenapa pasar ini berbeda? Apakah karena perusahaan besar menghindari pasar ini sehingga belum sempat merusaknya?
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?
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...
Dijelaskan sebagai “Intimate Haptics Control Standard and Library”, dan penjelasan lebih lengkap ada di https://buttplug-spec.docs.buttplug.io/docs/spec
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
Memang sudah cukup turun dari halaman pertama, tapi silakan tanya apa saja
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
a2a4a2adengan Claude dan Gemini, tetapi protokol A2A masih terlalu baru sehingga sulit mengajari model tentang A2A. Saya penasaran bagaimana biasanya orang menangani hal semacam iniSecara 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-goAgentDank [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