1 คะแนน โดย GN⁺ 2025-06-01 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Buttplug MCP เป็น เซิร์ฟเวอร์ MCP ที่เชื่อมต่ออุปกรณ์สำหรับผู้ใหญ่ในระบบนิเวศของ Buttplug.io เข้ากับโปรแกรมที่ใช้ โมเดลภาษาขนาดใหญ่ (LLM)
  • ผู้ใช้สามารถดูข้อมูลอุปกรณ์หรือควบคุมฟังก์ชันต่าง ๆ เช่น การสั่น สถานะแบตเตอรี่ และความแรงสัญญาณ ผ่านเครื่องมือ LLM อย่าง Claude Desktop ได้
  • ขณะนี้ยังขาดทั้ง ความสมบูรณ์ของฟังก์ชันและความเสถียร ทำให้การทำงานโดยรวมยังไม่ลื่นไหล และมีความยากในการควบคุมอุปกรณ์จริง
  • สามารถเชื่อมต่อกับโฮสต์ MCP อย่าง Ollama, mcphost เพื่อทดสอบแบบใช้เครื่องมือได้ แต่บางฟังก์ชัน (เช่น การสำรวจทรัพยากร) ยังมีข้อจำกัด
  • โปรเจ็กต์นี้แตกต่างจาก บริการ MCP อื่น ๆ ตรงที่เน้นการควบคุมสมาร์ตดีไวซ์ด้วย LLM โดยเฉพาะ และเผยแพร่เป็นโอเพนซอร์สให้ใช้งานฟรี

ภาพรวมโปรเจ็กต์

  • buttplug-mcp เป็นเซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ ระบบนิเวศ Buttplug.io โดยเฉพาะ
  • สามารถถามข้อมูลและควบคุมอุปกรณ์ Buttplug ของตนเองได้จาก โปรแกรม LLM ที่รองรับเครื่องมือ เช่น Claude Desktop
    • ตัวอย่างคำสั่ง: "อุปกรณ์ buttplug ที่เชื่อมต่ออยู่ของฉันมีอะไรบ้าง?", "ตั้งมอเตอร์ตัวที่สองของ LELO F1S เป็น 50%", "แบตเตอรี่คงเหลือของ Lovense Max 2 เท่าไร?", "สัญญาณของ WeWibe อ่อนหรือไม่?"
  • ตัวอย่างข้างต้นสะท้อนทิศทางที่ต้องการ แต่ประสบการณ์ที่มีอยู่จริงในตอนนี้ยัง ไม่เสถียรและน่าผิดหวัง

โครงสร้างทรัพยากรและเครื่องมือที่รองรับ

  • ทรัพยากร API
    • /devices: รายการอุปกรณ์ Buttplug ที่เชื่อมต่ออยู่ (JSON)
    • /device/{id}: ข้อมูลรายละเอียดของอุปกรณ์แต่ละตัว
    • /device/{id}/rssi: ความแรงสัญญาณของอุปกรณ์ (RSSI)
    • /device/{id}/battery: ปริมาณแบตเตอรี่คงเหลือของอุปกรณ์แต่ละตัว
  • เครื่องมือ
    • device_vibrate: พารามิเตอร์ id, motor, strength (จำเป็น: id, strength) และสามารถระบุมอเตอร์เพื่อควบคุมการสั่นได้ตามต้องการ

ตัวอย่าง JSON schema (ทรัพยากร)

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

ตัวอย่าง JSON schema (เครื่องมือ)

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

สถานะปัจจุบัน

  • เป็นโปรเจ็กต์ทดลองระยะสั้นที่เริ่มเมื่อวันที่ 1 เมษายน 2025 (April Fools' Day)
  • การจัดการการเชื่อมต่อของไลบรารี go-buttplug ยังไม่เสถียร ทำให้แม้จะดึงรายการอุปกรณ์ได้ แต่การควบคุมบางอย่าง เช่น ฟังก์ชันสั่น ยังทำงานได้ไม่ราบรื่น
  • ต้องใช้อุปกรณ์เสมือนเพื่อการทดสอบ แต่ Buttplug.io รองรับเฉพาะอุปกรณ์จริง
  • ยังอยู่ในระยะเริ่มต้นที่ การทดสอบแบบ end-to-end ยังไม่เพียงพอ
  • ในอนาคตมีแผนจะตรวจสอบเพิ่มเติมทั้งปัญหาการเชื่อมต่อของไลบรารี go-buttplug และสถานะของโฮสต์ในโปรโตคอล MCP (เช่น การเน้นใช้งานแบบเครื่องมือ)

วิธีติดตั้ง

  • มีการเผยแพร่ไฟล์ไบนารีสำหรับหลายแพลตฟอร์มผ่าน GitHub Releases
  • รองรับการติดตั้งผ่าน Homebrew:
    • brew tap conacademy/homebrew-tap
    • brew install conacademy/tap/buttplug-mcp

วิธีใช้งาน

  • การจัดการอุปกรณ์ทำผ่านแอปฮับ Intiface Central (พอร์ตเริ่มต้น 12345)
  • ต้องตั้งค่าในโปรแกรมโฮสต์เพื่อให้ Claude Desktop ใช้ buttplug-mcp เป็นเซิร์ฟเวอร์ MCP ได้
    • ตัวอย่างการตั้งค่า (ไฟล์ JSON):
    {
      "mcpServers": {
        "buttplug": {
          "command": "/opt/homebrew/bin/buttplug-mcp",
          "args": ["--ws-port", "12345"]
        }
      }
    }
    
  • หลังตั้งค่าแล้วสามารถอ้างอิงบทช่วยสอนของ Claude Desktop เพื่อนำไปใช้ และสนทนากับ Claude เพื่อถามข้อมูลหรือควบคุมอุปกรณ์ได้
  • สามารถประยุกต์ร่วมกับการเชื่อมต่อเพิ่มเติม เช่น ควบคุมไฟผ่าน HomeAssistant MCP

การผสานรวมกับ Ollama และ mcphost

  • รองรับการใช้งานกับ Ollama ในฐานะโฮสต์ MCP และเชื่อมต่อกับ LLM ที่รองรับเครื่องมือได้
  • สามารถใช้งานร่วมกับ mcphost (ดูแลโดยผู้พัฒนา mcp-go) โดยใช้การตั้งค่า MCP JSON สำหรับ buttplug-mcp
    • ตัวอย่าง:
    $ go install github.com/mark3labs/mcphost@latest
    $ mcphost -m ollama:llama3.3 --config mcp.json
    
  • รองรับเฉพาะ "Tools" แต่ "Resources" ยังมีข้อจำกัด จึงไม่สามารถแสดงรายการอุปกรณ์หรือสำรวจคุณสมบัติได้
  • ในตัวอย่างการใช้งานจริง อาจมีการส่งข้อความว่าคำสั่งสั่นสำเร็จ แต่ตัวอุปกรณ์อาจไม่ตอบสนอง

การบิลด์

  • ใช้ระบบบิลด์บนพื้นฐานของ task
    • รัน: $ task
  • เครื่องมือทดสอบที่มีประโยชน์:
    • task stdio-schema | jq (ตรวจสอบ JSON schema)
    • npx @modelcontextprotocol/inspector node build/index.js (MCP Inspector Web GUI)

อาร์กิวเมนต์ CLI

  • ตัวเลือกหลัก:
    • -h, --help: วิธีใช้
    • -l, --log-file: ระบุปลายทางไฟล์ล็อก
    • -j, --log-json: รูปแบบล็อกแบบ JSON
    • --sse: ใช้การส่งข้อมูลแบบ SSE
    • --sse-host: โฮสต์/พอร์ตสำหรับการเชื่อมต่อ SSE
    • -v, --verbose: ล็อกแบบละเอียด
    • --ws-port: พอร์ตสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ Buttplug Websocket

การมีส่วนร่วมและจรรยาบรรณโค้ด

  • ยินดีรับ Pull Request, fork และการมีส่วนร่วมในรูปแบบต่าง ๆ
  • ต้องปฏิบัติตาม Code of Conduct

เครดิตและไลเซนส์

  • ใช้งานโปรเจ็กต์โอเพนซอร์ส go-buttplug, go-mcp
    • รวมถึงไลบรารี Golang และตัวอย่างของ Buttplug.io ตลอดจนไลบรารี Golang สำหรับ Model Context Protocol
  • ลิขสิทธิ์ 2025 Neomantra BV, Evan Wies(ConAcademy)
  • เผยแพร่ภายใต้ MIT License (ดูรายละเอียดไลเซนส์ใน LICENSE.txt)

2 ความคิดเห็น

 
bbulbum 2025-06-03

โอ้โห.. คงต้องบอกว่านี่มันเร็วเกินไปสำหรับพวกเราล่ะมั้ง..

 
GN⁺ 2025-06-01
ความเห็นจาก Hacker News
  • จำได้ว่าเมื่อก่อนเคยมีการพูดถึงมาตรฐาน Buttplug บน Hacker News หลายครั้ง เลยเอามาแชร์
    • แนะนำซอฟต์แวร์โอเพนซอร์สที่เกี่ยวกับ teledildonics (https://buttplug.io/) และมีการคุยกันในหลายประเด็น เช่น ‘โปรเจกต์ที่เขียนด้วย Rust’
    • ยังมีบทความที่พูดถึงแนวทางพัฒนาด้านประสบการณ์ผู้ใช้และจริยธรรมด้วย (https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethics/)
    • มีการแนะนำโปรโตคอล T-code สำหรับของเล่นผู้ใหญ่ที่อิงการสื่อสารอนุกรมแบบ UART ด้วย (https://stpihkal.docs.buttplug.io/protocols/tcode.html)
    • มีการกล่าวถึง Sextoy Control Project ที่เขียนด้วย Rust ด้วยเช่นกัน (https://buttplug.io/)
  • คิดว่าแค่คำว่า Teledildonics เองก็น่าทึ่งมากแล้ว
    • แอบคิดเหมือนกันว่าอยากคอมมิตให้ BO.io แล้วเอาใส่เรซูเม่ แต่ก็รู้สึกคาใจว่ารายการ pentest ในประวัติของฉันคงมีแต่คำถามแปลก ๆ เพิ่มขึ้น
  • แชร์ข้อมูลที่น่าเอาไปอ้างอิงเกี่ยวกับ Deldo ซึ่งเป็นโหมดควบคุมเซ็กซ์ทอยและ teledildonics ที่ทำงานบน Emacs (https://news.ycombinator.com/item?id=29207607)
  • แซวถามว่านี่ใช่ vibe coding ในตำนานหรือเปล่า
    • ยกคำจากหน้าแรกของ buttplug.io โดยตรงว่า We were vibe coding before it was cool
    • เลยอดสงสัยไม่ได้ว่า UAT (User Acceptance Testing) ของโปรเจกต์แบบนี้หน้าตาเป็นยังไง
    • OP ดูเหมือนจะใส่ใจกับฮาร์ดแวร์พวกนี้พอสมควร
    • https://github.com/profullstack/mcp-server ก็เป็นอีกตัวอย่างหนึ่งที่ทำขึ้นแบบ vibe coding
  • รู้สึกทึ่งที่ API สำหรับควบคุมของเล่นแบบนี้ถูกเปิดเผยต่อสาธารณะมานานแล้ว
    • ปกติคิดว่าแต่ละอุปกรณ์น่าจะมีแต่แอปปิดเฉพาะของตัวเองมากกว่า แต่มันกลับไม่เป็นแบบนั้น
    • เลยสงสัยว่าอาจเป็นเพราะบริษัทยักษ์ใหญ่ยังไม่ลงมาเล่นตลาดนี้หรือเปล่า
    • อธิบายว่าหลายกรณีไม่ได้เป็นผู้ขายที่ระบุสเปก API อย่างเป็นทางการ แต่เป็นชุมชนที่ทำ reverse engineering ขึ้นมาเอง
      • เพราะสินค้าส่วนใหญ่เชื่อมต่อผ่าน Bluetooth ความปลอดภัยจึงมักพอใจแค่ระดับการจับคู่และความใกล้ชิดของอุปกรณ์
    • ในเดนมาร์ก อุปกรณ์อิเล็กทรอนิกส์ในบ้านส่วนใหญ่ไม่ได้ปิดตาย และแฮ็กก็ไม่ยากนัก
      • อุปกรณ์อย่างไมโครเวฟ แปรงสีฟันไฟฟ้า เราเตอร์ และ e-bike ก็เป็นเป้าหมายการแฮ็กง่าย ๆ ได้เช่นกัน
      • เหตุผลที่มีแฮ็กเกอร์สายเซ็กซ์ทอยเยอะกว่าน่าจะเป็นเพราะฝั่งนี้มีคนทุ่มแพสชันมากกว่า
      • เมื่อก่อนเคยคิดว่าชุมชนแฮ็ก e-bike ใหญ่ที่สุด แต่เดาว่าฝั่งเซ็กซ์ทอยอาจใหญ่กว่าก็ได้
      • เหตุผลหลักของการแฮ็ก e-bike ส่วนมากคือปลดล็อกความเร็วหรือเพิ่มฟีเจอร์สถิติ
      • ฉันไม่ใช่แฮ็กเกอร์สายอุปกรณ์ แต่แค่ค้นหาก็หาเครื่องมือที่ต้องใช้ได้ง่าย
      • ในความเป็นจริง อุปกรณ์ที่ใช้ในชีวิตประจำวันจำนวนมากไม่ได้มีความปลอดภัยที่แข็งแรง
      • ในยุโรปก็มีวัฒนธรรมที่อยากซื้อสินค้าที่ไม่ใช่แบรนด์หลักของบริษัทเทคใหญ่ด้วย
      • แม้แต่สินค้าของแบรนด์ใหญ่ก็แฮ็กได้ง่ายพอสมควร และรู้สึกว่าถ้ามีฮาร์ดแวร์อยู่ในมือก็แฮ็กได้แทบทั้งหมด
    • มีความเห็นว่าเพราะต้องทำให้แคมสตรีมเมอร์สร้างส่วนขยายอุปกรณ์ของตัวเองได้ง่าย ชุมชนจึงเข้าถึงได้สูงขึ้น
      • ยกตัวอย่าง Lovesense ที่กลายเป็นชื่อเรียกแทน “ของเล่นที่ควบคุมด้วยแชต” บนเว็บไซต์สตรีมมิงไปแล้ว
    • ดูเหมือนว่าอุตสาหกรรมนี้ให้ความสำคัญกับความพึงพอใจของผู้ใช้เป็นอันดับหนึ่ง เลยออกมาเปิดกว้างแบบนี้
    • คาดว่ามีอุปกรณ์เปิดจากจีนอยู่มาก และส่วนใหญ่ก็ใช้ชิปและโปรโตคอลทั่วไปที่ราคาถูกแบบตรง ๆ
      • เรื่องความน่าเชื่อถือและความปลอดภัยก็มักถูกละเลย ทำให้ reverse engineering ไม่ยาก
      • การเชื่อมต่อ Bluetooth ดูเหมือนถูกออกแบบมาแบบประหยัดและหลวม ๆ แถมยังขาดการเชื่อมต่อได้ง่ายเพราะร่างกายของคนด้วย
      • ตัวควบคุมดูเหมือนจะแค่สตรีมสัญญาณเรียบ ๆ โดยแทบไม่มีการคำนวณเพิ่มหรือการจัดการข้อผิดพลาด
  • Buttplug คือมาตรฐานและโปรเจกต์ซอฟต์แวร์โอเพนซอร์สสำหรับควบคุมฮาร์ดแวร์เชิงใกล้ชิดอย่างของเล่นผู้ใหญ่
  • รู้สึกว่าโดเมน .io เหมาะกับโปรเจกต์นี้แบบสุด ๆ
    • มีคนตอบกลับแบบขำ ๆ เกี่ยวกับเรื่องนี้
  • ผมคือ qDot ผู้ก่อตั้งและหัวหน้าโปรเจกต์ของ https://buttplug.io
    • แม้ตอนนี้โพสต์จะหลุดจากหน้าแรกไปแล้ว แต่ถ้ามีคำถามก็ยินดี AMA ได้เสมอ
  • คิดว่าถ้าเอางานที่ตั้งเวลาไว้ของ ChatGPT มาเพิ่มในระบบนี้ มันคงกลายเป็นนาฬิกาปลุกที่ไม่เหมือนใครมาก
    • รองรับการเชื่อมกับ Home Assistant ด้วย เลยอาจใช้เป็นการแจ้งเตือนอย่างประตูโรงรถเปิดได้ด้วย
  • ถ้ามีใครบอกว่า Big Tech ยัดฟีเจอร์ AI ที่ไม่มีใครอยากได้เข้ามา ฉันคงอยากบุ๊กมาร์กเว็บไซต์นี้ไว้แล้วส่งให้ดู
  • ผมเองเป็นผู้เขียนโปรเจกต์นี้ และมันเป็นโปรเจกต์ส่วนตัว “ไร้สาระ” ที่ทำขึ้นในวัน April Fools'
    • ทุกปีผมจะทำอะไรสนุก ๆ ในวัน April Fools' แล้วเอาขึ้น GitHub
    • MCP server ตัวนี้อาจไม่ได้มีความหมายมากนักสำหรับการใช้งานจริง แต่จุดเริ่มต้นสำคัญ เลยปล่อยไว้
    • เมื่อ 2 ปีก่อนผมเคยเชื่อม Buttplug เข้ากับ SSH chatroom และผสม digital consent กับ SSH key เพื่อสร้างกราฟการเข้าถึงแบบไม่ระบุตัวตน
    • ตอนนี้ผมไม่ได้เป็น maintainer ของ Buttplug.io แล้ว แต่เคยคุยกันหลายเรื่องใน Discord
    • และกำลังมองหา maintainer คนใหม่ในกลุ่ม Rustacean ด้วย
    • MCP server เขียนด้วย Golang แต่ใน ecosystem ของ Buttplug นั้น Rust ดูจะเหมาะกว่า
    • เมื่อก่อนผมทำวิจัยด้าน haptics และมีทั้งสิทธิบัตรกับประสบการณ์เชื่อมเข้ากับ VRML
    • เคยมีประสบการณ์กับอุปกรณ์วินิจฉัยสมรรถภาพทางเพศที่ทำจากทุนวิจัย NIH รวมถึงของเล่นที่ทำขึ้นเองด้วย
    • ตอนนี้กำลังทำวิจัย Biaerolar Beats ด้วยชุดหูฟัง EEG ของ Neurable (https://github.com/ConAcademy/biareolar-beats)
    • เคยลองทำ LELO F1 ให้สั่นด้วย vibe coding แต่โปรเจกต์นี้เป็นสิ่งที่ลงมือเขียนโค้ดเองจริง ๆ
    • ช่วงหลังยังลอง vibe code โดยใช้โปรโตคอล A2A กับ Claude, Gemini ด้วย แต่ระดับความยากในการทำจริงสูงมาก
    • สัปดาห์นั้นผมทำ MCP server ไป 3 ตัว (เงิน เซ็กซ์ ยาเสพติด) และในแง่ข้อมูลเปิดกับผลการใช้งาน AI จริง AgentDank (https://github.com/AgentDank/dank-mcp) น่าสนใจที่สุด
    • รู้สึกว่าการเอาข้อมูลคัสตอมและ SQL endpoint มาเชื่อมกับ LLM แบบเรียกใช้เครื่องมือมีศักยภาพมหาศาล
  • มีคนพูดว่า “นั่นเป็นปฏิสัมพันธ์ทางเพศที่ไม่มีประสิทธิภาพ” แล้วมีคนตอบว่า “ก็เป็นเสรีภาพของแต่ละคน”
  • สงสัยว่าคนอื่นมองประเด็นความเป็นส่วนตัวในบริการต่าง ๆ เหล่านี้อย่างไร
    • เมื่อก่อนแค่ซื้อสินค้าแล้วใช้งานได้เลยโดยไม่ต้องมีความสัมพันธ์อะไรกับผู้ขาย แต่เดี๋ยวนี้เหมือนกับแว่น VR หรือบริการอื่น ๆ ที่สถานการณ์เปลี่ยนไปมากแล้ว