buttplug-mcp เป็นเซิร์ฟเวอร์ Model Context Protocol สำหรับ ระบบนิเวศ Buttplug.io ช่วยให้โปรแกรม LLM ที่รองรับเครื่องมือ เช่น Claude Desktop สามารถตรวจสอบและควบคุม Genital Interface Devices ที่เชื่อมต่ออยู่ได้
- ฟีเจอร์ที่ให้มาคือรีซอร์ส
/devices, /device/{id}, /device/{id}/rssi, /device/{id}/battery และเครื่องมือ device_vibrate โดยกำหนดระดับความแรงการสั่นได้ในช่วง 0.0~1.0
- สถานะปัจจุบันยังเป็นเชิงทดลองและไม่เสถียร; เริ่มเป็นโปรเจกต์เพื่อการเรียนรู้แบบรวดเร็วเมื่อ 2025-04-01 และยังทดสอบแบบเอนด์ทูเอนด์ได้ไม่สมบูรณ์ เนื่องจาก การจัดการการเชื่อมต่อไม่เสถียร ของ
go-buttplug
- หากต้องการใช้งาน ต้องรัน Intiface Central เพื่อตรวจสอบพอร์ตเซิร์ฟเวอร์ WebSocket แล้วลงทะเบียนไฟล์รัน
buttplug-mcp พร้อมอาร์กิวเมนต์อย่าง --ws-port 12345 ในการตั้งค่า MCP host เช่น Claude Desktop
- ในการอนุมานแบบโลคัลที่ใช้ Ollama ได้ทดลองเรียกเครื่องมือด้วย
mcphost แต่ในสภาพแวดล้อมนั้นรองรับเฉพาะ Tools ไม่รองรับ Resources จึงไม่สามารถไล่รายการอุปกรณ์หรือดูรายละเอียดได้
วัตถุประสงค์ของโปรเจกต์และขอบเขตการรองรับ
buttplug-mcp เป็นเซิร์ฟเวอร์ Model Context Protocol ที่ช่วยให้โปรแกรม LLM สามารถตรวจสอบและควบคุมอุปกรณ์ที่เชื่อมต่อกับ Buttplug.io ecosystem ได้
- ตั้งเป้าสำหรับพรอมป์ลักษณะต่อไปนี้ใน โปรแกรม LLM ที่รองรับเครื่องมือ เช่น Claude Desktop
- ตรวจสอบอุปกรณ์ Buttplug ที่เชื่อมต่ออยู่
- ตั้งมอเตอร์เฉพาะของอุปกรณ์หนึ่งให้ทำงานที่ความแรง 50%
- ตรวจสอบปริมาณแบตเตอรี่คงเหลือของ Lovense Max 2
- ตรวจสอบว่าสัญญาณของ WeWibe อ่อนหรือไม่
- README ระบุคำเตือนว่าประสบการณ์ข้างต้นเป็น สถานะเป้าหมาย และประสบการณ์ปัจจุบันยังไม่เสถียรและน่าหงุดหงิด
รีซอร์สและเครื่องมือของ MCP
- รีซอร์สที่รองรับเน้นการตรวจสอบอุปกรณ์ที่เชื่อมต่อและสถานะอุปกรณ์ในรูปแบบ JSON
/devices: รายการอุปกรณ์ Buttplug ที่เชื่อมต่ออยู่
/device/{id}: ข้อมูลอุปกรณ์ตาม ID แบบตัวเลขที่ได้จาก /devices
/device/{id}/rssi: ระดับสัญญาณ RSSI ตาม ID อุปกรณ์
/device/{id}/battery: ระดับแบตเตอรี่ตาม ID อุปกรณ์
- เครื่องมือที่รองรับมีเพียง
device_vibrate
- พารามิเตอร์คือ
id, motor แบบไม่บังคับ, strength
- ค่าเริ่มต้นของ
motor คือ 0
strength เป็นช่วงตัวเลขที่ 0.0 คือปิด และ 1.0 คือความแรงสูงสุด
- README มี
schema_resources.json, schema_tools.json เป็นตัวอย่าง JSON Schema ของรีซอร์สและเครื่องมือ
สถานะปัจจุบันและข้อจำกัด
- โปรเจกต์เริ่มเมื่อ 2025-04-01 April Fool’s Day และเป็นโปรเจกต์เพื่อการเรียนรู้แบบรวดเร็วที่ทำหลังจากบริการ MCP เชิงทดลองสำหรับข้อมูลตลาดการเงิน
dbn-go ซึ่งสร้างไว้ในวันก่อนหน้า
- ทำงานได้ แต่ระบุว่า การจัดการการเชื่อมต่อ ของไลบรารีพื้นฐาน
go-buttplug ยังไม่เสถียร
- สามารถตรวจสอบรายการอุปกรณ์ด้วย Claude ได้ แต่ระบุว่าอุปกรณ์บางตัวไม่สั่นแม้ใช้ Intiface Central เพียงอย่างเดียว และดูเหมือนอยู่ใน “โหมดอ่านอย่างเดียว”
- ยังมีข้อจำกัดว่า หากมี อุปกรณ์ Buttplug.io เสมือน ที่ใช้ทดสอบได้โดยไม่ต้องพึ่งพาอุปกรณ์จริงก็น่าจะดี
- README ระบุว่ายังทดสอบแบบ เอนด์ทูเอนด์ ในความหมายจริง ๆ ไม่เสร็จสมบูรณ์
- ต่อไปต้องตรวจสอบสาเหตุที่การเชื่อมต่อของ
go-buttplug ไม่เสถียรเพิ่มเติม และทำความเข้าใจว่า MCP host ต่าง ๆ รองรับ Tools, Resources และ Resource Templates ในปัจจุบันอย่างไร
การติดตั้งและการใช้กับ Claude Desktop
brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
- หากต้องการใช้งาน ต้องดาวน์โหลดแอปฮับ Intiface Central เพื่อจัดการอุปกรณ์และตรวจสอบพอร์ตเซิร์ฟเวอร์
- ระบุว่าพอร์ตเริ่มต้นดูเหมือนจะเป็น
12345
- ใน Claude Desktop ให้ลงทะเบียนไฟล์รันและพอร์ต WebSocket ในการตั้งค่าเซิร์ฟเวอร์ MCP
- ตัวอย่างพาธติดตั้งผ่าน MacOS Homebrew คือ
/opt/homebrew/bin/buttplug-mcp
- ตัวอย่างการตั้งค่าใช้
--ws-port 12345
{
"mcpServers": {
"buttplug": {
"command": "/opt/homebrew/bin/buttplug-mcp",
"args": [
"--ws-port", "12345"
]
}
}
}
การทดลองกับ Ollama และ mcphost
- สำหรับการอนุมานแบบโลคัล สามารถใช้ MCP host ที่รองรับ Ollama ได้
- ต้องใช้ Ollama LLM ที่รองรับเครื่องมือ
- ในการทดลองใช้
mcphost ซึ่งเป็น MCP host ที่สร้างโดยผู้พัฒนาไลบรารี mcp-go
- ตัวอย่างการรันคือบันทึกการตั้งค่าก่อนหน้าไว้ใน
mcp.json แล้วรันด้วยโมเดล llama3.3
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
- ตาม README ระบุว่า
mcphost รองรับเฉพาะ Tools ไม่รองรับ Resources จึงไม่สามารถไล่รายการอุปกรณ์หรือดูรายละเอียดได้
- เมื่อใช้
phi4-mini การเรียกเครื่องมือ device_vibrate ได้รับคำตอบว่าสำเร็จ แต่ด้วยปัญหาสถานะปัจจุบันที่ระบุไว้ก่อนหน้า อุปกรณ์จริงจึงไม่สั่น
บิลด์ เครื่องมือทดสอบ และ CLI
- การบิลด์ทำด้วย task และไบนารีผลลัพธ์จะถูกสร้างที่
bin/buttplug-mcp
task
- ขั้นตอนบิลด์จะรัน
go mod tidy แล้วตามด้วย go build -o bin/buttplug-mcp cmd/buttplug-mcp/main.go
- เครื่องมือทดสอบที่มีประโยชน์มีดังนี้
task stdio-schema | jq: แสดงผล JSON Schema
npx @modelcontextprotocol/inspector node build/index.js: MCP Inspector Web GUI
- ตัวเลือก CLI รองรับ help, ไฟล์ล็อก, ล็อก JSON, การส่งผ่าน SSE, โฮสต์ SSE, ล็อกแบบ verbose และการตั้งค่าพอร์ตเซิร์ฟเวอร์ Buttplug WebSocket
--ws-port int: พอร์ตที่จะเชื่อมต่อกับเซิร์ฟเวอร์ Buttplug WebSocket
--sse: ใช้ SSE Transport แทน STDIO เริ่มต้น
--log-file string: ปลายทางไฟล์ล็อก หรือใช้ตัวแปรสภาพแวดล้อม MCP_LOG_FILE
--log-json: ใช้ล็อก JSON
--verbose: ใช้ล็อกแบบละเอียด
2 ความคิดเห็น
โอ้โห.. คงต้องบอกว่านี่มันเร็วเกินไปสำหรับพวกเราล่ะมั้ง..
ความคิดเห็นจาก 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
ทำไมตลาดนี้ถึงต่างออกไป? เป็นเพราะบริษัทใหญ่ ๆ เลี่ยงตลาดนี้ เลยยังไม่มีใครมาทำให้มันพังหรือเปล่า?
ก่อนอ่านเรื่องนี้ ผมเคยคิดว่าชุมชนจักรยานไฟฟ้าคือชุมชนแฮกเกอร์ที่ใหญ่ที่สุดที่ยุ่งกับอุปกรณ์อิเล็กทรอนิกส์ในชีวิตประจำวัน ในยุโรปมีการแฮ็กคอมพิวเตอร์ของจักรยานไฟฟ้าอยู่พอสมควร บางคนทำเพื่อปลดล็อกขีดจำกัดความเร็ว แต่เป็นเรื่องผิดกฎหมาย และในเมืองใหญ่ของเดนมาร์กก็มีโอกาสถูกจับได้สูง
ผมทำส่วนใหญ่เพราะเรื่องสถิติ คอมพิวเตอร์จักรยานไฟฟ้าของผมรีเซ็ตระยะทาง “ปัจจุบัน” ทุก ๆ 500 กม. และเก็บระยะทางรวมไว้ที่อื่น แต่พอเอาเข้าอู่ ค่านั้นก็ถูกรีเซ็ตด้วย หน้าจอหลักไม่มีนาฬิกาด้วย ดังนั้นเหตุผลหลักคืออยากให้หน้าจอแสดงนาฬิกา และตอนนี้ก็เพิ่มการแบ็กอัประยะทางกับสถิติเล่น ๆ เข้าไปด้วย
เวลาส่งเข้าอู่ ผมจะแฟลชกลับเป็นค่าจากโรงงาน ผมไม่ใช่แฮกเกอร์อุปกรณ์เลยสักนิด แต่แค่ค้นหาก็เจอเครื่องมือที่ตรงกับแบรนด์ของผมและทำสิ่งที่ต้องการได้ ผมมองว่าอุปกรณ์ในชีวิตประจำวันส่วนใหญ่แทบไม่มีความปลอดภัยเท่าไร อาจเป็นเพราะคนยุโรปที่ไม่อยากให้ NSA ส่องผ่าน Google Camera เลือกซื้อของที่ไม่ใช่ผลิตภัณฑ์จากบริษัทเทคโนโลยีรายใหญ่ แต่แม้แต่ของแบรนด์ใหญ่ ๆ อย่าง Bosch ก็ยังแฮ็กได้พอสมควร ถ้าเราถือฮาร์ดแวร์ไว้ในมือ สุดท้ายแล้วส่วนใหญ่ก็แฮ็กได้ไม่ใช่หรือ?
บริษัทอย่าง Lovense เคยบอกว่ายินดีเปิด API แต่บน GitHub ก็มีแค่ repository ว่าง ๆ เท่านั้น Lovense เป็นบริษัทแปลก ๆ ทุกเบาะแสชี้ไปที่คนหนึ่งหรือสองคนในไต้หวัน และค่อนข้างไม่โปร่งใส
เคยมีกรณีน่าสงสัยด้วย มีการฟ้องแบบกลุ่มกับแบรนด์อย่าง Hytto/Lush [0] หรือ We-Vibe [1]
[0] https://www.courthousenews.com/judge-forwards-class-action-s...
[1] https://topclassactions.com/lawsuit-settlements/lawsuit-news...
อธิบายไว้ว่าเป็น “Intimate Haptics Control Standard and Library” และมีคำอธิบายเพิ่มเติมที่ https://buttplug-spec.docs.buttplug.io/docs/spec
เป็นกรณีข้อมูลส่วนบุคคลรั่วไหล หรืออุปกรณ์ “กัก” ผู้ใช้ไว้แล้วเรียก ค่าไถ่ ผมนั่งหัวเราะอยู่ที่โต๊ะ แต่เนื้อหา NSFW เกินไปจนบอกไม่ได้ว่าหัวเราะเรื่องอะไร
ตอนนี้มันร่วงลงไปไกลจากหน้าแรกแล้วก็จริง แต่ถามอะไรก็ได้ครับ
MCP server ตัวนี้จริง ๆ แล้วค่อนข้างไร้ประโยชน์ และผมตั้งใจจะเขียนไว้ใน README ว่านี่ไม่ใช่วิธีที่ผมต้องการให้มีปฏิสัมพันธ์ทางเพศอย่างแน่นอน แต่ก็ต้องเริ่มจากที่ไหนสักแห่ง และแนวทางแบบ good-giving-game ก็เป็นสไตล์ของเรา เลยเอาขึ้น GitHub
ที่น่าขันคือ โปรเจกต์เมื่อ 2 ปีก่อนของผมคือการรวม Buttplug เข้ากับห้องแชต SSH ที่ใช้ Charm และ BubbleTea TUI ผมใช้ SSH key จัดการบางส่วนของความยินยอมดิจิทัล และสร้างกราฟนิรนามว่าเอนทิตีใดทำอะไรกับอุปกรณ์ของเอนทิตีอื่นได้บ้าง ผมคิดว่าอนาคตของ MCP ที่เอเจนต์เป็นผู้ควบคุมจำเป็นต้องมีองค์ประกอบแบบนั้น
ผมไม่ใช่เมนเทนเนอร์หลักของ Buttplug.io แต่เคยคุยกับพวกเขาใน Discord อยู่พักหนึ่ง ไหน ๆ ก็เข้ามาดูกันแล้ว ถ้ามี Rustacean คนไหนสนใจ โปรเจกต์นั้นกำลังมองหาเมนเทนเนอร์เพิ่มเติมอยู่ MCP server ตัวนี้เขียนด้วย Golang แต่ในระบบนิเวศของ Buttplug ถ้าเป็น Rust น่าจะเหมาะกว่า
ช่วงต้นอาชีพของผมเป็นงาน วิจัยแฮปติก และมีสิทธิบัตรที่เกี่ยวข้องหลายฉบับผ่าน Immersion วิทยานิพนธ์ปริญญาโทของผมคือการเขียน 3D haptic renderer และผสานแฮปติกเข้ากับ VRML ถ้ายังจำกันได้! ผมยังเคยทำโปรเจกต์ทุน NIH เกี่ยวกับอุปกรณ์วินิจฉัยภาวะเสื่อมสมรรถภาพทางเพศ และทำของเล่นทำเองที่บ้านด้วย ตอนนี้เพิ่งได้รับเฮดเซ็ต EEG ของ Neurable มา และกำลังทำงานวิจัย Biaerolar Beats [1] อยู่
กลับมาที่เรื่อง vibe coding ผมทำให้ LELO F1 สั่นด้วยสิ่งนี้จริง แต่โปรเจกต์นี้ทำด้วยมือจริง ๆ เมื่อไม่กี่สัปดาห์ก่อนผมพยายาม vibe coding
a2a4a2aด้วย Claude และ Gemini แต่โปรโตคอล A2A ใหม่เกินไปจนสอน A2A ให้โมเดลได้ยาก ผมสงสัยว่าปกติแล้วคนอื่นจัดการเรื่องแบบนี้กันอย่างไรโดยรวมแล้วสนุกดี และผมได้เรียนรู้เกี่ยวกับ LLM ที่เรียกใช้เครื่องมือได้เยอะมาก สัปดาห์นั้นผมทำ MCP server ไปสามตัว คือสำหรับเงิน [2], สำหรับเซ็กซ์ [3], และสำหรับยา [4] ต้องขอบคุณ
mark3labs/mcp-goตัวสุดท้าย AgentDank [4] ยังไม่ได้ทำต่อ แต่ในแง่ข้อมูลสาธารณะกับผลลัพธ์ AI จริง น่าจะเจ๋งที่สุดแล้ว ไปดูวิดีโอที่นั่นได้เลย การเอาข้อมูลแบบกำหนดเองกับ SQL endpoint ไปต่อกับ LLM ที่เรียกใช้เครื่องมือได้นั้นทรงพลังอย่างไม่น่าเชื่อ
[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