Buttplug MCP
(github.com/ConAcademy)- Buttplug MCP는 Buttplug.io 생태계 내 성인용 디바이스를 대형 언어 모델(LLM) 기반 프로그램과 연동하는 MCP 서버임
- 사용자는 Claude Desktop 등 LLM 툴을 통해 디바이스 정보를 조회하거나 진동, 배터리 상태, 신호 세기 등 다양한 기능 제어가 가능함
- 현재는 기능적 완성도와 안정성이 부족해 전체 기능이 매끄럽지 않고, 실제 디바이스 제어에 어려움이 있음
- Ollama, mcphost 등 MCP 호스트와 연동하여 툴 기반의 테스트가 가능하나, 일부 기능(자원 탐색 등)은 제한됨
- 이 프로젝트는 다른 MCP 서비스와 비교해 LLM-기반 스마트 디바이스 제어에 특화되어 있으며 오픈소스로 무료 제공됨
프로젝트 개요
- buttplug-mcp는 Model Context Protocol(MCP) 서버로, Buttplug.io 생태계 전용임
- Claude Desktop과 같은 툴 지원 LLM 프로그램에서 자신의 Buttplug 디바이스를 질의·제어 가능함
- 예시 명령: "내 연결된 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 스키마 예시(리소스)
{
"resources": [
{
"uri": "devices",
"name": "Device List",
"description": "List of connected Buttplug devices in JSON",
"mimeType": "application/json"
}
]
}
JSON 스키마 예시(툴)
{
"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"
}
]
}
현재 상태
- 2025년 4월 1일(만우절)에 시작한 실험적 단기 프로젝트임
- go-buttplug 라이브러리의 연결 관리가 불안정해, 디바이스 리스트 질의는 되나 진동 기능 등 일부 제어가 원활하지 않음
- 테스트 목적으로 가상 디바이스가 필요하나 Buttplug.io는 물리적 디바이스만 지원함
- 엔드투엔드 테스트가 충분히 이뤄지지 않은 초기 단계임
- 향후 go-buttplug 라이브러리의 연결 문제와 MCP 프로토콜의 호스트 상태(툴 중심 구현 등)를 추가로 검토할 예정임
설치 안내
- 다중 플랫폼용 바이너리 파일이 GitHub Releases에 배포됨
- Homebrew를 통한 설치도 지원됨:
-
brew tap conacademy/homebrew-tap
-
brew install conacademy/tap/buttplug-mcp
-
사용법
- 디바이스 관리는 Intiface Central 허브 앱에서 담당(기본 포트 12345)
- Claude Desktop에서 MCP 서버로 buttplug-mcp를 사용할 수 있도록 호스트 프로그램에 설정 필요
- 예시 설정(JSON 파일):
{ "mcpServers": { "buttplug": { "command": "/opt/homebrew/bin/buttplug-mcp", "args": ["--ws-port", "12345"] } } }
- 위 설정 후 Claude Desktop의 튜토리얼을 참고하여 적용 가능, Claude와 대화하며 디바이스 질의·제어 가능
- HomeAssistant MCP를 통한 조명 제어 등 추가 연동 활용 가능
Ollama 및 mcphost와의 통합
- MCP 호스트 중 Ollama 지원이 가능하며, 툴 지원 LLM과 연동 가능
-
mcphost(mcp-go 개발자가 관리)와 함께 buttplug-mcp용 MCP JSON 설정으로 사용 가능
- 예시:
$ go install github.com/mark3labs/mcphost@latest $ mcphost -m ollama:llama3.3 --config mcp.json
- "Tools"만 지원하고 "Resources"는 제한되어 디바이스 나열이나 속성 탐색 불가
- 실제 예시에서는 디바이스 진동 명령에 대한 성공 메시지는 반환하지만, 디바이스 반응이 없을 수 있음
빌드
-
task 기반 빌드 시스템 적용
- 실행:
$ task
- 실행:
- 유용한 테스트 도구:
-
task stdio-schema | jq
(JSON 스키마 확인) -
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, 포크 등 자유롭게 환영
- Code of Conduct 준수 필요
크레딧 및 라이선스
-
go-buttplug, go-mcp 오픈소스 프로젝트 활용
- Buttplug.io Golang 라이브러리 및 예시, Model Context Protocol Golang 라이브러리 포함
- 2025 Neomantra BV, Evan Wies(ConAcademy) 저작
- MIT 라이선스로 공개(자세한 라이선스는 LICENSE.txt 참고)
Hacker News 의견
- 예전에 Hacker News에서 Buttplug 표준에 대해 여러 번 논의가 있었던 기억이 있어 공유함
- teledildonics 관련 오픈소스 소프트웨어(https://buttplug.io/) 소개 및 ‘Rust로 구현된 프로젝트’ 논의 등 다양한 주제를 다룸
- 사용자 경험 및 윤리에 대한 개발 가이드(https://docs.buttplug.io/docs/dev-guide/intro/buttplug-ethics/)도 다루는 글 있음
- UART 직렬 통신 기반 성인용 장난감용 프로토콜 T-code(https://stpihkal.docs.buttplug.io/protocols/tcode.html)도 소개됨
- Rust로 작성된 Sextoy Control Project(https://buttplug.io/)도 언급됨
- Teledildonics라는 단어 자체가 대단하다고 생각함
- BO.io에 커밋해서 내 이력서에 넣고 싶다는 생각도 하지만, 내 펜테스트 항목이 괴상한 질문거리만 늘릴 것 같은 찜찜함도 느낌
- Emacs에서 동작하는 섹스토이 컨트롤 및 teledildonics 모드 Deldo와 관련해 참고할만한 정보(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를 명세하는 게 아니라, 커뮤니티가 역공학으로 만들어낸 경우가 대부분인 사실 설명
- 제품들은 대개 블루투스로 연결되기 때문에, 보안은 페어링과 근접성 정도로 만족하는 경우가 많음
- 덴마크에선 집에 있는 전자기기 대부분이 폐쇄적이지 않고, 해킹도 어렵지 않음
- 마이크로파, 전동칫솔, 라우터, e-bike 같은 기기들도 간단한 해킹 대상임
- 섹스토이 해커들이 훨씬 많은 이유는 이쪽에 더 많은 열정이 몰리는 현상
- 예전엔 e-bike 해킹 커뮤니티가 가장 큰 줄 알았으나, 섹스토이 쪽이 더 클 수도 있다고 추정함
- e-bike 해킹 이유는 대부분 속도 제한 해제나 통계 기능 때문임
- 나는 디바이스 해커가 아니지만, 검색만으로 필요한 툴을 쉽게 찾을 수 있었음
- 실제로 일상 기기들에 보안이 견고하지 않은 경우가 많음
- 유럽에선 주요 테크 기업 제품 대신 비브랜드 제품을 사길 원하는 문화도 존재
- 큰 브랜드 제품도 해킹이 쉬운 편이고, 하드웨어만 있으면 대부분 해킹 가능하다고 느낌
- 캠 스트리머들이 자신만의 장치 확장 기능을 만들기 쉽게 해야 해서 커뮤니티 접근성이 높아졌다는 의견
- Lovesense가 스트리밍 사이트에서 “채팅으로 컨트롤되는 장난감”의 대명사로 자리잡은 사례 언급
- 이 업계에선 사용자 만족을 최우선으로 두기 때문에 이렇게 오픈된 걸로 보임
- 중국산 오픈 기기들이 많고, 저렴한 범용 칩과 프로토콜을 그대로 사용하는 경우가 대부분이라고 추정함
- 신뢰성이나 보안도 소홀하게 다뤄서 역공학이 어렵지 않음
- 블루투스 연결이 저렴하고 허술하게 설계된 느낌이고, 심지어 사람 신체로 인해 연결이 끊기기도 쉬움
- 컨트롤러는 단순 신호만 스트리밍하며 추가 연산이나 오류 처리도 거의 없는 듯함
- Buttplug는 성인 장난감과 같은 친밀한 하드웨어를 제어하는 오픈 소스 표준 및 소프트웨어 프로젝트임
- 더 자세한 설명은 https://buttplug-spec.docs.buttplug.io/docs/spec에서 볼 수 있음
- .io TLD가 이 프로젝트엔 정말 찰떡 선택이라고 느낌
- 이에 대해 웃긴 반응을 보임
- qDot이고, https://buttplug.io의 창립자 및 프로젝트 리드임
- 이미 메인 페이지에서 내려갔지만 질문이 있다면 언제든 AMA 환영임
- 이 시스템에 ChatGPT 예약 작업을 더하면 정말 색다른 알람시계가 될 것 같다고 생각함
- 홈 어시스턴트 통합도 지원해서 차고문 열림 같은 알림으로도 사용할 수 있을 듯함
- 누군가 빅테크가 원치 않는 AI 기능을 강제로 넣는다고 하면, 이 사이트를 북마크해두고 보여주고 싶다는 생각
- 본인(저자)인데, 이 프로젝트는 만우절에 만들어진 ‘쓸데없는’ 개인 프로젝트임
- 매년 만우절에 재미 삼아 만든 게 GitHub에 올라가게 됨
- 이 MCP 서버는 실사용에는 별 의미가 없지만, 시작점이 중요하므로 올려둔 상태
- 2년 전엔 Buttplug를 SSH 챗룸과 연동했었고, 디지털 동의와 SSH 키를 조합해 익명화된 액세스 그래프를 구성한 경험 설명
- 현재도 Buttplug.io 메인테이너는 아니지만 Discord에서 여러 논의를 했었음
- Rustacean(러스트 커뮤니티 멤버) 중 신규 메인테이너도 찾고 있다고 전달
- MCP 서버는 Golang으로 작성했지만, Buttplug 생태계엔 Rust가 더 어울릴 듯함
- 예전에는 햅틱스(haptics) 연구를 했고, 관련 특허와 VRML 통합 경험 있음
- NIH 연구비로 만든 성기능 진단 기기 및 직접 제작한 장난감 경험도 소유
- 지금은 Neurable EEG 헤드셋으로 Biaerolar Beats 연구 진행 중임(https://github.com/ConAcademy/biareolar-beats)
- vibe coding으로 LELO F1을 울려봤지만, 이 프로젝트는 실제 손수 코딩한 결과물
- 최근엔 Claude, Gemini와 같이 A2A 프로토콜로 vibe code도 시도했으나 구현 난이도가 높았음
- MCP 서버를 그 주에 3개(돈·섹스·마약) 만들었고, 오픈 데이터 및 AI 실사용 결과 측면에선 AgentDank(https://github.com/AgentDank/dank-mcp)가 가장 흥미로움
- 커스텀 데이터와 SQL 엔드포인트를 툴 호출형 LLM에 붙이는 건 엄청난 잠재력이라고 느낌
- "그 방식이 비효율적인 성적 상호작용"이라는 말에 "그건 각자의 자유"라는 반응
- 다양한 서비스에서의 프라이버시 문제에 대해 어떻게 생각하는지 궁금함
- 예전엔 그냥 제품만 사고 벤더와는 아무런 관계 없이 쓸 수 있었는데, 요즘은 VR 고글이나 다른 서비스처럼 상황이 많이 바뀌었다는 의견