iMessage云转发服务

通过iOS快捷指令将iMessage转发至Cloudflare Worker+D1数据库,并提供MCP服务器供AI访问的消息中转服务。

  • by ShunL12324
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 ShunL12324/imsg-mcp

使用说明

imsg mcp

通过iOS快捷方式将iMessage转发到Cloudflare Worker+D1数据库,并使用MCP服务器进行AI访问。

建筑

iPhone (incoming message)
  └── iOS Shortcut automation
        └── POST /messages  ──►  Cloudflare Worker
                                        └── D1 Database
                                              └── GET /messages
  • iOS快捷方式 --在每条传入消息上触发,向worker发送发送者+文本
  • 工人 --Cloudflare Worker(TypeScript)使用Bearer令牌进行身份验证,存储具有服务器端时间戳的消息
  • 数据库 --Cloudflare D1(SQLite),可按发件人或时间戳查询

需求

  • 运行iOS 17的iPhone+
  • Cloudflare帐户(免费层就足够了)
  • 包子 ≥ 1.0

设置

git clone https://github.com/ShunL12324/imsg-mcp.git
cd imsg-forwarder
bun install

配置

cp config.example.yaml config.yaml

编辑 config.yaml:

cloudflare:
  account_id: ""       # Cloudflare account ID (dash.cloudflare.com → right sidebar)
  api_token: ""        # API token with Workers:Edit + D1:Edit permissions
  worker_name: "imsg-forwarder"
  db_name: "imsg-forwarder"

api_token: ""          # Shared secret for Shortcut → worker auth (openssl rand -hex 32)

配置位置: config.yaml 在repo根目录中(旁边 package.json).

Cloudflare API代币

在以下位置创建令牌 dash.cloudflare.com/profile/api-tokes 与:

权限 级别
Workers脚本--编辑 帐户
D1--编辑 帐户

CLI使用情况

部署

配置Cloudflare Worker和D1数据库。

bun run deploy

诊断

检查配置完整性、Cloudflare令牌有效性、Workers/D1权限和worker可达性。

bun run doctor

解除部署

删除Cloudflare Worker和D1数据库。

bun run undeploy

iOS快捷方式设置

1.启用所需权限

在创建自动化之前,请在iPhone上启用以下功能:

  • 设置→ 捷径→ 允许访问邮件 → On
  • 设置→ 捷径→ 允许通知 → On
  • 设置→ 将军→ 后台应用刷新 → On

2.创建自动化

  1. 打开 捷径 app → tap 自动化 (底部选项卡)
  2. 轻按 + → 新自动化 → 滚动至 消息 在通信
  3. 发送者 --留空(任何发件人)
  4. 消息包含 --键入单个空格 " " (iOS要求启用“立即运行”)
  5. 切换 立即运行 → 打开(点击“不问”进行确认)
  6. 轻按 下一步

3.添加操作

按顺序添加以下操作:

动作1--将消息发送给您的员工

  • 添加 获取URL内容
  • 网址: https://<your-worker>.workers.dev/messages
  • 方法: POST
  • 标题:添加一个标题
    • 密钥: Authorization
    • 价值: Bearer <your-api-token>
  • 请求正文: JSON
    • 添加三个字段:
      键 值
      text 快捷方式输入→ 内容
      sender 快捷方式输入→ 发送者
      chat_identifier 快捷方式输入→ 发送者

动作2——解析响应

  • 添加 从输入中获取词典

    • 输入:URL操作的结果
  • 添加 获取字典值

    • 密钥: ok
    • 字典:先前操作的结果

动作3--显示结果

  • 添加 如果
    • 条件:字典值 is true
    • 添加 显示通知 内部If块:
      • 标题: ✓ Message forwarded
    • 添加 否则 块:
    • 添加 显示通知 内部否则块:
      • 标题: ✗ Forward failed
      • 正文:URL内容(原始错误响应)

4.保存并测试

轻按 完成。从另一台设备给自己发送一条消息——你应该看到一个“✓消息转发”的通知,消息会出现在你的D1数据库中。

通过以下方式进行验证:

curl -H "Authorization: Bearer <api_token>" \
  https://<worker>.workers.dev/messages

MCP设置

imsg-mcp公开了一个mcp服务器 /mcp 用于Claude Code或任何MCP兼容客户端。

复制示例并填写您的值:

cp .mcp.json.example .mcp.json

.mcp.json:

{
  "mcpServers": {
    "imsg-mcp": {
      "type": "http",
      "url": "https://<your-worker>.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>"
      }
    }
  }
}

.mcp.json 是gitignored-它包含您的凭据。

可用工具

工具 说明
get_messages(count?) 获取最新的iMessages(默认1条,最多50条)

查询消息

# Fetch latest 50 messages
curl -H "Authorization: Bearer <api_token>" \
  https://<worker>.workers.dev/messages

# Filter by sender
curl -H "Authorization: Bearer <api_token>" \
  "https://<worker>.workers.dev/messages?sender=%2B15555550123"

# Paginate (before Unix timestamp)
curl -H "Authorization: Bearer <api_token>" \
  "https://<worker>.workers.dev/messages?before=1700000000&limit=100"

响应架构

{
  "messages": [
    {
      "id": 1,
      "text": "Hello",
      "sender": "+15555550123",
      "chat_identifier": "+15555550123",
      "received_at": 1700000000
    }
  ]
}

数据库模式

CREATE TABLE messages (
  id              INTEGER PRIMARY KEY AUTOINCREMENT,
  text            TEXT,
  sender          TEXT,
  chat_identifier TEXT,
  received_at     INTEGER NOT NULL DEFAULT (unixepoch())
);

许可证

麻省理工学院