Lifesign
Lifesign — Сервер телеметрии статуса пользователя и здоровья
Легковесный HTTP-сервис: принимает статус устройства + данные о здоровье, отправленные с мобильного телефона, и предоставляет их AI-агентам через MCP (Model Context Protocol). Один процесс, один порт.
✨ Особенности
📱 Отправка с телефона: iOS Shortcuts отправляют снимки заряда батареи, местоположения, сети и здоровья через
POST /ingest🤖 MCP-шлюз: тот же процесс монтирует
/mcp, AI-агенты (Hermes и др.) читают напрямую🏗️ Один порт, один процесс: загрузка + запрос + MCP — всё на порту 8764, без дополнительных HTTP-переходов
🐳 Готов к 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: прямое подключение через loopback к
8764/mcp(без публичной сети)Общая память: инструменты MCP читают
app.storeнапрямую, без сериализации/дополнительных запросов
🔌 Конечные точки
Метод | Путь | Аутентификация | Описание |
|
| Bearer ключ телефона | Отправка последнего статуса с телефона |
|
| Bearer ключ агента | Возвращает полный снимок |
|
| Нет | Проверка здоровья (для Docker HEALTHCHECK) |
|
| Нет (локальный loopback) | Конечная точка MCP streamable-http |
🔑 Идентификация и конфигурация
Всего два общих ключа для идентификации (идентификаторы, не авторизация на уровне полей), оба могут быть переопределены переменными окружения:
Назначение | Переменная окружения | Значение по умолчанию (только для разработки) | Конечная точка |
ключ телефона |
|
|
|
ключ агента |
|
|
|
порт прослушивания |
|
| — (используется 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 (рекомендуется)
В 1Panel → Контейнеры → Оркестрация создайте новую оркестрацию и вставьте
docker-compose.yml;Образ автоматически собирается GitHub Actions и отправляется в GHCR, при развёртывании просто загружается;
Нужно открыть только один порт
8764, остальное обрабатывается обратным прокси.
Отправка данных с телефона
# 经公网反代(手机端快捷指令用这个)
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:
Триггеры: push в
main/ ручнойworkflow_dispatch/ создание тегаАртефакты: двойные теги
ghcr.io/<owner>/lifesign:latestи:<git-sha>Платформы:
linux/amd64,linux/arm64Примечание: образ приватный (приватный репозиторий → приватный пакет GHCR), при развёртывании в 1Panel необходимо добавить учётные данные GHCR в конфигурацию Docker (имя пользователя
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
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for OnceAsk, the AI-native current-address layer for people and agents.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA 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-
- AlicenseNot gradedqualityAmaintenanceTurn 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.5Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to control Android phones via MCP and HTTP. Supports screen capture, taps, swipes, text input, and app management.6AGPL 3.0
- AlicenseAqualityDmaintenanceAn MCP server that locally authenticates with Google Health API v4 and provides read-only access to Fitbit, Pixel Watch, and other health data for AI agents.29164 npm16MIT