- Buttplug MCP, Buttplug.io ekosistemindeki yetişkin cihazlarını büyük dil modeli (LLM) tabanlı programlarla entegre eden bir MCP sunucusudur
- Kullanıcılar, Claude Desktop gibi LLM araçları üzerinden cihaz bilgilerini sorgulayabilir; titreşim, pil durumu, sinyal gücü gibi çeşitli işlevleri kontrol edebilir
- Şu anda işlevsel olgunluk ve kararlılık yetersiz olduğundan tüm özellikler sorunsuz çalışmıyor ve gerçek cihaz kontrolünde zorluklar yaşanabiliyor
- Ollama, mcphost gibi MCP host'larıyla entegre edilerek araç tabanlı testler yapılabiliyor, ancak bazı işlevler (kaynak keşfi gibi) sınırlı
- Bu proje, diğer MCP servisleriyle kıyaslandığında LLM tabanlı akıllı cihaz kontrolüne odaklanıyor ve açık kaynak olarak ücretsiz sunuluyor
Proje özeti
- buttplug-mcp, Model Context Protocol (MCP) sunucusudur ve Buttplug.io ekosistemine özeldir
- Claude Desktop gibi araç destekli LLM programları içinde kendi Buttplug cihazlarınızı sorgulayıp kontrol etmenizi sağlar
- Örnek komutlar: "Bağlı buttplug cihazlarım hangileri?", "LELO F1S'in ikinci motorunu %50'ye ayarla", "Lovense Max 2'nin kalan pili ne kadar?", "WeWibe sinyali zayıf mı?"
- Bu örnekler hedeflenen yöne yakın olsa da, mevcut uygulamadaki gerçek deneyim şu anda kararsız ve hayal kırıklığı yaratıcı durumda
Desteklenen kaynaklar ve araç yapısı
- API kaynakları
/devices: bağlı Buttplug cihazlarının listesi (JSON)
/device/{id}: tekil cihaz ayrıntı bilgisi
/device/{id}/rssi: cihaz sinyal gücü (RSSI)
/device/{id}/battery: cihaz bazında kalan pil durumu
- Araçlar
device_vibrate: id, motor, strength parametreleriyle (zorunlu: id, strength), isteğe bağlı motor seçerek titreşimi kontrol eder
JSON şema örneği (kaynaklar)
{
"resources": [
{
"uri": "devices",
"name": "Device List",
"description": "List of connected Buttplug devices in JSON",
"mimeType": "application/json"
}
]
}
JSON şema örneği (araçlar)
{
"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"
}
]
}
Mevcut durum
- 1 Nisan 2025'te (1 Nisan şakası günü) başlatılmış deneysel ve kısa vadeli bir projedir
- go-buttplug kütüphanesinin bağlantı yönetimi kararsız olduğundan cihaz listesi sorgulanabilse de titreşim gibi bazı kontrol işlevleri sorunsuz çalışmıyor
- Test amacıyla sanal cihaza ihtiyaç var, ancak Buttplug.io yalnızca fiziksel cihazları destekliyor
- Yeterli uçtan uca test yapılmamış erken aşama bir proje
- İleride go-buttplug kütüphanesindeki bağlantı sorunları ve MCP protokolünün host tarafındaki durumu (araç odaklı uygulamalar vb.) daha fazla incelenecek
Kurulum rehberi
- Çoklu platform için derlenmiş ikili dosyalar GitHub Releases üzerinden dağıtılıyor
- Homebrew ile kurulum da destekleniyor:
brew tap conacademy/homebrew-tap
brew install conacademy/tap/buttplug-mcp
Kullanım
Ollama ve mcphost ile entegrasyon
Derleme
- task tabanlı bir derleme sistemi kullanılıyor
- Faydalı test araçları:
task stdio-schema | jq (JSON şemasını kontrol etme)
npx @modelcontextprotocol/inspector node build/index.js (MCP Inspector Web GUI)
CLI argümanları
- Başlıca seçenekler:
-h, --help: yardım
-l, --log-file: log dosyası hedefini belirtir
-j, --log-json: JSON log biçimi
--sse: SSE aktarımını kullanır
--sse-host: SSE bağlantısı için host/port
-v, --verbose: ayrıntılı log
--ws-port: Buttplug Websocket sunucusuna bağlanma portu
Katkı ve davranış kuralları
- Pull Request, fork vb. katkılar serbestçe memnuniyetle karşılanır
- Code of Conduct belgesine uyulması gerekir
Katkılar ve lisans
- go-buttplug, go-mcp açık kaynak projelerinden yararlanılıyor
- Buttplug.io Golang kütüphanesi ve örnekleri ile Model Context Protocol Golang kütüphanesi dahil
- 2025 Neomantra BV, Evan Wies (ConAcademy) eseri
- MIT lisansı ile yayımlanıyor (ayrıntılı lisans için LICENSE.txt dosyasına bakın)
2 yorum
Off... Bizim için biraz fazla erken galiba..
Hacker News görüşleri