Skip to main content
Glama

Lifesign — ユーザーステータス & ヘルステレメトリー サーバー

軽量 HTTP サービス:スマートフォンから報告されたデバイス状態 + 健康データを受信し、 MCP(Model Context Protocol) を介して AI Agent に公開します。シングルプロセス、シングルポート。

✨ 特徴

  • 📱 スマートフォン報告:iOS ショートカット POST /ingest でバッテリー/位置/ネットワーク/健康スナップショットをプッシュ

  • 🤖 MCP ゲートウェイ:同一プロセスに /mcp をマウントし、Hermes などの AI Agent が直接読み取り

  • 🏗️ シングルポート・シングルプロセス:アップロード + クエリ + MCP すべて 8764 を再利用、二次 HTTP hop なし

  • 🐳 Docker 対応:GitHub Actions で自動ビルド、1Panel でワンクリック Compose デプロイ

Related MCP server: Rouse Context

🏗️ アーキテクチャ

手机 (iOS 快捷指令)
   │ POST https://<your-domain>/user-status/ingest   ← 仅上传经反代
   ▼
1Panel OpenResty (反向代理)
   │ proxy_pass → <host-ip>:8764/ingest
   ▼
┌──────────────────────────────┐
│ FastAPI + FastMCP 同一进程    │
│  (单端口 8764)               │
│                              │
│  POST /ingest   手机上传      │
│  GET  /query_all  agent读取  │
│  /mcp  MCP 网关 (同进程)      │
└──────┬───────────────────────┘
       │ 本机回环 http://127.0.0.1:8764/mcp
       ▼
   Hermes Agent (AI)
  • スマートフォンアップロード:パブリック HTTPS(リバースプロキシ経由)→ 8764/ingest

  • AI 読み取り:ローカルループバックで直接 8764/mcp に接続(パブリックネットワーク非経由)

  • 共有メモリ:MCP ツールは直接 app.store を読み取り、シリアル化/二次リクエスト不要

🔌 エンドポイント

メソッド

パス

認証

説明

POST

/ingest

Bearer スマホ key

スマートフォンが最新ステータスを報告

GET

/query_all

Bearer agent key

完全なスナップショットを返す

GET

/health

なし

ヘルスチェック(Docker HEALTHCHECK 用)

POST

/mcp

なし(ローカルループバック)

MCP streamable-http エンドポイント

🔑 認証と設定

識別用の共有鍵は2つだけ(識別子、フィールドレベルの認可ではない)。いずれも環境変数で上書き可能:

用途

環境変数

デフォルト値(開発用のみ)

エンドポイント

スマホ key

USER_STATUS_PHONE_KEY

phone-secret-key-001

POST /ingest

agent key

USER_STATUS_AGENT_KEY

agent-read-secret-key-001

GET /query_all

リスニングポート

USER_STATUS_PORT

8764

—(run.sh で使用)

⚠️ 本番環境では環境変数でデフォルト鍵を必ず上書きしてください。リポジトリ内のデフォルト値は使用しないでください。

🚀 クイックスタート

ローカル実行

python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
./run.sh start      # 后台启动 :8764
./run.sh status
./run.sh stop

Docker 実行

# 本地构建
docker build -t lifesign:local .
docker run -d --name lifesign -p 8764:8764 \
  -e USER_STATUS_PHONE_KEY='<phone-key>' \
  -e USER_STATUS_AGENT_KEY='<agent-key>' \
  lifesign:local

1Panel Compose デプロイ(推奨)

  1. 1Panel → コンテナ → オーケストレーション で新しいオーケストレーションを作成し、docker-compose.yml を貼り付け;

  2. イメージは GitHub Actions で自動ビルドされ GHCR にプッシュ、デプロイ時に直接プル;

  3. ポート 8764 1つだけ開放し、残りはリバースプロキシで処理。

スマートフォンからのデータ送信

# 经公网反代(手机端快捷指令用这个)
curl -s -X POST https://<your-domain>/user-status/ingest \
  -H "Authorization: Bearer <phone-key>" \
  -H "Content-Type: application/json" \
  -d '{"deviceStage":{"battery":{"percentage":87,"is_charging":true}}}'

# 或内网直连
curl -s -X POST http://<host-ip>:8764/ingest \
  -H "Authorization: Bearer <phone-key>" \
  -H "Content-Type: application/json" \
  -d '{"deviceStage":{"battery":{"percentage":87,"is_charging":true}}}'

Hermes MCP 設定(config.yaml)

mcp_servers:
  user-status:
    type: streamable-http
    url: http://127.0.0.1:8764/mcp   # 本机回环,不走公网
    connect_timeout: 10
    timeout: 30

確認:hermes mcp test user-status;Hermes 再起動後、ツールは mcp_user_status_* として登録されます。

🐳 Docker イメージビルド(GitHub Actions)

リポジトリに .github/workflows/docker-build.yml を内蔵:

  • トリガー:main への push / 手動 workflow_dispatch / tag プッシュ

  • 成果物:ghcr.io/<owner>/lifesign:latest と :<git-sha> のダブルタグ

  • プラットフォーム:linux/amd64、linux/arm64

  • 説明:イメージはプライベート(リポジトリ private → GHCR パッケージ private)、1Panel デプロイ時は Docker 設定に GHCR ログイン認証情報(ghcr.io ユーザー名 + PAT)を追加する必要があります。

✅ テスト

. .venv/bin/activate
python -m pytest tests/ -v

🗂️ プロジェクト構成

lifesign/
├── app/
│   ├── main.py            # FastAPI 入口(挂载 MCP 网关)
│   ├── mcp_server.py      # FastMCP 工具定义(get_status/get_battery/...)
│   ├── store.py           # 线程安全内存存储
│   ├── models/status.py   # Pydantic 数据模型
│   └── routers/           # /ingest 与 /query_all 路由
├── config/clients.example.yaml   # 身份配置模板(真实文件勿提交)
├── panel_api.py           # 1Panel API 签名请求辅助脚本
├── docker-compose.yml     # 1Panel Compose 部署编排
├── Dockerfile
├── run.sh                 # 本机后台启停
└── tests/

📜 ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A real-time system diagnostics MCP server that gives AI agents live access to CPU, RAM, disk, network, processes, and hardware health metrics, with zero cloud dependency.
    7
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Turn your Android phone into an MCP server. AI assistants connect on demand, query your health data, notifications, app usage, and take actions on your device — all end-to-end encrypted, no cloud sync.
    5
    Apache 2.0