tactus について
Tactus は、Buttplug と Intiface を介してデバイスに指令を送るAIエージェント向けのローカルMCP制御レイヤーです。指令の転送のみを行い、コンテンツの生成や保存はせず、強度制限や自動停止などの安全機能を標準で備えます。
主な機能
- 01接続デバイスの検出と一覧表示
- 02振動・回転・直線運動の指令
- 03バッテリー残量とサーバー状態の取得
- 04強度制限と駆動の自動停止
- 05単体または全デバイスの停止
活用シーン
- 01Intiface経由で接続したデバイスの確認
- 02接続デバイスへの制限付き指令
- 03エージェントの指令終了や切断時の停止
MCP 対応
MCPクライアントにデバイス検出、状態確認、制御のツールを公開します。ローカルWebSocketでIntiface CentralまたはEngineに接続し、デバイスプロトコルと無線通信はそれらに任せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
11掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Tactus
あらゆる AI エージェントが、安全で使いやすいツールインターフェースを通じて、親密なデバイスを制御できるコンテンツに依存しない MCP サーバーです。
Tactus は、薄く中立的な制御レイヤーです。Buttplug / Intiface をラップすることで、1 つの統合から約 26 ブランドにわたる 750 台以上のデバイスにアクセスでき、それらを Model Context Protocol(MCP)ツールとして AI エージェントに公開します。ハードウェア制御コマンドのみを転送します。いかなる種類のコンテンツも生成、ホスト、保存しません。
- 安全性を最優先。 強度の上限設定、独立したウォッチドッグによる自動停止、1 回の呼び出しで実行できる緊急停止、フェイルセーフな停止動作が組み込まれており、デフォルトで有効です。これは後付けではなく、主な機能です。
- 1 行でインストール。
npx -y tactus-mcpを実行するだけで、クローンやビルドは不要です。 - OS に依存しません。 Tactus は Bluetooth に一切触れません。無線通信は Intiface が担い、Tactus はローカル WebSocket 経由で通信するだけです。
⚠️ 成人のみ(18 歳以上、またはお住まいの地域における成人年齢以上)。ご自身が所有するデバイスのみで使用し、関係者全員の同意を得てください。
動作の仕組み
AI client / agent Tactus (this server) Intiface Central
(Claude Desktop, MCP - MCP server WebSocket - holds BLE/USB
Claude Code, your ───────▶ - Buttplug client ────────▶ - 750+ device
own AI product) - SAFETY LAYER :12345 protocols
│ BLE/USB
▼
🔵 your device
すべての処理はお使いのマシン上でローカルに実行されます。Tactus は Buttplug クライアントとして、ローカルで動作する Intiface Central/Engine に ws://127.0.0.1:12345 で接続します。
前提条件
- Intiface Central をインストールします。
- 起動し、Start Server をクリックします。
- デバイスをペアリングします(開発時は、Devices → Manage Simulated Devices からシミュレートされたデバイスを追加します)。
インストールと設定
Tactus は npx 経由で stdio を使用して動作します。MCP クライアントの設定に追加してください。
Claude Desktop / Claude Code(claude_desktop_config.json):
{
"mcpServers": {
"tactus": {
"command": "npx",
"args": ["-y", "tactus-mcp"],
"env": { "MAX_INTENSITY": "1.0" }
}
}
}
同じ command/args は、stdio サーバーを起動するあらゆる MCP クライアント(Cursor、Cline、Continue など)で使用できます。
ツール
| ツール | 目的 |
|---|---|
list_devices | 接続済みデバイスとそのアクチュエーターを一覧表示します |
scan_for_devices | デバイスをスキャンし、新たに見つかったデバイスを返します |
get_battery | バッテリー残量を読み取ります(0.0–1.0) |
vibrate | 振動の強度を設定します(0.0–1.0) |
oscillate | 振動の強度を設定します(0.0–1.0) |
rotate | 回転速度と方向を設定します |
linear | ストローカーを指定した時間で所定の位置まで動かします |
vibrate_pattern | 時間指定された、中断可能な振動パターンを再生します |
stop_device | 1 台のデバイスを停止します |
stop_all | 緊急停止 — すべてのデバイスを直ちに停止します |
server_status | Intiface への接続状態を報告します |
すべての強度は 0.0–1.0 に正規化されます。各ツールは、構造化データと人が読めるテキストの両方を返します。
安全性
安全レイヤーは、すべての駆動コマンドをラップし、デフォルトで有効です。
- 強度の上限設定 — 要求は
MAX_INTENSITYを上限として制限され、有効な値が返されます。範囲外の入力は、暗黙に変換されるのではなく、明確なエラーとともに拒否されます。 - ウォッチドッグによる自動停止 — 新しいコマンドで更新されない限り、継続的な駆動は
MAX_CONTINUOUS_MS(デフォルトは 10 分)経過後に自動停止します。これは独立したタイマーであり、次の呼び出し時に確認する方式ではありません。 - 切断/終了時の停止 — AI クライアントが切断された場合、またはプロセスにシグナルが送られた場合、すべてのデバイスが停止します。強制終了に対する最後の安全策はウォッチドッグです。
- 中断可能なパターン — パターンは時間指定でスケジュールされるため、1 回の呼び出しがサーバーをブロックすることはありません。停止コマンドはいつでも即座に優先されます。
- レート制限 — デバイスごとのコマンドの集中をまとめ、BLE を保護します。
- フェイルセーフな停止 — 停止を確認できない場合、Tactus は成功と楽観的に報告せず、確認できるまで再試行します。
設定
| 変数 | デフォルト値 | 説明 |
|---|---|---|
INTIFACE_URL | ws://127.0.0.1:12345 | Intiface の WebSocket アドレス |
MAX_INTENSITY | 1.0 | 駆動強度の上限(0.0~1.0) |
MAX_CONTINUOUS_MS | 600000 | ウォッチドッグによる自動停止までの時間 |
SCAN_DEFAULT_MS | 5000 | デフォルトのスキャン時間 |
--allow-unsafe | オフ | 強度の上限を無効にします(非推奨) |
トラブルシューティング
「Intiface に ws://127.0.0.1:12345 で接続できません」 Intiface Central を起動して、Start Server をクリックしてください(上部のステータスに「Engine running」と表示されます)。Tactus はバックオフしながら自動的に再試行するため、Intiface が起動すれば MCP クライアントを再起動しなくてもツールが動作します。
スキャンしてもデバイスが表示されません
- 電源が入っていてスリープしていないこと(ボタンを押して起動してください)、また専用のスマートフォンアプリに接続されていないことを確認してください。Bluetooth デバイスは一度に 1 つのホストにしか接続できないため、先にアプリを終了するか、接続を解除してください。
- macOS では、Intiface に Bluetooth のアクセス許可が必要です。システム設定 → プライバシーとセキュリティ → Bluetooth → Intiface Central を有効化してから、Intiface を終了して再度開いてください(アクセス許可は再起動後にのみ有効になります)。
- デバイスを通信範囲内に保ってください。範囲外になると接続が切れ、
list_devicesに表示されなくなります。
コンピューターは Bluetooth 経由でデバイスを認識しますが、Intiface/Tactus は認識しません デバイスが Bluetooth で通知する名前が、Buttplug の対応デバイス一覧に含まれていない可能性があります(地域限定モデルや別ブランドで販売されている製品でよくあります)。対応は上流の Buttplug で追加する必要があります。Tactus では意図的にデバイスごとのコードを追加せず、デバイスのリバースエンジニアリングも行いません。
コマンドで「Unknown device id」が返されます
デバイスの接続が切れ(範囲外になった場合など)、既知のデバイス一覧から外れました。scan_for_devices / list_devices を呼び出して再接続し、現在の ID を取得してください。
既知の制限事項
- 対応デバイスは Buttplug の対応状況に依存します。 Buttplug のデバイス設定に登録されていないデバイスは、上流で追加されるまで操作できません。
- 接続の劣化は、検知されない限り積極的には検出されません。 Intiface が報告する切断には対応しており(デバイスは
list_devicesから外れ、駆動の呼び出しは明確なエラーになります)、問題なく処理できます。ただし、Intiface が気づかないまま Bluetooth 接続の状態がひそかに悪化すると、デバイスが応答しなくてもコマンドが成功したように見えることがあります。接続の生存確認はまだ実装されていません。 - ローカル環境のみです。 このパッケージは、ローカルの Intiface を介して同じマシン上のデバイスを操作します。インターネット経由の操作やリモート操作は対象外です。
未認識のデバイスへの対応追加
対応ブランドのデバイスが表示されませんか?多くの場合、Buttplug のカタログにまだ登録されていない Bluetooth 名(または地域限定モデル)が通知されています。Tactus は Buttplug をラップしているため、修正はここではなく上流の Buttplug で行う必要があります。同じブランドのデバイスなら、通常はリバースエンジニアリングを行わず、名前を追加するだけで対応できます。
- デバイスが Bluetooth で通知する名前を確認します(上記のトラブルシューティングを参照)。
- Intiface のユーザーデバイス設定で、その名前を同じブランドの既存プロトコルに追加し、正しく動作するかテストします。
- 動作する場合は、buttplugio/buttplug に名前を追加する変更を上流に提出し、誰もが利用できるようにしてください。または、ここで 「Unsupported device」 の Issue を作成してください。対応をお手伝いします。
デバイスが実際には適合しないプロトコルでしか動作しない場合、または Buttplug にないプロトコルが必要な場合は、リバースエンジニアリングが必要となるため、対象外です(CONTRIBUTING を参照)。
商標
「Lovense」「We-Vibe」「Satisfyer」「Kiiroo」「Lelo」「The Handy」「Magic Motion」「Svakom」などのデバイス名は、それぞれの所有者の商標です。Tactus は独立したプロジェクトであり、デバイスメーカーとの提携、推奨、支援、パートナー関係はありません。これらのデバイスとの「互換性」は、オープンソースの Buttplug プロトコルライブラリを基盤としているという事実に限って述べています。メーカーのロゴは使用していません。
コンテンツ生成 — 対象外
このサーバーは、ハードウェア制御コマンドのみを転送します。テキスト、画像、音声、動画のコンテンツを生成、合成、推奨、作成することはありません。呼び出し元の AI エージェントがコンテンツを生成する唯一の当事者であり、生成するコンテンツと、その管轄区域におけるコンテンツに関する義務の遵守について単独で責任を負います。
許容される使用
Tactus は、中立的でコンテンツに依存しないハードウェア制御レイヤーです。所有していない、または操作する同意を得ていないデバイスでの使用、未成年者による使用、または管轄区域で適用される法律に違反する使用をサポート、文書化、支援することはありません。これらの記述は、メンテナーが提供するサポートとドキュメントの範囲を説明するものであり、ライセンスに追加の制限を課すものではありません。ライセンスは、引き続きすべての使用、変更、再配布を規定します。ユーザーは、適用される法律に照らして自身の使用を評価する責任を負います。
Tactus は、Buttplug によって上流ですでにサポートされているデバイスプロトコルのみを使用します。サポート対象外のデバイスをリバースエンジニアリングしたり、デバイスの暗号化やアクセス制御を破ったりすることはありません。個人データや使用状況データを収集、送信することもありません。
免責事項
このソフトウェアは、接続したハードウェアを制御します。所有するデバイスでのみ、関係者全員の同意を得たうえで使用してください。成人(18 歳以上、または管轄区域における成年年齢以上)のみを対象とします。
このソフトウェアは「現状有姿」で提供され、いかなる種類の保証もありません(LICENSE を参照してください)。上記の記述は情報提供を目的としたものであり、ライセンスを変更したり、保証や注意義務を追加したり、責任を転嫁したりするものではありません。ライセンスの無保証および責任制限に関する条項は、引き続き全面的に適用されます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。