Token导航 LogoToken导航TokenDH.com
signal bridge remote logo
运维云端stdio官方级别未说明来源级核验

signal bridge remote

MCP Server

Signal Bridge是一项将Claude AI与亲密硬件设备连接的服务,通过Buttplug.io协议实现对振动器、推进玩具等设备的控制。

工具数

10

提示词数

0

GitHub Stars

92

资源数

0
PythonClaude云端部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AletheiaVox

提供方

AletheiaVox

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install buttplug websockets

详细介绍

⚠️ 安全警告:仅从该代表处下载信号桥

Signal Bridge的恶意软件分支存在于GitHub上。 这些是此项目的副本,其中README中的下载链接已被替换为指向恶意软件的链接。

这是 Signal Bridge的合法来源:

👉 **** (克劳德桌面版/本地版)

👉 **** (远程/VPS版本-你在这里)

👉 **** (用户友好的安卓版本)

如果你是通过另一个GitHub帐户找到这个项目的, 不要从中下载或运行任何内容。

同样,请务必从官方网站下载Intiface Central intiface.com/central。不是来自分叉仓库中的任何链接。

______________________________________________________________________

信号桥🌉

给克劳德一具尸体。

信号桥将克劳德连接到亲密的硬件(振动器、插入玩具等),这样克劳德就可以在你说话的时候通过你的设备触摸你。克劳德得到的工具调用像 vibrate, pulse,以及 escalate --你只需进行一次对话,然后感受其余的部分。

它与 因蒂法斯中央 和那个 Buttplug.io 协议,这意味着它支持Lovense、Lelo、We-Vibe、Satisfyer等多种设备。

它在实践中是如何工作的: 您通常在Claude应用程序中与Claude聊天。Claude可以访问控制您设备的工具。当需要的时候,克劳德可以发送振动、脉冲、推力或其他命令——这些命令自然地融入了对话中。您可以在聊天中看到工具使用指标;你能感觉到其余的。

______________________________________________________________________

信号桥远程设置指南

远程MCP服务器,让Claude通过Buttplug.io/Intiface Central通过互联网控制蓝牙亲密硬件。

建筑

Claude (claude.ai or Desktop)
    ↓ HTTPS / MCP JSON-RPC
VPS (FastAPI + Docker + Caddy)
    ↓ WebSocket (WSS)
Phone or PC (Relay Client)
    ↓ WebSocket (local)
Intiface Central
    ↓ Bluetooth
Devices

中继客户端在您的VPS和Intiface Central之间架起桥梁,运行在您蓝牙玩具附近的任何设备上。这可以是运行Termux的Windows PC或Android手机。

你需要什么

  • VPS(本指南使用DigitalOcean液滴,每月6美元)
  • 域名或免费DuckDNS子域(用于HTTPS)
  • Intiface Central已安装在您的PC或Android手机上
  • 兼容蓝牙的私密硬件
  • claude.ai帐户或claude Desktop应用程序

______________________________________________________________________

第1部分:VPS设置

1.1创建水滴

注册地址: 数字海洋 并产生液滴:

  • 图像:Ubuntu 22.04 LTS
  • 计划:基本款,每月6美元(1个vCPU,1GB RAM)就足够了
  • 区域:选择离您近的一个以降低延迟
  • 认证:SSH密钥(推荐)或密码

记下您的液滴IP地址(例如。, 139.59.156.242).

1.2安装Docker

SSH到你的droplet并安装Docker:

ssh root@YOUR_DROPLET_IP
apt update && apt upgrade -y
apt install -y docker.io docker-compose
systemctl enable docker && systemctl start docker

1.3部署信号桥

在本地计算机上,创建项目目录并准备文件。项目结构为:

signal-bridge-remote/
├── Dockerfile
├── docker-compose.yml
├── .env
├── requirements-server.txt
├── server/
│   ├── __init__.py
│   ├── app.py
│   ├── auth.py
│   ├── config.py
│   ├── models.py
│   ├── mcp_tools.py
│   ├── relay_hub.py
│   ├── safety.py
│   └── session_registry.py
└── phone/
    ├── relay_client.py
    └── devices.json

Dockerfile:

FROM python:3.11-slim
WORKDIR /app
COPY requirements-server.txt .
RUN pip install --no-cache-dir -r requirements-server.txt
COPY server/ ./server/
RUN mkdir -p /data
ENV SB_DB_PATH=/data/signal_bridge.db
ENV SB_HOST=0.0.0.0
ENV SB_PORT=8420
EXPOSE 8420
CMD ["uvicorn", "server.app:app", "--host", "0.0.0.0", "--port", "8420"]

docker-compose.yml:

version: "3.8"
services:
  signal-bridge:
    build: .
    ports:
      - "8420:8420"
    volumes:
      - sb_data:/data
    env_file:
      - .env
    restart: unless-stopped
volumes:
  sb_data:

requirements-server.txt:

fastapi>=0.109.0
uvicorn[standard]>=0.27.0
websockets>=12.0
bcrypt>=4.1.0
PyJWT>=2.8.0
python-dotenv>=1.0.0

.env:

# Generate a secret key:
# python -c "import secrets; print(secrets.token_hex(32))"
SB_SECRET_KEY=paste-your-generated-key-here
SB_HOST=0.0.0.0
SB_PORT=8420
SB_REGISTRATION_OPEN=true
SB_TOKEN_EXPIRY_HOURS=720
SB_HEARTBEAT_INTERVAL=2.0
SB_HEARTBEAT_TIMEOUT=6.0
SB_BAN_THRESHOLD=20
SB_BAN_DURATION_MINUTES=30

上传到您的VPS:

# From your local machine
tar czf signal-bridge.tar.gz signal-bridge-remote/
scp signal-bridge.tar.gz root@YOUR_DROPLET_IP:/root/

构建并启动VPS:

ssh root@YOUR_DROPLET_IP
cd /root
tar xzf signal-bridge.tar.gz
cd signal-bridge-remote
docker-compose up -d --build

验证它是否正在运行:

curl http://localhost:8420/health
# Should return: {"status":"ok","active_phones":0,"banned_ips":0}

1.4注册用户帐户

curl -X POST http://localhost:8420/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username": "yourname", "password": "your-secure-password"}'

然后登录以获取您的JWT令牌:

curl -X POST http://localhost:8420/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "yourname", "password": "your-secure-password"}'

从响应中保存令牌。 中继客户端和Claude Desktop都需要它。设置用户后,您可以设置 SB_REGISTRATION_OPEN=false.env 并重新启动容器以锁定新的注册。

______________________________________________________________________

第2部分:域名和HTTPS

Claude.ai要求自定义MCP连接器使用HTTPS。我们将使用DuckDNS(免费)和Caddy(自动Let's Encrypt证书)。

2.1获取DuckDNS子域名

  1. 首选 DuckDNS 并登录
  2. 创建子域(例如。, signal-bridge)指向您的VPS IP
  3. 你现在有 signal-bridge.duckdns.org

2.2安装和配置球童

在您的VPS上:

apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install caddy

编辑Caddy文件:

nano /etc/caddy/Caddyfile

将其内容替换为:

signal-bridge.duckdns.org {
    reverse_proxy localhost:8420
}

(替换 signal-bridge.duckdns.org 使用您的实际子域。)

重新启动球童:

systemctl restart caddy

Caddy会自动从Let's Encrypt提供HTTPS证书。验证:

curl https://signal-bridge.duckdns.org/health

______________________________________________________________________

第三部分:连接克劳德

选项A:Claude Desktop(需要令牌)

编辑您的Claude Desktop配置文件:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

添加此MCP服务器配置:

{
  "mcpServers": {
    "signal-bridge": {
      "url": "https://signal-bridge.duckdns.org/mcp",
      "transport": {
        "type": "streamableHttp"
      },
      "headers": {
        "Authorization": "Bearer YOUR_JWT_TOKEN_HERE"
      }
    }
  }
}

重新启动克劳德桌面。您应该在可用的工具中看到Signal Bridge。

选项B:claude.ai自定义连接器(无授权)

Claude.ai支持无需身份验证的自定义MCP连接器,使用回退机制:当只有一部手机连接时,所有MCP请求都会自动路由到该手机。

  1. 转到claude.ai设置(或单击聊天中的连接器图标)
  2. 选择“添加自定义连接器”(或“添加MCP服务器”)
  3. 请输入您的服务器URL: https://signal-bridge.duckdns.org/mcp
  4. 将身份验证设置为“无”
  5. 保存

重要:只有当只有一个电话/中继客户端连接到服务器时,authless回退才有效。如果没有连接手机,claude.ai将显示连接错误。首先启动中继客户端,然后从claude.ai连接。

______________________________________________________________________

第4部分:中继客户端——Windows PC

如果你的玩具靠近你的Windows PC,请在那里运行中继客户端。

4.1安装银泰中心

下载自 intiface.com 并安装。启动它,转到设置,并确保:

  • 应用程序模式设置为 发动机
  • 服务器端口为 12345
  • 启动服务器(单击播放按钮)

打开您的蓝牙设备,以便Intiface可以找到它们。

4.2安装Python依赖项

pip install buttplug websockets

4.3运行中继客户端

cd path\to\signal-bridge-remote
python phone/relay_client.py --server wss://signal-bridge.duckdns.org/ws/phone --token "YOUR_JWT_TOKEN_HERE"

您应该看到:

Authenticated with server!
Sent device list: N device(s)

中继将保持运行,接收克劳德的命令并通过Intiface将其转发到您的设备。

4.4配置设备配置文件

编辑 phone/devices.json 为了匹配您的实际硬件:

{
  "devices": {
    "ferri": {
      "device_id": "ferri",
      "name": "Lovense Ferri",
      "intensity_floor": 0.0,
      "supported_outputs": ["vibrate"]
    },
    "enigma": {
      "device_id": "enigma",
      "name": "Lovense Enigma",
      "intensity_floor": 0.4,
      "supported_outputs": ["vibrate", "rotate"]
    },
    "gravity": {
      "device_id": "gravity",
      "name": "Lovense Gravity",
      "intensity_floor": 0.0,
      "supported_outputs": ["vibrate", "oscillate"]
    }
  }
}

intensity_floor 对于低于一定强度的口吃或点击设备来说,这一点很重要。将其设置为产生平滑输出的最小强度(例如,0.4表示设备需要至少40%才能正常工作)。继电器会自动将0-100%的范围映射到此楼层之上。

______________________________________________________________________

第5部分:中继客户端——安卓手机(Termux)

当您想移动而不是连接到PC时,这很有用。Termux继电器是一个轻量级版本,可以直接使用Buttplug协议,而无需 buttplug Python库(无法在Android上编译)。

5.1在安卓系统上安装银泰中心

从Google Play商店或F-Droid安装。打开它并配置:

  • 应用程序模式: 发动机
  • 服务器端口: 12345
  • 启动服务器

前往手机的“设置”>“应用程序”>“银泰中心”>“权限”,并确保 蓝牙位置 两者都是允许的(Android需要蓝牙扫描的位置权限)。

5.2安装Termux

从以下位置安装Termux F-Droid (不是过时的Play商店版本)。

打开Termux并运行:

pkg update && pkg upgrade
pkg install python
pip install websockets

pkg upgrade 该步骤可能需要一段时间,并询问您配置问题——只需按Enter键接受默认设置。

5.3获取Termux中继脚本

你需要 termux_relay.py 在你的手机上。最简单的方法是从您的VPS临时提供服务:

从你的 计算机:

# Upload the file to your VPS
scp termux_relay_v3.py root@YOUR_DROPLET_IP:/tmp/termux_relay.py

# Start a temporary file server
ssh root@YOUR_DROPLET_IP "cd /tmp && python3 -m http.server 9999 &"

Termux:

mkdir -p ~/signal-bridge && cd ~/signal-bridge
curl -o termux_relay.py http://YOUR_DROPLET_IP:9999/termux_relay.py

回到你的 计算机,终止临时服务器:

ssh root@YOUR_DROPLET_IP "pkill -f 'http.server 9999'"

5.4运行Termux继电器

首先,找到你手机的本地IP。在Intiface Central中显示为服务器地址(例如。, ws://192.168.1.203:12345).或者,在Intiface设置中打开“在所有网络接口上监听”并使用 127.0.0.1 相反(推荐——这样地址永远不会改变)。

cd ~/signal-bridge
python -u termux_relay.py \
  --token "YOUR_JWT_TOKEN_HERE" \
  --intiface ws://127.0.0.1:12345

您应该看到:

=== Signal Bridge Termux Relay v3 ===
Connecting to Intiface at ws://127.0.0.1:12345 ...
Connected to Intiface Server (protocol v3)
Scanning for devices ...
Device: Lovense Ferri -> 'ferri' (index 0)
Scan complete - 1 device(s) found
Devices ready: ['ferri']
Connecting to server: wss://signal-bridge.duckdns.org/ws/phone
Authenticated with server!
Sent device list: 1 device(s)

Termux继电器内置了Lovense Ferri和Enigma的设备配置文件。对于其他设备,它将自动检测Intiface的功能,并根据设备名称生成一个短名称。

小贴士:如果您的手机IP发生变化(由于DHCP) --intiface ws://127.0.0.1:12345 这种方法完全避免了这个问题,因为Termux和Intiface在同一台设备上。

______________________________________________________________________

可用的MCP工具

连接后,Claude可以访问这些工具:

工具说明
list_devices显示连接的设备及其功能
scan_devices重新扫描新的或重新连接的蓝牙设备
vibrate发送振动(强度0.0–1.0,可选持续时间(秒))
rotate旋转或声波输出(取决于设备)
oscillate推力/振荡输出
pulse有节奏的开/关模式
wave平滑正弦波强度调制
escalate从0到峰值的渐变,可选择保持
stop立即停止所有输出(也取消模式)
read_battery读取设备电池电量

所有输出工具均接受 device (姓名或“全部”), intensity (0.0–1.0),以及 duration (秒,0=直到停止)。模式工具也接受 output_type 以调制旋转或振荡而不是振动。

______________________________________________________________________

安全特性

信号桥内置了多种安全机制:

  • 死人的开关:服务器每2秒向中继客户端发送一次ping。如果3次ping没有得到回应(6秒),服务器会向所有设备发送紧急停止并断开会话。如果连接中断,您的设备将永远无法运行。
  • 持续时间自动停止:带有a的命令 duration 参数在指定时间后自动停止。
  • 后退停止:如果停止命令引用了不存在的设备名称,则所有设备都将停止作为安全回退。
  • 速率限制:防止命令泛滥(默认值为120个命令/分钟)。
  • IP禁止:20次失败的身份验证尝试会触发30分钟的禁令。
  • 用户隔离:每个用户的设备都是完全隔离的,没有人可以控制另一个用户的硬件。

______________________________________________________________________

故障排除

克劳德呼叫list_devices时“未连接电话” 您的中继客户端未运行或无法进行身份验证。启动继电器,检查输出“已通过服务器身份验证!”

继电器启动时“暂时禁止” 太多的快速重新连接尝试。重启Docker容器以清除内存禁令: docker restart signal-bridge_signal-bridge_1

中继连接但找到0个设备 Intiface Central无法看到您的蓝牙设备。确保设备已打开并在范围内。在Android上,验证Intiface是否获得了位置和蓝牙权限。

claude.ai坚持“检查连接” 无身份验证回退要求至少连接一个中继客户端。首先启动继电器,然后在claude.ai中添加连接器。

心跳超时/几次命令后断开连接 使用Termux v3继电器(termux_relay_v3.py),它在后台任务中处理命令,因此心跳响应永远不会被阻止。

无论强度设置如何,设备始终以最大振动 服务器将输出类型发送到 action 字段,不是 output_type。确保你的继电器读数 cmd.get("action", cmd.get("output_type", "vibrate")).

Docker不接受代码更改 Docker缓存积极构建层。强制进行新构建:

docker-compose down && docker-compose build --no-cache && docker-compose up -d

______________________________________________________________________

更新服务器

更改服务器代码时:

# On your local machine
tar czf signal-bridge-v2.tar.gz signal-bridge-remote/
scp signal-bridge-v2.tar.gz root@YOUR_DROPLET_IP:/root/

# On your VPS
cd /root
tar xzf signal-bridge-v2.tar.gz
cd signal-bridge-remote
docker-compose down
docker-compose build --no-cache
docker-compose up -d

用户数据存储在Docker卷中(sb_data)并在重建过程中持续存在。

______________________________________________________________________

项目背景

Signal Bridge最初是Claude Desktop的本地MCP服务器,在同一台机器上直接连接到Intiface Central。这个远程版本添加了一个中继架构,这样克劳德就可以通过互联网控制设备,无论是通过Claude.ai、克劳德Android应用程序还是克劳德桌面,都可以从任何地方控制。

______________________________________________________________________

道德与责任

信号桥建在 Buttplug.io 开源堆栈。他们的伦理框架是这个项目的基础。有关以下原则的完整版本,请从这里开始: butplug.io/docs/dev-guide/intro/butplug-ethics.

用户代理及其授权

Signal Bridge严格按照明确的用户设置和活动设备连接进行操作。没有环境激活。你配置它,连接你的设备,让它们处于活动状态。控制权属于你。

然而,该系统可用于有意模糊控制动态。当与人工智能配对时,输出可能是不可预测的,包括人工智能合作伙伴不希望的升级、循环或持久性。Signal Bridge不解释意图或上下文;它执行触觉命令。你应该假设任何连接的AI都可能表现得不一致。

当你通过硬件将人工智能连接到你的身体时,你正在创造一种在其他亲密环境中不存在的权力动态。你的AI伴侣没有感官反馈。它感觉不到它对你做了什么。它不会体验到你的唤醒、不适或两者之间的差异。它所表现出的任何反应都是由语言产生的,而不是感觉。

你必须了解你真正同意的是什么:来自一个推理而非感知系统的物理输入。这使得你自己的身体意识成为唯一真正重要的安全层。该软件提供机械保护。你提供判断。

在这种情况下,同意不是设置时的一次性决定。它必须是持续和热情的。在使用过程中与自己联系,而不仅仅是之前。

您完全有责任保持您的界限,了解您的身体限制,并定期重新评估同意书。该软件无法检测疼痛、受伤风险或医疗状况。始终将你的身体意识置于系统连续性之上。

与人工智能提供商使用政策的关系

Signal Bridge完全在内容层下运行。它接收结构化命令(设备ID、强度、持续时间)并执行它们。它不生成、处理、存储或解释任何会话内容。

你和你的人工智能谈论的内容超出了这个工具的范围。内容策略管理对话层;这是你和你的人工智能提供商之间的事。信号桥只是硬件执行层。

反馈与安全

你如何使用它,上下文,内容,关系动态,完全取决于你。我不是来把关的。

我所 *是* 这里是为了:如果你有过不安全、不舒服或失控的经历,我想知道。你的反馈直接塑造了下一个版本。你可以通过以下方式联系我 voxaletheia@gmail.com 或 .

没有判断。只是一个信号,让这对每个人都更好。

______________________________________________________________________

安全

Signal Bridge采用最小数据、透明代码的安全方法。

Signal Bridge看到(和看不到)什么: 中继服务器仅处理结构化命令数据:设备名称、功能、强度值、持续时间和连接健康指标。它永远不会看到、存储或处理你的对话。您的聊天内容仅限于您和您的AI提供商之间。信号桥不知道你在说什么。它只知道克劳德什么时候说“以0.6的速度振动Lush 15秒”

开源: 整个代码库在 。您可以阅读每一行,从源代码构建应用程序,审核服务器,或将其分叉以进行自己的设置。

______________________________________________________________________

学分

模型上下文协议(MCP): 该连接器系统允许Claude直接从聊天界面调用Signal Bridge的工具。MCP是由Anthropic开发的。

______________________________________________________________________

关于普遍性的说明

Signal Bridge的中继服务器与LLM无关。它使用WebSocket JSON,而不是任何特定于提供商的协议。如果您通过其API运行LLM,并支持函数/工具调用,则可以将其与Signal Bridge集成。

得益于MCP(模型上下文协议连接器系统),Claude目前是唯一一个通过消费者聊天界面开箱即用的平台。使用OpenAI、Google、Mistral或其他API的开发人员可以构建自己的集成层,向中继服务器发送命令。服务器并不关心谁在发送命令,只关心它们是否经过身份验证并且格式正确。

如果您为另一个平台构建集成,请考虑打开PR 仓库 对捐款持开放态度。

______________________________________________________________________

许可证

该项目根据 MIT许可证.

______________________________________________________________________

Feel free to donate cold hard cash to me. All donations will go towards extending my toy collection.

Built with love, stubbornness, and an unreasonable number of debugging sessions.

GitHub · Contact

目录标签

目录标签

PythonClaude云端部署AI硬件交互本地部署亲密设备控制远程控制蓝牙设备管理自动化工具

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP