1P by GN⁺ | ★ favorite | 댓글 2개
  • buttplug-mcpButtplug.io 생태계용 Model Context Protocol 서버로, Claude Desktop 같은 도구 지원 LLM 프로그램이 연결된 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 서버 포트를 확인하고, Claude Desktop 같은 MCP 호스트 설정에 buttplug-mcp 실행 파일과 --ws-port 12345 같은 인자를 등록해야 함
  • Ollama 기반 로컬 추론에서는 mcphost로 도구 호출을 실험했지만, 해당 환경에서는 Tools만 지원되고 Resources는 지원되지 않아 장치 열거와 세부 조회가 되지 않음

프로젝트 목적과 지원 범위

  • buttplug-mcpModel Context Protocol 서버로, Buttplug.io ecosystem에 연결된 장치를 LLM 프로그램에서 조회하고 제어하게 해줌
  • Claude Desktop 같은 도구 지원 LLM 프로그램에서 다음과 같은 프롬프트를 목표로 함
    • 연결된 Buttplug 장치 조회
    • 특정 장치의 특정 모터를 50% 강도로 설정
    • Lovense Max 2의 배터리 잔량 확인
    • WeWibe의 신호 약함 여부 확인
  • README는 위 경험이 목표 상태이며, 현재 경험은 불안정하고 답답하다는 주의문을 명시함

MCP 리소스와 도구

  • 지원 리소스는 연결 장치와 장치 상태를 JSON 형태로 조회하는 데 초점을 둠
    • /devices: 연결된 Buttplug 장치 목록
    • /device/{id}: /devices에서 얻은 숫자 ID 기반 장치 정보
    • /device/{id}/rssi: 장치 ID 기반 RSSI 신호 레벨
    • /device/{id}/battery: 장치 ID 기반 배터리 레벨
  • 지원 도구는 device_vibrate 하나임
    • 파라미터는 id, 선택적 motor, strength
    • motor 기본값은 0
    • strength0.0이 꺼짐, 1.0이 최대 강도인 숫자 범위
  • README에는 리소스와 도구의 JSON Schema 예시로 schema_resources.json, schema_tools.json가 포함됨

현재 상태와 제한

  • 프로젝트는 2025-04-01 April Fool’s Day에 시작됐고, 전날 만든 금융 시장 데이터용 실험적 MCP 서비스 dbn-go 이후 만든 빠른 교육용 프로젝트임
  • 동작은 하지만 기반 라이브러리 go-buttplug연결 처리가 불안정하다고 되어 있음
  • Claude로 장치 목록 조회는 가능했지만, 특정 장치는 Intiface Central만으로도 진동하지 않았고 “읽기 전용 모드”처럼 보였다고 되어 있음
  • 물리 장치에 의존하지 않고 테스트할 수 있는 가상 Buttplug.io 장치가 있으면 좋겠다는 제한도 있음
  • README는 아직 진정한 의미의 엔드투엔드 테스트가 완료되지 않았다고 명시함
  • 앞으로 go-buttplug의 연결 불안정 원인을 더 살펴보고, MCP 호스트들이 Tools와 Resources, Resource Templates를 현재 어떻게 지원하는지 이해해야 한다고 되어 있음

설치와 Claude Desktop 사용

brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
  • 사용하려면 Intiface Central 허브 애플리케이션을 내려받아 장치를 관리하고, 서버 포트를 확인해야 함
    • 기본 포트는 12345로 보인다고 되어 있음
  • Claude Desktop에서는 MCP 서버 설정에 실행 파일과 WebSocket 포트를 등록함
    • MacOS Homebrew 설치 경로 예시는 /opt/homebrew/bin/buttplug-mcp
    • 설정 예시는 --ws-port 12345를 사용함
{
  "mcpServers": {
    "buttplug": {
      "command": "/opt/homebrew/bin/buttplug-mcp",
      "args": [
        "--ws-port", "12345"
      ]
    }
  }
}

Ollama와 mcphost 실험

  • 로컬 추론에서는 Ollama를 지원하는 MCP 호스트를 사용할 수 있음
  • 도구를 지원하는 Ollama LLM을 사용해야 함
  • 실험에는 mcphost가 쓰였고, 이 프로젝트는 mcp-go 라이브러리 개발자가 만든 MCP 호스트임
  • 실행 예시는 mcp.json에 앞선 설정을 저장한 뒤 llama3.3 모델로 실행함
go install github.com/mark3labs/mcphost@latest
mcphost -m ollama:llama3.3 --config mcp.json
  • README 기준으로 mcphost에서는 Tools만 지원되고 Resources는 지원되지 않아 장치를 열거하거나 세부 조회할 수 없었음
  • phi4-minidevice_vibrate 도구 호출은 성공 응답을 받았지만, 앞서 명시한 현재 상태 문제 때문에 실제 장치는 진동하지 않았음

빌드, 테스트 도구, CLI

  • 빌드는 task로 수행되며, 결과 바이너리는 bin/buttplug-mcp에 생성됨
task
  • 빌드 과정은 go mod tidygo 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 옵션은 도움말, 로그 파일, JSON 로그, SSE 전송, SSE 호스트, verbose 로그, Buttplug WebSocket 서버 포트 설정을 지원함
    • --ws-port int: Buttplug WebSocket 서버에 연결할 포트
    • --sse: 기본 STDIO 대신 SSE Transport 사용
    • --log-file string: 로그 파일 목적지 또는 MCP_LOG_FILE 환경변수 사용
    • --log-json: JSON 로그 사용
    • --verbose: 상세 로그 사용

댓글과 토론

어우.. 우리에겐 너무 이르다고 해야할지..

Hacker News 의견들
  • Buttplug 표준에 대한 예전 HN 논의들이 몇 개 있었고, 당연히 “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
    • Teledildonics라는 단어 자체가 정말 대단함. BO.io에 기여해서 이력서를 채우고 싶어질 정도인데, 거기에 적어둔 침투 테스트 경력과 엮이면 불편한 질문이 나올 수도 있겠음. 뭔가 백도어 얘기도 따라오고
    • 관련해서 Emacs용 성인용품 제어 및 teledildonics 모드인 Deldo도 있었음
      Deldo is a sex toy control and teledildonics mode for Emacs (github.com/qdot) (2021) https://news.ycombinator.com/item?id=29207607 | 126 comments
  • 이게 요즘 계속 듣는 “vibe coding”인가?
    • buttplug.io 첫 페이지에 이미 이렇게 적혀 있음: “We were vibe coding before it was cool.”
    • https://github.com/profullstack/mcp-server는 실제로 vibe coding으로 만들었다고 함
    • 이런 프로젝트의 사용자 인수 테스트가 어떻게 생겼을지 궁금함
    • 원글 작성자는 이걸 꽤 고민했을 것 같음. 이런 건 하드웨어 명세를 정말 깊게 파고들어야 하니까
  • 이런 장난감을 제어하는 API를 몇 번 봤는데, 볼 때마다 꽤 개방적이라 놀람. 각 기기마다 잠긴 독점 앱이 딸려오고, 공개적으로 불평하면 민망해서 아무도 말 못 하는 쪽을 예상했음
    왜 이 시장은 다른 걸까? 대기업들이 이 시장을 피해서 아직 망쳐놓지 못했기 때문인가?
    • 아는 한, 그런 API는 제조사가 공개 문서화한 게 아니라 커뮤니티가 역공학한 것임. 장난감 자체가 Bluetooth 기반이라 페어링과 근접성이 보안의 전부에 가까움
    • 덴마크 가정에서 흔히 볼 전자기기 중에 제대로 잠겨 있는 건 많지 않음. 전자레인지, 전동칫솔, 라우터, 전기자전거처럼 컴퓨터가 들어간 건 대체로 “해킹”하기 쉬운 편이고, 성인용품이 다른 점은 사람들이 거기에 들이는 노력의 양일 가능성이 큼
      이 글을 보기 전까지는 전기자전거 커뮤니티가 일상 전자기기를 건드리는 가장 큰 해커 커뮤니티라고 생각했음. 유럽에는 전기자전거 컴퓨터 해킹이 꽤 많고, 속도 제한을 풀려는 경우도 있지만 불법이고 덴마크 대도시에서는 걸릴 가능성도 높음
      나는 주로 통계 때문에 했음. 내 전기자전거 컴퓨터는 “현재” 주행거리를 500km마다 초기화하고 총 주행거리는 다른 곳에 저장했는데, 정비소에 들어가면 그것도 초기화됐음. 기본 화면에 시계도 없어서, 디스플레이에 시계를 띄우려는 게 주된 이유였고 이제는 주행거리 백업과 재미용 통계도 추가해 둠
      정비소에 보낼 때는 공장 설정으로 다시 플래시함. 기기 해커는 전혀 아니지만, 검색만으로 내 브랜드에 맞는 도구를 찾아 원하는 걸 할 수 있었음. 일상 기기 대부분에는 보안이 별로 없다고 봄. Google Camera로 NSA가 들여다보는 걸 원치 않는 유럽 사람들이 대형 기술 회사 제품이 아닌 걸 사서 그럴 수도 있지만, Bosch 같은 큰 브랜드 제품도 꽤 해킹 가능함. 하드웨어를 손에 쥐면 결국 대부분 해킹 가능한 것 아닌가?
    • 캠 스트리머와 스트리밍 플랫폼용 확장 기능을 만들 수 있는 수요 때문일 것 같음. 예를 들어 Lovense는 스트리밍 사이트에서 “채팅으로 제어되는 장난감”의 대명사처럼 됐음
    • 공간 특성상 고객을 만족시키려고 사람들이 온갖 수고를 감수하는 데 익숙해서 그런 것도 있을 듯함
    • 대부분은 제조사가 공개한 API가 아니라 Bluetooth 프로토콜을 역공학한 것임. Buttplug 사이트에는 메시지와 프로토콜 정보가 있고, 그중 일부는 꽤 엉망임
      Lovense 같은 곳은 API를 공개할 의향이 있다고 했지만 GitHub에는 빈 저장소만 있는 수준임. 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...
  • https://buttplug.io/에 따르면 Buttplug은 성인용품, 섹스 머신 등 친밀한 하드웨어를 제어하기 위한 오픈소스 표준 및 소프트웨어 프로젝트임
    “Intimate Haptics Control Standard and Library”라고 설명하고, 더 자세한 설명은 https://buttplug-spec.docs.buttplug.io/docs/spec에 있음
  • .io 최상위 도메인은 완벽한 선택임
  • 예전에 “소비자 기기 보안” 강의에 신청했는데, 발표자가 든 모든 예시가 인터넷 연결 성인용품이 사고 친 사례라 놀랐음
    개인정보가 유출됐거나, 기기가 사용자를 “가둔” 뒤 랜섬을 요구한 경우였음. 책상에서 웃고 있었지만, 너무 NSFW한 내용이라 왜 웃는지 설명할 수 없었음
  • 이걸 ChatGPT 예약 작업과 붙이면 흥미로운 알람시계가 될 수 있겠음
    • Home Assistant 연동이 있는 것 같으니 차고 문을 열어둔 걸 잊었을 때 알림을 받을 수도 있겠음
  • 누군가 대형 기술 기업이 원치 않는 AI 기능을 억지로 집어넣을 수 있다고 말할 때를 대비해 이걸 북마크해 둠
  • 와, 안녕하세요! 제가 https://buttplug.io의 창작자이자 프로젝트 리드인 qDot입니다
    이미 첫 페이지에서는 많이 내려갔지만, 뭐든 물어보셔도 됨
  • 작성자임. 만우절에 만든 걸 이제 보게 되다니 즐거운 금요일임. 매년 그날에는 바보 같은 개인 프로젝트를 하는데, 그 주에 MCP 서버를 만지고 있었고 이걸 만들면 웃기겠다고 생각했음. ConAcademy는 이상한 아이디어와 구현을 올려두는 곳임
    이 특정 MCP 서버는 꽤 쓸모없고, 성적 상호작용을 원하는 방식도 절대 아님을 README에 쓰려고 했음. 그래도 시작은 어디선가 해야 하고, good-giving-game 방식이 우리 스타일이라 GitHub에 올렸음
    아이러니하게도 2년 전 프로젝트는 Charm 기반 SSH 채팅방과 BubbleTea TUI에 Buttplug을 통합한 것이었음. SSH 키로 디지털 동의의 일부를 다루고, 어떤 엔티티가 다른 엔티티의 기기에 무엇을 할 수 있는지 익명 그래프로 만들었음. 에이전트가 제어하는 MCP의 미래에는 그런 요소가 필요하다고 봄
    저는 Buttplug.io 메인테이너는 아니지만 Discord에서 그들과 한동안 이야기했음. 이왕 봐주시는 김에, Rustacean 중 관심 있는 분이 있다면 그 프로젝트는 추가 메인테이너를 찾고 있음. 이 MCP 서버는 Golang으로 작성됐지만, Buttplug 생태계 안에서는 Rust로 되어 있는 편이 더 나을 것임
    초기 경력은 햅틱 연구였고 Immersion을 통해 관련 특허도 여러 개 있음. 석사 논문은 3D 햅틱 렌더러를 작성하고 VRML에 햅틱을 통합하는 것이었음. 기억하신다면! 성기능 장애 진단 기기에 대한 NIH 연구비 프로젝트도 했고, 집에서 만든 장난감도 제작했음. 지금은 Neurable EEG 헤드셋을 막 받아서 Biaerolar Beats 연구 [1]를 하고 있음
    vibe coding 얘기로 돌아가면, 이걸로 LELO F1을 진동시킨 건 맞지만 이 프로젝트는 진짜로 손수 만든 것임. 몇 주 전 Claude와 Gemini로 a2a4a2a를 vibe coding해 보려 했는데, A2A 프로토콜이 너무 새로워서 모델에게 A2A를 가르치기 어려웠음. 일반적으로 사람들이 이런 걸 어떻게 처리하는지 궁금함
    전체적으로 재미있었고 도구 호출 LLM에 대해 많이 배웠음. 그 주에 MCP 서버를 세 개 만들었는데, 돈용 [2], 성용 [3], 약물용 [4]이었음. mark3labs/mcp-go 덕분임
    마지막 AgentDank [4]는 아직 후속 작업을 못 했지만, 공개 데이터와 실제 AI 결과 면에서는 아마 제일 멋짐. 거기 동영상을 보면 됨. 사용자 정의 데이터와 SQL 엔드포인트를 도구 호출 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
    • “성적 상호작용을 원하는 방식은 절대 아님”이라는 건 본인 기준일 뿐임