1 điểm bởi GN⁺ 2025-06-01 | 2 bình luận | Chia sẻ qua WhatsApp
  • buttplug-mcp là máy chủ Model Context Protocol cho hệ sinh thái Buttplug.io, cho phép các chương trình LLM hỗ trợ công cụ như Claude Desktop truy vấn và điều khiển các Genital Interface Devices đã kết nối
  • Các chức năng được cung cấp gồm các resource /devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery và công cụ device_vibrate, với cường độ rung được chỉ định trong khoảng 0.0~1.0
  • Trạng thái hiện tại là thử nghiệm và không ổn định; dự án bắt đầu vào 2025-04-01 như một project giáo dục làm nhanh, và do xử lý kết nối không ổn định của go-buttplug nên kiểm thử end-to-end vẫn chưa thể hoàn tất đúng cách
  • Để sử dụng, cần chạy Intiface Central để kiểm tra cổng máy chủ WebSocket, rồi đăng ký file thực thi buttplug-mcp cùng các đối số như --ws-port 12345 trong cấu hình host MCP như Claude Desktop
  • Với suy luận cục bộ dựa trên Ollama, đã thử gọi công cụ bằng mcphost, nhưng trong môi trường đó chỉ hỗ trợ Tools mà không hỗ trợ Resources, nên không thể liệt kê thiết bị hay truy vấn chi tiết

Mục đích dự án và phạm vi hỗ trợ

  • buttplug-mcp là máy chủ Model Context Protocol, cho phép chương trình LLM truy vấn và điều khiển các thiết bị được kết nối với hệ sinh thái Buttplug.io
  • Dự án hướng tới các prompt như sau trong chương trình LLM hỗ trợ công cụ như Claude Desktop
    • Truy vấn các thiết bị Buttplug đang kết nối
    • Đặt một motor cụ thể của một thiết bị nhất định ở mức cường độ 50%
    • Kiểm tra dung lượng pin còn lại của Lovense Max 2
    • Kiểm tra xem tín hiệu của WeWibe có yếu hay không
  • README nêu rõ trải nghiệm trên là trạng thái mục tiêu, còn trải nghiệm hiện tại thì không ổn định và gây bực bội

Resource và công cụ MCP

  • Các resource được hỗ trợ tập trung vào việc truy vấn thiết bị đã kết nối và trạng thái thiết bị ở dạng JSON
    • /devices: danh sách các thiết bị Buttplug đang kết nối
    • /device/{id}: thông tin thiết bị dựa trên ID số lấy từ /devices
    • /device/{id}/rssi: mức tín hiệu RSSI theo ID thiết bị
    • /device/{id}/battery: mức pin theo ID thiết bị
  • Chỉ có một công cụ được hỗ trợ là device_vibrate
    • Các tham số gồm id, motor tùy chọn, strength
    • Giá trị mặc định của motor là 0
    • strength là khoảng số trong đó 0.0 là tắt, 1.0 là cường độ tối đa
  • Trong README có kèm ví dụ JSON Schema cho resource và công cụ trong schema_resources.json, schema_tools.json

Trạng thái hiện tại và các giới hạn

  • Dự án được bắt đầu vào ngày Cá tháng Tư 2025-04-01, là một project giáo dục làm nhanh được tạo sau dịch vụ MCP thử nghiệm cho dữ liệu thị trường tài chính dbn-go được làm từ hôm trước
  • Dự án hoạt động được, nhưng phần xử lý kết nối của thư viện nền tảng go-buttplug được mô tả là không ổn định
  • Có thể truy vấn danh sách thiết bị bằng Claude, nhưng một số thiết bị cụ thể không rung ngay cả khi chỉ dùng Intiface Central, và có vẻ như đang ở “chế độ chỉ đọc” (read-only mode)
  • Một hạn chế khác là sẽ rất hữu ích nếu có thiết bị Buttplug.io ảo để có thể kiểm thử mà không phụ thuộc vào thiết bị vật lý
  • README nêu rõ rằng kiểm thử end-to-end theo đúng nghĩa vẫn chưa hoàn tất
  • Trong tương lai, cần tìm hiểu thêm nguyên nhân gây mất ổn định kết nối của go-buttplug, đồng thời hiểu rõ các host MCP hiện đang hỗ trợ Tools, Resources và Resource Templates như thế nào

Cài đặt và sử dụng với Claude Desktop

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • Để sử dụng, cần tải ứng dụng hub Intiface Central để quản lý thiết bị và kiểm tra cổng máy chủ
    • Cổng mặc định được cho là 12345
  • Trong Claude Desktop, đăng ký file thực thi và cổng WebSocket trong cấu hình máy chủ MCP
    • Ví dụ đường dẫn cài đặt Homebrew trên MacOS là /opt/homebrew/bin/buttplug-mcp
    • Ví dụ cấu hình dùng --ws-port 12345
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}
  • Cấu hình Claude Desktop làm theo MCP user quickstart, nhưng thay phần thiết lập bằng cấu hình ở trên

Thử nghiệm với Ollama và mcphost

  • Với suy luận cục bộ, có thể dùng host MCP hỗ trợ Ollama
  • Cần dùng Ollama LLM có hỗ trợ công cụ
  • Trong thử nghiệm, dự án dùng mcphost, một host MCP do tác giả thư viện mcp-go tạo ra
  • Ví dụ chạy là lưu cấu hình ở trên vào mcp.json, rồi chạy với model llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • Theo README, trong mcphost chỉ hỗ trợ Tools chứ không hỗ trợ Resources, nên không thể liệt kê thiết bị hoặc truy vấn chi tiết
  • Với phi4-mini, lời gọi công cụ device_vibrate đã nhận phản hồi thành công, nhưng do các vấn đề trạng thái hiện tại đã nêu ở trên nên thiết bị thực tế vẫn không rung

Build, công cụ kiểm thử và CLI

  • Việc build được thực hiện bằng task, và binary kết quả được tạo tại bin/buttplug-mcp
task
  • Quá trình build chạy go mod tidy rồi go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
  • Các công cụ kiểm thử hữu ích gồm
    • task stdio-schema | jq: xuất JSON Schema
    • npx @modelcontextprotocol/inspector node build/index.js: MCP Inspector Web GUI
  • Các tùy chọn CLI hỗ trợ trợ giúp, file log, log JSON, truyền SSE, host SSE, log verbose, và cấu hình cổng máy chủ Buttplug WebSocket
    • --ws-port int: cổng để kết nối tới máy chủ Buttplug WebSocket
    • --sse: dùng SSE Transport thay cho STDIO mặc định
    • --log-file string: đích file log hoặc dùng biến môi trường MCP_LOG_FILE
    • --log-json: dùng log JSON
    • --verbose: dùng log chi tiết

2 bình luận

 
bbulbum 2025-06-03

Ôi... có lẽ thứ này đến với chúng ta quá sớm...

 
GN⁺ 2025-06-01
Các ý kiến trên Hacker News
  • Trước đây đã có vài thảo luận trên HN về chuẩn Buttplug, và tất nhiên cũng có cả bản “triển khai bằng 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
    • Bản thân từ Teledildonics đã thật sự ghê gớm. Nó còn khiến người ta muốn đóng góp cho BO.io để làm đẹp CV, nhưng nếu bị liên hệ với kinh nghiệm kiểm thử xâm nhập ghi trong đó thì có thể sẽ nảy sinh vài câu hỏi khó xử. Có khi còn kéo theo cả chuyện backdoor nữa
    • Liên quan đến chuyện này, cũng từng có Deldo, một chế độ điều khiển đồ chơi người lớn và teledildonics dành cho 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
  • Đây có phải là thứ “vibe coding” mà dạo này cứ nghe nhắc tới không?
    • Ngay trang đầu của buttplug.io đã viết thế này: “We were vibe coding before it was cool.”
    • https://github.com/profullstack/mcp-server được nói là thực sự được làm bằng vibe coding
    • Tò mò không biết kiểm thử chấp nhận người dùng của một dự án kiểu này trông sẽ ra sao
    • Có lẽ tác giả bài gốc đã suy nghĩ khá nhiều về chuyện này. Vì những thứ như thế đòi hỏi phải đào rất sâu vào đặc tả phần cứng
  • Tôi đã xem API điều khiển những món đồ chơi kiểu này vài lần, và lần nào cũng ngạc nhiên vì chúng khá mở. Tôi đã tưởng mỗi thiết bị sẽ đi kèm một ứng dụng độc quyền bị khóa chặt, còn nếu công khai phàn nàn thì ngại quá nên chẳng ai dám nói
    Vì sao thị trường này lại khác vậy? Có phải vì các tập đoàn lớn né thị trường này nên vẫn chưa kịp phá hỏng nó không?
    • Theo tôi biết, các API đó không phải do nhà sản xuất công khai tài liệu, mà là do cộng đồng reverse engineering. Bản thân đồ chơi dùng Bluetooth, nên gần như toàn bộ bảo mật chỉ nằm ở việc ghép đôi và khoảng cách gần
    • Trong số các thiết bị điện tử thường thấy ở gia đình Đan Mạch, không có nhiều thứ được khóa chặt đúng nghĩa. Những thứ có máy tính bên trong như lò vi sóng, bàn chải điện, router, xe đạp điện nhìn chung đều khá dễ “hack”, và điểm khác của đồ chơi người lớn có lẽ là lượng công sức mà người ta sẵn sàng bỏ vào đó
      Trước khi đọc bài này, tôi từng nghĩ cộng đồng xe đạp điện là cộng đồng hacker lớn nhất đụng vào đồ điện tử hằng ngày. Ở châu Âu có khá nhiều vụ hack máy tính xe đạp điện; một số là để gỡ giới hạn tốc độ, nhưng việc đó bất hợp pháp và ở các thành phố lớn của Đan Mạch cũng khá dễ bị bắt
      Tôi làm chủ yếu vì thống kê. Máy tính trên xe đạp điện của tôi cứ mỗi 500 km lại đặt lại quãng đường “hiện tại”, còn tổng quãng đường thì lưu ở chỗ khác, nhưng khi đem vào tiệm bảo dưỡng thì cả cái đó cũng bị đặt lại. Màn hình mặc định cũng không có đồng hồ, nên lý do chính là muốn hiện đồng hồ trên màn hình; giờ thì tôi đã thêm cả sao lưu quãng đường và vài thống kê cho vui
      Khi gửi đi bảo dưỡng, tôi flash lại về thiết lập nhà máy. Tôi hoàn toàn không phải dân hack thiết bị, nhưng chỉ cần tìm kiếm là đã kiếm được công cụ phù hợp với nhãn xe của mình để làm điều mình muốn. Tôi cho rằng hầu hết thiết bị hằng ngày không có nhiều bảo mật. Có thể vì người châu Âu không muốn NSA nhìn lén qua Google Camera nên họ mua đồ không phải của các công ty công nghệ lớn, nhưng sản phẩm của các thương hiệu lớn như Bosch cũng vẫn khá hack được. Một khi đã cầm phần cứng trong tay thì rốt cuộc đa số chẳng phải đều có thể hack được sao?
    • Có lẽ là vì nhu cầu tạo tiện ích mở rộng cho cam streamer và các nền tảng streaming. Ví dụ Lovense gần như đã trở thành từ đồng nghĩa với “đồ chơi được điều khiển bằng chat” trên các trang streaming
    • Có lẽ cũng do đặc thù của lĩnh vực này: người ta vốn quen với việc chịu đủ thứ phiền phức để làm hài lòng khách hàng
    • Phần lớn không phải API do nhà sản xuất công bố, mà là giao thức Bluetooth được reverse engineering. Trang Buttplug có thông tin về thông điệp và giao thức, trong đó có một số thứ khá lộn xộn
      Những nơi như Lovense từng nói là sẵn sàng công khai API, nhưng trên GitHub thì chỉ ở mức có kho rỗng. Lovense là một công ty kỳ lạ; mọi dấu hiệu đều trỏ về khoảng một hai người ở Đài Loan và khá mập mờ
      Cũng từng có các trường hợp đáng ngờ. Đã có các vụ kiện tập thể nhắm vào những thương hiệu như Hytto/Lush [0] hay We-Vibe [1]
      [0] https://www.courthousenews.com/judge-forwards-class-action-s...

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

  • Theo https://buttplug.io/, Buttplug là một tiêu chuẩn mở và dự án phần mềm để điều khiển phần cứng thân mật như đồ chơi người lớn, máy tình dục, v.v.
    Nó được mô tả là “Intimate Haptics Control Standard and Library”, và phần giải thích chi tiết hơn có tại https://buttplug-spec.docs.buttplug.io/docs/spec
  • Tên miền cấp cao nhất .io là một lựa chọn hoàn hảo
  • Trước đây tôi từng đăng ký một bài giảng về “bảo mật thiết bị tiêu dùng”, và đã rất bất ngờ vì mọi ví dụ diễn giả đưa ra đều là các vụ thiết bị người lớn kết nối Internet gây sự cố
    Hoặc là dữ liệu cá nhân bị rò rỉ, hoặc thiết bị “nhốt” người dùng rồi đòi tiền chuộc. Tôi ngồi cười ở bàn, nhưng nội dung quá NSFW nên không thể giải thích vì sao mình cười
  • Nếu gắn cái này với tác vụ đặt lịch của ChatGPT thì có thể thành một chiếc đồng hồ báo thức thú vị
    • Có vẻ có tích hợp Home Assistant, nên có lẽ cũng có thể nhận thông báo khi quên để cửa gara mở
  • Tôi đánh dấu trang cái này để phòng khi có ai đó nói rằng một công ty công nghệ lớn có thể nhồi nhét các tính năng AI không mong muốn vào một cách ép buộc
  • Wow, xin chào! Tôi là qDot, người tạo ra và trưởng dự án của https://buttplug.io
    Dù nó đã tụt khá xa khỏi trang đầu rồi, cứ hỏi tôi bất cứ điều gì
  • Tôi là tác giả. Thấy thứ mình làm cho Cá tháng Tư bây giờ mới được chú ý đúng là một ngày thứ Sáu vui vẻ. Mỗi năm vào ngày đó tôi đều làm một dự án cá nhân ngớ ngẩn; tuần đó tôi đang nghịch MCP server và nghĩ rằng làm cái này sẽ buồn cười. ConAcademy là nơi tôi đăng các ý tưởng và triển khai kỳ quặc
    Tôi đã định viết trong README rằng MCP server cụ thể này khá vô dụng, và tuyệt đối không phải cách tôi muốn tương tác tình dục diễn ra. Dù vậy, phải bắt đầu từ đâu đó, và kiểu good-giving-game hợp gu chúng tôi nên tôi đã đưa lên GitHub
    Trớ trêu là dự án của tôi 2 năm trước là tích hợp Buttplug vào một phòng chat SSH dựa trên Charm và BubbleTea TUI. Tôi dùng khóa SSH để xử lý một phần sự đồng thuận số, và tạo một đồ thị ẩn danh về việc thực thể nào có thể làm gì với thiết bị của thực thể khác. Tôi nghĩ tương lai của MCP do agent điều khiển sẽ cần những yếu tố như vậy
    Tôi không phải maintainer chính của Buttplug.io, nhưng đã trò chuyện với họ trên Discord một thời gian. Nhân tiện mọi người đang xem, nếu có Rustacean nào quan tâm thì dự án đó đang tìm thêm maintainer chính. MCP server này được viết bằng Golang, nhưng trong hệ sinh thái Buttplug thì có lẽ viết bằng Rust sẽ phù hợp hơn
    Giai đoạn đầu sự nghiệp của tôi là nghiên cứu haptic, và tôi cũng có vài bằng sáng chế liên quan thông qua Immersion. Luận văn thạc sĩ của tôi là viết một trình kết xuất haptic 3D và tích hợp haptic vào VRML. Nếu bạn còn nhớ! Tôi cũng từng làm một dự án tài trợ NIH về thiết bị chẩn đoán rối loạn chức năng tình dục, và tự chế đồ chơi tại nhà. Giờ tôi vừa nhận được headset EEG Neurable và đang nghiên cứu Biaerolar Beats [1]
    Quay lại chuyện vibe coding, đúng là tôi đã dùng cái này để làm rung LELO F1, nhưng dự án này thực sự được làm thủ công. Vài tuần trước tôi thử vibe coding a2a4a2a với Claude và Gemini, nhưng giao thức A2A còn quá mới nên rất khó dạy A2A cho mô hình. Tôi tò mò nói chung mọi người xử lý chuyện kiểu này như thế nào
    Nhìn chung rất vui và tôi đã học được nhiều về LLM gọi công cụ. Tuần đó tôi làm ba MCP server: cho tiền [2], cho tình dục [3], và cho ma túy [4]. Nhờ mark3labs/mcp-go cả
    Cái cuối cùng, AgentDank [4], tôi vẫn chưa kịp làm tiếp, nhưng xét về dữ liệu công khai và kết quả AI thực tế thì có lẽ nó là cái ngầu nhất. Hãy xem video ở đó. Việc nối dữ liệu tùy chỉnh và endpoint SQL vào LLM gọi công cụ mạnh đến mức vô lý
    [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
    • “Tuyệt đối không phải cách tôi muốn tương tác tình dục diễn ra” chỉ là theo tiêu chuẩn của chính người đó thôi