打开消息
OpenMessage是Google Messages、WhatsApp和Signal的本地第一消息工作区。从本地macOS应用程序、localhost web UI或任何兼容MCP的客户端使用它。
它的作用
- Mac版谷歌消息 --配对您的Android手机,在本地阅读/发送短信+RCS
- 实时WhatsApp支持 --将WhatsApp链接为您机器上的实时伴侣设备
- 实时信号支持 --在本地链接Signal,并将其线程保存在同一收件箱中
- 一个本地收件箱 --搜索、路由感知线程、媒体、反应、草稿和分组联系人
- macOS应用程序+web UI --带有通知和联系人照片的原生包装器,以及本地主机UI
- MCP就绪 --将同一本地收件箱暴露给Claude Code和其他MCP客户端
快速开始
先决条件
- 转到1.22+ (安装)
- 谷歌消息 在您的Android手机上
1.克隆和构建
git clone https://github.com/MaxGhenis/openmessage.git
cd openmessage
go build -o openmessage .2.与手机配对
./openmessage pair默认情况下,您的终端中会显示一个二维码。在你的手机上,打开 谷歌信息>设置>设备配对>设备配对 并扫描它。会话保存到 ~/.local/share/openmessage/session.json.
如果Google只提供帐户配对,您还可以与从浏览器devtools复制的Google帐户Cookie配对:
pbpaste | ./openmessage pair --googleCLI接受JSON cookie对象或完整 curl 命令用于 messages.google.com/web/config,然后提示您在手机上确认表情符号。
3.启动服务器
./openmessage serve这从两个方面开始:
- Web用户界面 在 http://127.0.0.1:7007
- MCP SSE端点 在
http://127.0.0.1:7007/mcp/sse
当 serve 由MCP客户端通过管道启动,它还自动为stdio上的MCP提供服务。
3a。可选:链接WhatsApp或Signal
之后 serve 正在运行时,打开本地UI并从连接界面链接WhatsApp或Signal。OpenMessage将这些网桥保持在本地,并将它们同步到与Google Messages相同的收件箱中。
3b。屏幕截图和录制的安全演示模式
./openmessage demo或者:
./openmessage serve --demo演示模式在正常端口上启动相同的本地UI,但:
- 使用新的临时数据目录,而不是您的真实消息存储
- 为截图和演示种子虚假短信和WhatsApp对话
- 禁用实时谷歌消息、WhatsApp和本地桌面导入同步
这是捕获网站截图、App Store资产或演示录制的最安全方法,而不会泄露真实信息。
4.连接到克劳德代码
添加 ~/.mcp.json:
{
"mcpServers": {
"openmessage": {
"command": "/path/to/openmessage",
"args": ["serve"]
}
}
}重新启动克劳德代码。MCP工具会自动出现。
特性
- 读取消息 --完整的对话历史、搜索、媒体、回复、反应
- 发送消息 --SMS/RCS加上实时WhatsApp和Signal文本、媒体和反应
- 实时WhatsApp同步 --将本地WhatsApp配套设备与入站消息、键入指示器、读取状态和媒体配对
- 实时信号同步 --将本地信号链接设备与入站消息、媒体、反应和组线程配对
- 对消息作出反应 -表情符号对任何信息的反应
- 图像/媒体显示 --内联图像、视频、音频和全屏查看器
- 桌面提醒 --新入站消息的macOS原生通知
- Web UI+macOS应用程序 --localhost:7007上的实时对话视图和本机包装器
- MCP工具 --对话查找、路由感知文本/媒体/反应发送、媒体下载、导入助手和故事/可视化工具
- 本地存储 --SQLite数据库,您的数据保留在您的机器上
MCP工具
| 工具 | 说明 |
|---|---|
get_messages | 最近使用过滤器的消息(电话、日期范围、限制) |
get_conversation | 特定对话中的消息 |
search_messages | 在所有邮件中进行全文搜索 |
send_message | 按平台发送直接文本。默认为SMS/RCS,也支持直接WhatsApp/Signal收件人 |
send_to_conversation | 直接向现有对话ID发送文本回复 |
send_media_to_conversation | 将本地文件附件发送到现有对话ID |
react_to_message | 添加、删除或切换对现有消息的反应 |
list_conversations | 列出最近的对话 |
list_contacts | 列出/搜索联系人 |
get_status | 谷歌消息、WhatsApp和Signal连接状态 |
download_media | 将邮件附件下载到本地临时文件 |
draft_message | 保存草稿供本地应用程序稍后查看/发送 |
import_messages | 导入谷歌聊天、iMessage、WhatsApp导出或Signal Desktop历史记录 |
MCP示例
- 列出最近的Signal线程:
list_conversations(source_platform="signal") - 在WhatsApp中搜索关键字:
search_messages(query="airbnb") - 发送直接信号消息:
send_message(platform="signal", recipient="+15551230000", message="On my way") - 将文本发送到路由感知线程:
send_to_conversation(conversation_id="whatsapp:15551234567@s.whatsapp.net", message="On my way") - 从磁盘发送照片:
send_media_to_conversation(conversation_id="signal-group:abc123", file_path="/tmp/photo.jpg", caption="Here") - 对消息作出反应:
react_to_message(conversation_id="signal-group:abc123", message_id="signal:...", emoji="🔥") - 导入信号桌面历史记录:
import_messages(source="signal", path="$HOME/Library/Application Support/Signal", name="Your Name", address="+15551230000")
Web用户界面
web UI运行在 http://localhost:7007 当服务器启动时。它提供:
- 带有搜索和分组多路线联系人的对话列表
- 带有图像、视频、音频、反应和回复线程的消息视图
- 路由感知撰写和发送
- 谷歌消息+WhatsApp+信号连接控制
- 实时打字指示器、读取状态呈现和通知
原生macOS应用程序
该仓库还包括一个围绕同一本地后端的原生Swift包装器:
- 嵌入式本地OpenMessage后端
- 本地通知
- 联系人照片
- 与web UI相同的Google Messages、WhatsApp和Signal配对/运行时模型
macOS应用程序目标位于 OpenMessage/.
配置
| 环境变量 | 默认值 | 目的 |
|---|---|---|
OPENMESSAGES_DATA_DIR | ~/.local/share/openmessage | 数据目录(DB+会话) |
OPENMESSAGES_LOG_LEVEL | info | 日志级别(调试/信息/警告/错误/跟踪) |
OPENMESSAGES_PORT | 7007 | Web UI端口 |
OPENMESSAGES_HOST | 127.0.0.1 | 将本地web服务器绑定到的主机/接口 |
OPENMESSAGES_MY_NAME | 系统用户名 | 传出导入iMessage/WhatsApp消息的显示名称 |
OPENMESSAGES_STARTUP_BACKFILL | auto | 启动历史同步模式: auto, shallow, deep,或 off |
OPENMESSAGES_MACOS_NOTIFICATIONS | 交互式macOS serve 仅限会话 | 启用/禁用新入站实时消息的本机macOS通知(1/0).点击打开匹配的线程 terminal-notifier 可用。 |
OPENMESSAGE_TELEMETRY | unset(关闭) | 设置为 1 每次启动发送一个匿名心跳(每24小时最多发送一个)。仅报告:随机安装ID、版本、OS/arch以及配对的平台(Google Messages/WhatsApp/Signal)。没有消息内容,没有联系信息,没有基于IP的身份。看 internal/telemetry/. |
建筑
- libgm 处理谷歌消息协议(配对、加密、长轮询)
- 怎么回事 通过单独的本地会话存储处理实时WhatsApp配对、同步、文本/媒体发送、收据、打字和化身
- 信号cli 为本地信号链接设备桥、消息同步、媒体和反应供电
- SQLite (WAL模式,纯Go)在本地存储消息、对话和联系人
- 来自手机的实时事件在到达时写入SQLite
- 本地macOS应用程序和本地主机web UI在相同的本地后端上运行
- 当实时网桥未处于活动状态时,WhatsApp桌面导入仍将作为回退/修复路径
- Signal Desktop历史记录可以导入到同一本地存储中,用于回填和维修工作流程
- 在第一次运行时,深层回填在后台获取完整的SMS/RCS历史记录;默认情况下,后续运行会执行较轻的增量同步
- 从SQLite读取的MCP工具处理程序,用于通过同一本地运行时进行查询和路由发送
- 身份验证令牌自动刷新并持久化
session.json
发展
go test ./... # Run all tests
go build . # Build binary
npm install # Install Playwright test runner
npx playwright install chromium
npm run test:e2e # Run browser-level web UI tests
./openmessage pair # Pair with phone
./openmessage serve # Start server
./openmessage demo # Start isolated fake-data demo mode在发布构建或网站更新之前,请先运行 发布清单.
许可证
麻省理工学院
