# Buttplug MCP

> Clean Markdown view of GeekNews topic #21220. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21220](https://news.hada.io/topic?id=21220)
- GeekNews Markdown: [https://news.hada.io/topic/21220.md](https://news.hada.io/topic/21220.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-06-01T12:48:45+09:00
- Updated: 2025-06-01T12:48:45+09:00
- Original source: [github.com/ConAcademy](https://github.com/ConAcademy/buttplug-mcp)
- Points: 1
- Comments: 2

## Topic Body

- **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 스키마 예시(리소스)

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

#### 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 파일):  
    ```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](https://taskfile.dev/) 기반 빌드 시스템 적용
    - 실행: `$ 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](./CODE_OF_CONDUCT.md) 준수 필요

### 크레딧 및 라이선스

- **go-buttplug**, **go-mcp** 오픈소스 프로젝트 활용
    - Buttplug.io Golang 라이브러리 및 예시, Model Context Protocol Golang 라이브러리 포함
- 2025 Neomantra BV, Evan Wies(ConAcademy) 저작
- **MIT 라이선스**로 공개(자세한 라이선스는 LICENSE.txt 참고)

## Comments



### Comment 39692

- Author: bbulbum
- Created: 2025-06-03T11:13:44+09:00
- Points: 1

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

### Comment 39606

- Author: neo
- Created: 2025-06-01T12:48:45+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44133706) 
* 예전에 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 고글이나 다른 서비스처럼 상황이 많이 바뀌었다는 의견
