Signal消息桥接服务

通过signal-cli-rest-api将Claude Code与Signal Messenger连接,实现实时消息传递和交互的服务。

  • by Matthew-IDKA
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Matthew-IDKA/signal-mcp

使用说明

信号mcp

桥接的MCP服务器 克劳德代码 到 信号 Messenger 通过 信号cli-rest api.

作为一个 克劳德代码频道 --它通过WebSocket轮询入站Signal消息,并将其作为通道通知传递,因此Claude Code可以实时读取和响应Signal对话。

先决条件

  • Python 3.11+
  • 跑步 信号cli-rest api 实例(json-rpc模式)
  • 链接到Signal-cli-rest-api的已注册Signal bot编号

安装

# Clone and install
git clone https://github.com/Matthew-IDKA/signal-mcp.git
cd signal-mcp
pip install .

# Or install in development mode
pip install -e ".[dev]"

配置

所有配置都是通过环境变量进行的。

必需

变量 描述
SIGNAL_API_URL 您的signal-cli-rest-api实例的基本URL(例如。, http://localhost:8093)
SIGNAL_BOT_NUMBER 用信号cli注册的电话号码(例如。, +15551234567)
SIGNAL_CHANNEL_TYPE dm 用于直接消息或 group 进行群聊
SIGNAL_CHANNEL_ID 收件人电话号码(用于 dm)或组ID(用于 group)

可选的

变量 默认值 描述
SIGNAL_ALLOWED_SENDERS (空--所有发件人) 逗号分隔的电话号码。只有来自这些发件人的消息才会转发给Claude Code。建议用于安全。
SIGNAL_APPROVAL_SENDERS (空-禁用) 逗号分隔的电话号码,授权通过Signal批准/拒绝工具权限请求。
SIGNAL_POLL_INTERVAL 2 WebSocket重新连接尝试之间的秒数(在回退期间使用)。

Claude代码集成

使用克劳德代码注册服务器:

claude mcp add signal-mcp \
  -e SIGNAL_API_URL=http://localhost:8093 \
  -e SIGNAL_BOT_NUMBER=+15551234567 \
  -e SIGNAL_CHANNEL_TYPE=dm \
  -e SIGNAL_CHANNEL_ID=+15559876543 \
  -e SIGNAL_ALLOWED_SENDERS=+15559876543 \
  -- signal-mcp

或者使用MCP配置文件(请参阅 mcp-config.example.json).

工具

工具 说明
reply 向当前信号频道发送短信
fetch_messages 通道连接的诊断检查(消息通过WebSocket自动到达)
send_attachment 向通道发送一个文件(最大95 MB)
download_attachment 将收到的附件下载到本地磁盘
react 使用表情符号回复消息
send_typing 显示或隐藏打字指示器
list_groups 列出机器人所属的信号组
get_contacts 列出机器人Signal帐户已知的联系人

运作原理

Signal app  -->  signal-cli-rest-api  --WebSocket-->  signal-mcp  --Channel notification-->  Claude Code
Claude Code  --tool call-->  signal-mcp  --HTTP POST-->  signal-cli-rest-api  -->  Signal app

与典型的请求/响应MCP服务器不同,signal MCP运行一个 持久WebSocket侦听器 除了MCP stdio传输之外。入站信号消息通过WebSocket到达,通过发送方分配列表进行过滤,并作为 notifications/claude/channel Claude Code内联呈现的事件。

通过MCP工具调用的出站通信流(reply, react等等),信号mcp将其转换为信号cli-rest-api HTTP请求。

权限中继

当 SIGNAL_APPROVAL_SENDERS 配置后,Claude Code工具权限提示将转发给Signal。已批准的发件人可以回复 y <id> 或 n <id> 允许或拒绝远程执行工具。

运行测试

pip install -e ".[dev]"
pytest

许可证

麻省理工学院——见 许可证.